@toolbox-web/grid-angular 1.6.0 → 1.7.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 (32) hide show
  1. package/README.md +12 -10
  2. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs +26 -1
  3. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs.map +1 -1
  4. package/fesm2022/toolbox-web-grid-angular-features-grouping-columns.mjs.map +1 -1
  5. package/fesm2022/toolbox-web-grid-angular-features-grouping-rows.mjs.map +1 -1
  6. package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs +33 -1
  7. package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs.map +1 -1
  8. package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs +51 -10
  9. package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs.map +1 -1
  10. package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs +8 -0
  11. package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs.map +1 -1
  12. package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs +30 -1
  13. package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs.map +1 -1
  14. package/fesm2022/toolbox-web-grid-angular.mjs +324 -4
  15. package/fesm2022/toolbox-web-grid-angular.mjs.map +1 -1
  16. package/package.json +1 -1
  17. package/types/toolbox-web-grid-angular-features-filtering.d.ts +22 -3
  18. package/types/toolbox-web-grid-angular-features-filtering.d.ts.map +1 -1
  19. package/types/toolbox-web-grid-angular-features-grouping-columns.d.ts +29 -2
  20. package/types/toolbox-web-grid-angular-features-grouping-columns.d.ts.map +1 -1
  21. package/types/toolbox-web-grid-angular-features-grouping-rows.d.ts +17 -2
  22. package/types/toolbox-web-grid-angular-features-grouping-rows.d.ts.map +1 -1
  23. package/types/toolbox-web-grid-angular-features-master-detail.d.ts +22 -2
  24. package/types/toolbox-web-grid-angular-features-master-detail.d.ts.map +1 -1
  25. package/types/toolbox-web-grid-angular-features-pinned-rows.d.ts +71 -2
  26. package/types/toolbox-web-grid-angular-features-pinned-rows.d.ts.map +1 -1
  27. package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts +4 -0
  28. package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts.map +1 -1
  29. package/types/toolbox-web-grid-angular-features-responsive.d.ts +22 -2
  30. package/types/toolbox-web-grid-angular-features-responsive.d.ts.map +1 -1
  31. package/types/toolbox-web-grid-angular.d.ts +154 -7
  32. package/types/toolbox-web-grid-angular.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolbox-web/grid-angular",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Angular adapter for @toolbox-web/grid data grid component",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -1,9 +1,28 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, OnDestroy, Signal } from '@angular/core';
3
- import { FilterConfig, FilterChangeDetail, FilterModel, BlankMode } from '@toolbox-web/grid/plugins/filtering';
2
+ import { OnInit, OnDestroy, Type, Signal } from '@angular/core';
3
+ import { FilterConfig as FilterConfig$1, FilterChangeDetail, FilterModel, BlankMode } from '@toolbox-web/grid/plugins/filtering';
4
4
  export { _Augmentation as _FilteringAugmentation } from '@toolbox-web/grid/features/filtering';
5
+ import { FilterPanel } from '@toolbox-web/grid-angular';
5
6
  export { BaseFilterPanel } from '@toolbox-web/grid-angular';
6
7
 
8
+ /**
9
+ * Angular-specific filter config that allows an Angular component class as
10
+ * the plugin-level `filterPanelRenderer`.
11
+ *
12
+ * Extends the core `FilterConfig` to accept a `Type<FilterPanel>` for
13
+ * `filterPanelRenderer` in addition to the vanilla
14
+ * `(container, params) => void` signature. Bridging to vanilla DOM is handled
15
+ * by the side-effect import `@toolbox-web/grid-angular/features/filtering`.
16
+ *
17
+ * Re-exported from the feature entry under the same name as the core type
18
+ * so Angular consumers see a single canonical `FilterConfig` from
19
+ * `@toolbox-web/grid-angular/features/filtering`.
20
+ *
21
+ * @since 1.7.1
22
+ */
23
+ type FilterConfig<TRow = any> = Omit<FilterConfig$1<TRow>, 'filterPanelRenderer'> & {
24
+ filterPanelRenderer?: FilterConfig$1<TRow>['filterPanelRenderer'] | Type<FilterPanel>;
25
+ };
7
26
  /**
8
27
  * Owns the `[filtering]` input and `(filterChange)` output on `<tbw-grid>`.
9
28
  *
@@ -207,5 +226,5 @@ interface FilteringMethods {
207
226
  declare function injectGridFiltering(selector?: string): FilteringMethods;
208
227
 
209
228
  export { GridFilteringDirective, injectGridFiltering };
210
- export type { FilteringMethods };
229
+ export type { FilterConfig, FilteringMethods };
211
230
  //# sourceMappingURL=toolbox-web-grid-angular-features-filtering.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-filtering.d.ts","sources":["../../../../libs/grid-angular/features/filtering/src/grid-filtering.directive.ts","../../../../libs/grid-angular/features/filtering/src/index.ts"],"mappings":";;;;;;AAiDA;;;;;;;AAOG;AACH,cAIa,sBAAuB,YAAW,MAAM,EAAE,SAAS;AAC9D;AAEA;;;;;;;;;AASG;wBAEe,aAAA,CAAA,WAAA,WAAA,YAAA;AAElB;;;;;;;AAOG;2BACkB,aAAA,CAAA,gBAAA,CAAA,kBAAA;;;AAiBrB;AAQA;oDAjDW,sBAAsB;sDAAtB,sBAAsB;AA6DlC;;AC1HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDG;;AA8CH;;;;AAIG;UACc,gBAAgB;AAC/B;;;;;AAKG;AACH,uCAAmC,IAAI,CAAC,WAAW;;AAAiD;AAEpG;;AAEG;kCAC2B,WAAW;AAEzC;;AAEG;AACH,sBAAkB,WAAW;AAE7B;;;AAGG;8BACuB,WAAW;;AAAkC;AAEvE;;;AAGG;AACH;;AAAgD;AAEhD;;;AAGG;;;AAC6D;AAEhE;;AAEG;AACH;AAEA;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;AACH,2BAAuB,WAAW;AAElC;;AAEG;AACH,qCAAiC,SAAS;AAE1C;;AAEG;6CACsC,SAAS;AAElD;;AAEG;AACH,aAAS,MAAM;AAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;AACH,iBAAgB,mBAAmB,qBAAyB,gBAAgB;;;;","names":[]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-filtering.d.ts","sources":["../../../../libs/grid-angular/features/filtering/src/grid-filtering.directive.ts","../../../../libs/grid-angular/features/filtering/src/index.ts"],"mappings":";;;;;;;AAuDA;;;;;;;;;;;;;;AAcG;KAES,YAAY,eAAe,IAAI,CAACA,cAAgB;AAC1D,0BAAsBA,cAAgB,gCAAgC,IAAI,CAAC,WAAW;;AAGxF;;;;;;;AAOG;AACH,cAIa,sBAAuB,YAAW,MAAM,EAAE,SAAS;AAC9D;AAEA;;;;;;;;;AASG;wBAEe,aAAA,CAAA,WAAA,WAAA,YAAA;AAElB;;;;;;;AAOG;2BACkB,aAAA,CAAA,gBAAA,CAAA,kBAAA;;;AAiBrB;AAQA;oDAjDW,sBAAsB;sDAAtB,sBAAsB;AA6DlC;;ACpJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDG;;AA8EH;;;;AAIG;UACc,gBAAgB;AAC/B;;;;;AAKG;AACH,uCAAmC,IAAI,CAAC,WAAW;;AAAiD;AAEpG;;AAEG;kCAC2B,WAAW;AAEzC;;AAEG;AACH,sBAAkB,WAAW;AAE7B;;;AAGG;8BACuB,WAAW;;AAAkC;AAEvE;;;AAGG;AACH;;AAAgD;AAEhD;;;AAGG;;;AAC6D;AAEhE;;AAEG;AACH;AAEA;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;AACH,2BAAuB,WAAW;AAElC;;AAEG;AACH,qCAAiC,SAAS;AAE1C;;AAEG;6CACsC,SAAS;AAElD;;AAEG;AACH,aAAS,MAAM;AAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;AACH,iBAAgB,mBAAmB,qBAAyB,gBAAgB;;;;","names":["CoreFilterConfig"]}
@@ -1,8 +1,34 @@
1
1
  export { _Augmentation as _GroupingColumnsAugmentation } from '@toolbox-web/grid/features/grouping-columns';
2
2
  import * as i0 from '@angular/core';
3
- import { OnDestroy } from '@angular/core';
4
- import { GroupingColumnsConfig } from '@toolbox-web/grid/plugins/grouping-columns';
3
+ import { OnDestroy, Type } from '@angular/core';
4
+ import { GroupingColumnsConfig as GroupingColumnsConfig$1, ColumnGroupDefinition as ColumnGroupDefinition$1 } from '@toolbox-web/grid/plugins/grouping-columns';
5
5
 
6
+ /**
7
+ * Column group definition widened to accept an Angular component class as
8
+ * the per-group `renderer`.
9
+ *
10
+ * @since 1.7.0
11
+ */
12
+ type ColumnGroupDefinition = Omit<ColumnGroupDefinition$1, 'renderer'> & {
13
+ renderer?: ColumnGroupDefinition$1['renderer'] | Type<unknown>;
14
+ };
15
+ /**
16
+ * Grouping-columns config widened to accept Angular component classes for
17
+ * `groupHeaderRenderer` and per-group `renderer` inside `columnGroups`.
18
+ *
19
+ * Component instances receive the {@link GroupHeaderRenderParams} fields as
20
+ * inputs (`id`, `label`, `columns`, `firstIndex`, `isImplicit`).
21
+ *
22
+ * @since 1.7.0
23
+ */
24
+ type GroupingColumnsConfig = Omit<GroupingColumnsConfig$1, 'groupHeaderRenderer' | 'columnGroups'> & {
25
+ columnGroups?: ColumnGroupDefinition[];
26
+ groupHeaderRenderer?: GroupingColumnsConfig$1['groupHeaderRenderer'] | Type<unknown>;
27
+ };
28
+ /** @deprecated Use {@link ColumnGroupDefinition} instead. */
29
+ type AngularColumnGroupDefinition = ColumnGroupDefinition;
30
+ /** @deprecated Use {@link GroupingColumnsConfig} instead. */
31
+ type AngularGroupingColumnsConfig = GroupingColumnsConfig;
6
32
  /**
7
33
  * Owns the binding(s) `[groupingColumns]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
8
34
  *
@@ -18,4 +44,5 @@ declare class GridGroupingColumnsDirective implements OnDestroy {
18
44
  }
19
45
 
20
46
  export { GridGroupingColumnsDirective };
47
+ export type { AngularColumnGroupDefinition, AngularGroupingColumnsConfig, ColumnGroupDefinition, GroupingColumnsConfig };
21
48
  //# sourceMappingURL=toolbox-web-grid-angular-features-grouping-columns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-grouping-columns.d.ts","sources":["../../../../libs/grid-angular/features/grouping-columns/src/grid-grouping-columns.directive.ts"],"mappings":";;;;;AAYA;;;;AAIG;AACH,cAIa,4BAA6B,YAAW,SAAS;AAC5D;8BAEwBA,EAAA,CAAA,WAAA,WAAA,qBAAA;;AAMxB;yCATW,4BAA4B;2CAA5B,4BAA4B;AAYxC;;;;","names":["_angular_core"]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-grouping-columns.d.ts","sources":["../../../../libs/grid-angular/features/grouping-columns/src/grid-grouping-columns.directive.ts"],"mappings":";;;;;AAgBA;;;;;AAKG;AACG,KAAM,qBAAqB,GAAG,IAAI,CAACA,uBAAyB;eACrDA,uBAAyB,eAAe,IAAI;;AAGzD;;;;;;;;AAQG;AACG,KAAM,qBAAqB,GAAG,IAAI,CAACC,uBAAyB;AAChE,mBAAe,qBAAqB;0BACdA,uBAAyB,0BAA0B,IAAI;;AAO/E;AACM,KAAM,4BAA4B,GAAG,qBAAqB;AAChE;AACM,KAAM,4BAA4B,GAAG,qBAAqB;AAEhE;;;;AAIG;AACH,cAIa,4BAA6B,YAAW,SAAS;AAC5D;8BAEwBC,EAAA,CAAA,WAAA,WAAA,qBAAA;;AAMxB;yCATW,4BAA4B;2CAA5B,4BAA4B;AAYxC;;;;","names":["CoreColumnGroupDefinition","CoreGroupingColumnsConfig","_angular_core"]}
@@ -1,8 +1,22 @@
1
1
  export { _Augmentation as _GroupingRowsAugmentation } from '@toolbox-web/grid/features/grouping-rows';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnInit, OnDestroy } from '@angular/core';
4
- import { GroupingRowsConfig, GroupToggleDetail, GroupExpandDetail, GroupCollapseDetail } from '@toolbox-web/grid/plugins/grouping-rows';
3
+ import { OnInit, OnDestroy, Type } from '@angular/core';
4
+ import { GroupingRowsConfig as GroupingRowsConfig$1, GroupToggleDetail, GroupExpandDetail, GroupCollapseDetail } from '@toolbox-web/grid/plugins/grouping-rows';
5
5
 
6
+ /**
7
+ * Grouping-rows config widened to accept an Angular component class as
8
+ * `groupRowRenderer`.
9
+ *
10
+ * Component instances receive the {@link GroupRowRenderParams} fields as
11
+ * inputs (`key`, `value`, `depth`, `rows`, `expanded`, `toggleExpand`).
12
+ *
13
+ * @since 1.7.0
14
+ */
15
+ type GroupingRowsConfig = Omit<GroupingRowsConfig$1, 'groupRowRenderer'> & {
16
+ groupRowRenderer?: GroupingRowsConfig$1['groupRowRenderer'] | Type<unknown>;
17
+ };
18
+ /** @deprecated Use {@link GroupingRowsConfig} instead. */
19
+ type AngularGroupingRowsConfig = GroupingRowsConfig;
6
20
  /**
7
21
  * Owns the binding(s) `[groupingRows], [groupToggle], [groupExpand], [groupCollapse]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
8
22
  *
@@ -24,4 +38,5 @@ declare class GridGroupingRowsDirective implements OnInit, OnDestroy {
24
38
  }
25
39
 
26
40
  export { GridGroupingRowsDirective };
41
+ export type { AngularGroupingRowsConfig, GroupingRowsConfig };
27
42
  //# sourceMappingURL=toolbox-web-grid-angular-features-grouping-rows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-grouping-rows.d.ts","sources":["../../../../libs/grid-angular/features/grouping-rows/src/grid-grouping-rows.directive.ts"],"mappings":";;;;;AAiBA;;;;AAIG;AACH,cAIa,yBAA0B,YAAW,MAAM,EAAE,SAAS;AACjE;2BAEqB,aAAA,CAAA,WAAA,CAAA,kBAAA;0BACD,aAAA,CAAA,gBAAA,CAAA,iBAAA;0BACA,aAAA,CAAA,gBAAA,CAAA,iBAAA;4BACE,aAAA,CAAA,gBAAA,CAAA,mBAAA;AAEtB;AACA;;AAQA;AAYA;oDA7BW,yBAAyB;sDAAzB,yBAAyB;AAoCrC;;;;","names":[]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-grouping-rows.d.ts","sources":["../../../../libs/grid-angular/features/grouping-rows/src/grid-grouping-rows.directive.ts"],"mappings":";;;;;AAkBA;;;;;;;;AAQG;AACG,KAAM,kBAAkB,GAAG,IAAI,CAACA,oBAAsB;uBACvCA,oBAAsB,uBAAuB,IAAI;;AAItE;AACM,KAAM,yBAAyB,GAAG,kBAAkB;AAE1D;;;;AAIG;AACH,cAIa,yBAA0B,YAAW,MAAM,EAAE,SAAS;AACjE;2BAEqB,aAAA,CAAA,WAAA,CAAA,kBAAA;0BACD,aAAA,CAAA,gBAAA,CAAA,iBAAA;0BACA,aAAA,CAAA,gBAAA,CAAA,iBAAA;4BACE,aAAA,CAAA,gBAAA,CAAA,mBAAA;AAEtB;AACA;;AAQA;AAYA;oDA7BW,yBAAyB;sDAAzB,yBAAyB;AAoCrC;;;;","names":["CoreGroupingRowsConfig"]}
@@ -1,9 +1,28 @@
1
1
  export { _Augmentation as _MasterDetailAugmentation } from '@toolbox-web/grid/features/master-detail';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnInit, OnDestroy } from '@angular/core';
4
- import { MasterDetailConfig, DetailExpandDetail } from '@toolbox-web/grid/plugins/master-detail';
3
+ import { OnInit, OnDestroy, Type } from '@angular/core';
4
+ import { MasterDetailConfig as MasterDetailConfig$1, DetailExpandDetail } from '@toolbox-web/grid/plugins/master-detail';
5
5
  export { GridDetailContext, GridDetailView, getDetailTemplate } from '@toolbox-web/grid-angular';
6
6
 
7
+ /**
8
+ * Angular-specific master-detail config that allows an Angular component class
9
+ * as `detailRenderer`.
10
+ *
11
+ * Extends the core `MasterDetailConfig` to accept a `Type<unknown>` for
12
+ * `detailRenderer` in addition to the vanilla
13
+ * `(row, rowIndex) => HTMLElement | string` signature. Bridging to vanilla
14
+ * DOM is handled by the side-effect import
15
+ * `@toolbox-web/grid-angular/features/master-detail`.
16
+ *
17
+ * Re-exported from the feature entry under the same name as the core type
18
+ * so Angular consumers see a single canonical `MasterDetailConfig` from
19
+ * `@toolbox-web/grid-angular/features/master-detail`.
20
+ *
21
+ * @since 1.7.1
22
+ */
23
+ type MasterDetailConfig = Omit<MasterDetailConfig$1, 'detailRenderer'> & {
24
+ detailRenderer?: MasterDetailConfig$1['detailRenderer'] | Type<unknown>;
25
+ };
7
26
  /**
8
27
  * Owns the binding(s) `[masterDetail], [detailExpand]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
9
28
  *
@@ -22,4 +41,5 @@ declare class GridMasterDetailDirective implements OnInit, OnDestroy {
22
41
  }
23
42
 
24
43
  export { GridMasterDetailDirective };
44
+ export type { MasterDetailConfig };
25
45
  //# sourceMappingURL=toolbox-web-grid-angular-features-master-detail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-master-detail.d.ts","sources":["../../../../libs/grid-angular/features/master-detail/src/grid-master-detail.directive.ts"],"mappings":";;;;;;AAgBA;;;;AAIG;AACH,cAIa,yBAA0B,YAAW,MAAM,EAAE,SAAS;AACjE;2BAEqB,aAAA,CAAA,WAAA,CAAA,kBAAA;2BACA,aAAA,CAAA,gBAAA,CAAA,kBAAA;;;AAUrB;AAMA;oDApBW,yBAAyB;sDAAzB,yBAAyB;AA6BrC;;;;","names":[]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-master-detail.d.ts","sources":["../../../../libs/grid-angular/features/master-detail/src/grid-master-detail.directive.ts"],"mappings":";;;;;;AAmBA;;;;;;;;;;;;;;;AAeG;AACG,KAAM,kBAAkB,GAAG,IAAI,CAACA,oBAAsB;qBACzCA,oBAAsB,qBAAqB,IAAI;;AAGlE;;;;AAIG;AACH,cAIa,yBAA0B,YAAW,MAAM,EAAE,SAAS;AACjE;2BAEqB,aAAA,CAAA,WAAA,CAAA,kBAAA;2BACA,aAAA,CAAA,gBAAA,CAAA,kBAAA;;;AAUrB;AAMA;oDApBW,yBAAyB;sDAAzB,yBAAyB;AA6BrC;;;;","names":["CoreMasterDetailConfig"]}
@@ -1,8 +1,76 @@
1
1
  export { _Augmentation as _PinnedRowsAugmentation } from '@toolbox-web/grid/features/pinned-rows';
2
2
  import * as i0 from '@angular/core';
3
- import { OnDestroy } from '@angular/core';
4
- import { PinnedRowsConfig } from '@toolbox-web/grid/plugins/pinned-rows';
3
+ import { OnDestroy, Type } from '@angular/core';
4
+ import { PinnedRowsConfig as PinnedRowsConfig$1, PinnedRowsContext, PanelZone } from '@toolbox-web/grid/plugins/pinned-rows';
5
5
 
6
+ /**
7
+ * Angular-shaped panel-slot render: a renderer function (vanilla), an Angular
8
+ * component class, or an array of zoned entries that each accept the same.
9
+ *
10
+ * Component instances receive the {@link PinnedRowsContext} fields as inputs.
11
+ *
12
+ * @since 1.7.1
13
+ */
14
+ type PanelRender = ((ctx: PinnedRowsContext) => HTMLElement | null) | Type<unknown>;
15
+ /**
16
+ * Angular-shaped zoned panel render entry.
17
+ *
18
+ * @since 1.7.1
19
+ */
20
+ interface ZonedPanelRender {
21
+ zone?: PanelZone;
22
+ render: PanelRender;
23
+ }
24
+ /**
25
+ * Angular-shaped pinned-rows panel slot.
26
+ *
27
+ * @since 1.7.1
28
+ */
29
+ interface PanelSlot {
30
+ id?: string;
31
+ position?: 'top' | 'bottom';
32
+ render: PanelRender | ZonedPanelRender[];
33
+ }
34
+ type CoreSlot = NonNullable<PinnedRowsConfig$1['slots']>[number];
35
+ type CoreAggregationSlot = Exclude<CoreSlot, {
36
+ render: unknown;
37
+ }>;
38
+ /**
39
+ * Angular-shaped pinned-rows slot \u2014 either an aggregation slot (passthrough)
40
+ * or a panel slot accepting Angular component classes as `render`.
41
+ *
42
+ * @since 1.7.1
43
+ */
44
+ type PinnedRowSlot = CoreAggregationSlot | PanelSlot;
45
+ /**
46
+ * Pinned-rows config widened to accept Angular component classes as `render`
47
+ * inside `slots[]` and `customPanels[]`. Bridging to vanilla DOM is handled
48
+ * by the side-effect import `@toolbox-web/grid-angular/features/pinned-rows`.
49
+ *
50
+ * Re-exported under the same name as the core type so Angular users see a
51
+ * single canonical `PinnedRowsConfig` from
52
+ * `@toolbox-web/grid-angular/features/pinned-rows`.
53
+ *
54
+ * @since 1.7.1
55
+ */
56
+ type PinnedRowsConfig = Omit<PinnedRowsConfig$1, 'slots' | 'customPanels'> & {
57
+ slots?: PinnedRowSlot[];
58
+ customPanels?: Array<{
59
+ id: string;
60
+ position: PanelZone;
61
+ render: ((ctx: PinnedRowsContext) => HTMLElement) | Type<unknown>;
62
+ }>;
63
+ };
64
+ /** @deprecated Use {@link PanelRender} instead. */
65
+ type AngularPanelRender = PanelRender;
66
+ /** @deprecated Use {@link ZonedPanelRender} instead. */
67
+ type AngularZonedPanelRender = ZonedPanelRender;
68
+ /** @deprecated Use {@link PanelSlot} instead. */
69
+ type AngularPanelSlot = PanelSlot;
70
+ /** @deprecated Use {@link PinnedRowSlot} instead. */
71
+ type AngularPinnedRowSlot = PinnedRowSlot;
72
+ /** @deprecated Use {@link PinnedRowsConfig} instead. */
73
+ type AngularPinnedRowsConfig = PinnedRowsConfig;
6
74
  /**
7
75
  * Owns the binding(s) `[pinnedRows]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
8
76
  *
@@ -18,4 +86,5 @@ declare class GridPinnedRowsDirective implements OnDestroy {
18
86
  }
19
87
 
20
88
  export { GridPinnedRowsDirective };
89
+ export type { AngularPanelRender, AngularPanelSlot, AngularPinnedRowSlot, AngularPinnedRowsConfig, AngularZonedPanelRender, PanelRender, PanelSlot, PinnedRowSlot, PinnedRowsConfig, ZonedPanelRender };
21
90
  //# sourceMappingURL=toolbox-web-grid-angular-features-pinned-rows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-pinned-rows.d.ts","sources":["../../../../libs/grid-angular/features/pinned-rows/src/grid-pinned-rows.directive.ts"],"mappings":";;;;;AAWA;;;;AAIG;AACH,cAIa,uBAAwB,YAAW,SAAS;AACvD;yBAEmBA,EAAA,CAAA,WAAA,WAAA,gBAAA;;AAMnB;yCATW,uBAAuB;2CAAvB,uBAAuB;AAYnC;;;;","names":["_angular_core"]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-pinned-rows.d.ts","sources":["../../../../libs/grid-angular/features/pinned-rows/src/grid-pinned-rows.directive.ts"],"mappings":";;;;;AAeA;;;;;;;AAOG;KACS,WAAW,UAAU,iBAAiB,KAAK,WAAW,WAAW,IAAI;AAEjF;;;;AAIG;UACc,gBAAgB;WACxB,SAAS;YACR,WAAW;AACpB;AAED;;;;AAIG;UACc,SAAS;;AAExB;AACA,YAAQ,WAAW,GAAG,gBAAgB;AACvC;AAED,KAAK,QAAQ,GAAG,WAAW,CAACA,kBAAoB;AAChD,KAAK,mBAAmB,GAAG,OAAO,CAAC,QAAQ;;AAAqB;AAEhE;;;;;AAKG;KACS,aAAa,GAAG,mBAAmB,GAAG,SAAS;AAE3D;;;;;;;;;;AAUG;AACG,KAAM,gBAAgB,GAAG,IAAI,CAACA,kBAAoB;AACtD,YAAQ,aAAa;mBACN,KAAK;;kBAER,SAAS;AACnB,uBAAe,iBAAiB,KAAK,WAAW,IAAI,IAAI;AACzD;;AAOH;AACM,KAAM,kBAAkB,GAAG,WAAW;AAC5C;AACM,KAAM,uBAAuB,GAAG,gBAAgB;AACtD;AACM,KAAM,gBAAgB,GAAG,SAAS;AACxC;AACM,KAAM,oBAAoB,GAAG,aAAa;AAChD;AACM,KAAM,uBAAuB,GAAG,gBAAgB;AAEtD;;;;AAIG;AACH,cAIa,uBAAwB,YAAW,SAAS;AACvD;yBAEmBC,EAAA,CAAA,WAAA,WAAA,gBAAA;;AAMnB;yCATW,uBAAuB;2CAAvB,uBAAuB;AAYnC;;;;","names":["CorePinnedRowsConfig","_angular_core"]}
@@ -6,6 +6,10 @@ import { RowReorderConfig } from '@toolbox-web/grid/plugins/reorder-rows';
6
6
  /**
7
7
  * Owns the binding(s) `[reorderRows]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
8
8
  *
9
+ * @deprecated v1.x — slated for removal in `@toolbox-web/grid-angular` 2.0.0
10
+ * (coordinated v3.0.0 release, see gh #260 / #263). Use `GridRowDragDropDirective`
11
+ * (binds `[rowDragDrop]`) instead.
12
+ *
9
13
  * @category Directive
10
14
  */
11
15
  declare class GridReorderRowsDirective implements OnDestroy {
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-reorder-rows.d.ts","sources":["../../../../libs/grid-angular/features/reorder-rows/src/grid-reorder-rows.directive.ts"],"mappings":";;;;;AAgBA;;;;AAIG;AACH,cAIa,wBAAyB,YAAW,SAAS;AACxD;0BAEoBA,EAAA,CAAA,WAAA,WAAA,gBAAA;;AAMpB;yCATW,wBAAwB;2CAAxB,wBAAwB;AAYpC;;;;","names":["_angular_core"]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-reorder-rows.d.ts","sources":["../../../../libs/grid-angular/features/reorder-rows/src/grid-reorder-rows.directive.ts"],"mappings":";;;;;AAgBA;;;;;;;;AAQG;AACH,cAIa,wBAAyB,YAAW,SAAS;AACxD;0BAEoBA,EAAA,CAAA,WAAA,WAAA,gBAAA;;AAMpB;yCATW,wBAAwB;2CAAxB,wBAAwB;AAYpC;;;;","names":["_angular_core"]}
@@ -1,8 +1,27 @@
1
1
  export { _Augmentation as _ResponsiveAugmentation } from '@toolbox-web/grid/features/responsive';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnInit, OnDestroy } from '@angular/core';
4
- import { ResponsivePluginConfig, ResponsiveChangeDetail } from '@toolbox-web/grid/plugins/responsive';
3
+ import { OnInit, OnDestroy, Type } from '@angular/core';
4
+ import { ResponsivePluginConfig as ResponsivePluginConfig$1, ResponsiveChangeDetail } from '@toolbox-web/grid/plugins/responsive';
5
5
 
6
+ /**
7
+ * Angular-specific responsive config that allows an Angular component class
8
+ * as `cardRenderer`.
9
+ *
10
+ * Extends the core `ResponsivePluginConfig` to accept a `Type<unknown>` for
11
+ * `cardRenderer` in addition to the vanilla
12
+ * `(row, rowIndex, column?) => HTMLElement` signature. Bridging to vanilla
13
+ * DOM is handled by the side-effect import
14
+ * `@toolbox-web/grid-angular/features/responsive`.
15
+ *
16
+ * Re-exported from the feature entry under the same name as the core type
17
+ * so Angular consumers see a single canonical `ResponsivePluginConfig` from
18
+ * `@toolbox-web/grid-angular/features/responsive`.
19
+ *
20
+ * @since 1.7.1
21
+ */
22
+ type ResponsivePluginConfig<TRow = unknown> = Omit<ResponsivePluginConfig$1<TRow>, 'cardRenderer'> & {
23
+ cardRenderer?: ResponsivePluginConfig$1<TRow>['cardRenderer'] | Type<unknown>;
24
+ };
6
25
  /**
7
26
  * Owns the binding(s) `[responsive], [responsiveChange]` on `<tbw-grid>` for the matching feature plugin. See `GridFilteringDirective` for the full rationale.
8
27
  *
@@ -21,4 +40,5 @@ declare class GridResponsiveDirective implements OnInit, OnDestroy {
21
40
  }
22
41
 
23
42
  export { GridResponsiveDirective };
43
+ export type { ResponsivePluginConfig };
24
44
  //# sourceMappingURL=toolbox-web-grid-angular-features-responsive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-responsive.d.ts","sources":["../../../../libs/grid-angular/features/responsive/src/grid-responsive.directive.ts"],"mappings":";;;;;AAWA;;;;AAIG;AACH,cAIa,uBAAwB,YAAW,MAAM,EAAE,SAAS;AAC/D;yBAEmB,aAAA,CAAA,WAAA,WAAA,sBAAA;+BACM,aAAA,CAAA,gBAAA,CAAA,sBAAA;;;AAUzB;AAMA;oDApBW,uBAAuB;sDAAvB,uBAAuB;AA6BnC;;;;","names":[]}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-responsive.d.ts","sources":["../../../../libs/grid-angular/features/responsive/src/grid-responsive.directive.ts"],"mappings":";;;;;AAcA;;;;;;;;;;;;;;;AAeG;KACS,sBAAsB,mBAAmB,IAAI,CAACA,wBAA0B;AAClF,mBAAeA,wBAA0B,yBAAyB,IAAI;;AAGxE;;;;AAIG;AACH,cAIa,uBAAwB,YAAW,MAAM,EAAE,SAAS;AAC/D;yBAEmB,aAAA,CAAA,WAAA,WAAA,sBAAA;+BACM,aAAA,CAAA,gBAAA,CAAA,sBAAA;;;AAUzB;AAMA;oDApBW,uBAAuB;sDAAvB,uBAAuB;AA6BnC;;;;","names":["CoreResponsivePluginConfig"]}
@@ -1,10 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
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';
3
+ import { GridConfig as GridConfig$1, ColumnConfig as ColumnConfig$1, TypeDefault as TypeDefault$1, FrameworkAdapter, ColumnViewRenderer, ColumnEditorSpec, GridIcons, DataGridElement, FeatureConfig, ExpandCollapseAnimation, FitMode, CellClickDetail, RowClickDetail, CellActivateDetail, CellChangeDetail, SortChangeDetail, ColumnResizeDetail, GridColumnState, TbwScrollDetail, DataGridEventMap } from '@toolbox-web/grid';
4
4
  import { FilterPanelRenderer, FilterPanelParams } from '@toolbox-web/grid/plugins/filtering';
5
5
  import { AbstractControl, ControlValueAccessor, FormArray, FormGroup } from '@angular/forms';
6
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';
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, RenderDetail } from '@toolbox-web/grid/all';
8
8
  export { PluginFactory, clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getRegisteredFeatures, isFeatureRegistered, registerFeature } from '@toolbox-web/grid/features/registry';
9
9
 
10
10
  /**
@@ -1041,10 +1041,23 @@ declare function injectGrid<TRow = unknown>(selector?: string): InjectGridReturn
1041
1041
  */
1042
1042
 
1043
1043
  /**
1044
- * Feature names supported by the Grid directive.
1044
+ * Feature names supported by the Grid directive, derived from the core
1045
+ * augmentable `FeatureConfig` interface — stays in lockstep with core: any
1046
+ * feature that augments `FeatureConfig` (via `declare module
1047
+ * '@toolbox-web/grid'`) is automatically a member of this union, including
1048
+ * third-party features.
1049
+ *
1050
+ * The `__brand` sentinel declared on core's `FeatureConfig` (to keep the
1051
+ * interface non-empty for excess-property checks) is filtered out — it is
1052
+ * not a real feature name.
1053
+ *
1054
+ * The `feature-registry.spec.ts` superset check enforces the strict
1055
+ * additive contract (gh #356 §7): every previously-accepted name must stay
1056
+ * assignable to the derived union.
1057
+ *
1045
1058
  * @since 0.6.0
1046
1059
  */
1047
- 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' | 'stickyRows' | 'tooltip';
1060
+ type FeatureName = Exclude<keyof FeatureConfig, '__brand'>;
1048
1061
 
1049
1062
  /**
1050
1063
  * Base class for Angular filter panel components.
@@ -2229,6 +2242,64 @@ declare class GridFormArray implements OnInit, OnDestroy {
2229
2242
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridFormArray, "tbw-grid[formArray]", never, { "formArray": { "alias": "formArray"; "required": true; "isSignal": true; }; "syncValidation": { "alias": "syncValidation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2230
2243
  }
2231
2244
 
2245
+ /**
2246
+ * Context object passed to the header content template.
2247
+ * @since 1.7.0
2248
+ */
2249
+ interface GridHeaderContentContext {
2250
+ /** The grid element (implicit binding for `let-grid`). */
2251
+ $implicit: DataGridElement;
2252
+ /** The grid element. */
2253
+ grid: DataGridElement;
2254
+ }
2255
+ /**
2256
+ * Declarative wrapper around the grid's imperative
2257
+ * {@link DataGridElement.registerHeaderContent} API.
2258
+ *
2259
+ * Captures an `<ng-template>` and mounts it as an Angular embedded view into
2260
+ * the slot the grid provides for header content. Must be a child of
2261
+ * `<tbw-grid>`.
2262
+ *
2263
+ * ## Usage
2264
+ *
2265
+ * ```html
2266
+ * <tbw-grid [rows]="rows" [gridConfig]="config">
2267
+ * <tbw-grid-header-content id="calendar-nav" [order]="0">
2268
+ * <ng-template let-grid>
2269
+ * <app-header-nav [year]="year()" (yearChange)="setYear($event)" />
2270
+ * </ng-template>
2271
+ * </tbw-grid-header-content>
2272
+ * </tbw-grid>
2273
+ * ```
2274
+ *
2275
+ * @category Directive
2276
+ * @since 1.7.0
2277
+ */
2278
+ declare class GridHeaderContent {
2279
+ private elementRef;
2280
+ private viewContainerRef;
2281
+ private destroyRef;
2282
+ /** Unique identifier for this header content entry. Optional — defaults to a stable generated id. */
2283
+ id: _angular_core.InputSignal<string | undefined>;
2284
+ /** Render order priority. Lower values appear first. @default 100 */
2285
+ order: _angular_core.InputSignal<number>;
2286
+ /** The template to mount into the grid's header content slot. */
2287
+ template: _angular_core.Signal<TemplateRef<any> | undefined>;
2288
+ private viewRef;
2289
+ private registeredId;
2290
+ private resolvedId;
2291
+ private destroyed;
2292
+ constructor();
2293
+ private lastOrder;
2294
+ private register;
2295
+ private unregister;
2296
+ private findGrid;
2297
+ /** Type guard for template context inference. */
2298
+ static ngTemplateContextGuard(_dir: GridHeaderContent, ctx: unknown): ctx is GridHeaderContentContext;
2299
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridHeaderContent, never>;
2300
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridHeaderContent, "tbw-grid-header-content", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; }, {}, ["template"], never, true, never>;
2301
+ }
2302
+
2232
2303
  /**
2233
2304
  * Directive that registers `<tbw-grid-header>` as a known Angular element.
2234
2305
  *
@@ -2701,6 +2772,64 @@ declare class GridToolPanel {
2701
2772
  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>;
2702
2773
  }
2703
2774
 
2775
+ /**
2776
+ * Context object passed to the toolbar content template.
2777
+ * @since 1.7.0
2778
+ */
2779
+ interface GridToolbarContentContext {
2780
+ /** The grid element (implicit binding for `let-grid`). */
2781
+ $implicit: DataGridElement;
2782
+ /** The grid element. */
2783
+ grid: DataGridElement;
2784
+ }
2785
+ /**
2786
+ * Declarative wrapper around the grid's imperative
2787
+ * {@link DataGridElement.registerToolbarContent} API.
2788
+ *
2789
+ * Captures an `<ng-template>` and mounts it as an Angular embedded view into
2790
+ * the slot the grid provides for toolbar content. Must be a child of
2791
+ * `<tbw-grid>`.
2792
+ *
2793
+ * Prefer this over `<tbw-grid-tool-buttons>` (light DOM) when you need
2794
+ * Angular template bindings to component state. Use the light-DOM form for
2795
+ * static markup that should be moved verbatim into the toolbar.
2796
+ *
2797
+ * ## Usage
2798
+ *
2799
+ * ```html
2800
+ * <tbw-grid [rows]="rows" [gridConfig]="config">
2801
+ * <tbw-grid-toolbar-content id="calendar-nav" [order]="0">
2802
+ * <ng-template let-grid>
2803
+ * <app-toolbar-nav (prev)="prev()" (today)="today()" (next)="next()" />
2804
+ * </ng-template>
2805
+ * </tbw-grid-toolbar-content>
2806
+ * </tbw-grid>
2807
+ * ```
2808
+ *
2809
+ * @category Directive
2810
+ * @since 1.7.0
2811
+ */
2812
+ declare class GridToolbarContent {
2813
+ private elementRef;
2814
+ private viewContainerRef;
2815
+ private destroyRef;
2816
+ id: _angular_core.InputSignal<string | undefined>;
2817
+ order: _angular_core.InputSignal<number>;
2818
+ template: _angular_core.Signal<TemplateRef<any> | undefined>;
2819
+ private viewRef;
2820
+ private registeredId;
2821
+ private resolvedId;
2822
+ private lastOrder;
2823
+ private destroyed;
2824
+ constructor();
2825
+ private register;
2826
+ private unregister;
2827
+ private findGrid;
2828
+ static ngTemplateContextGuard(_dir: GridToolbarContent, ctx: unknown): ctx is GridToolbarContentContext;
2829
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridToolbarContent, never>;
2830
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridToolbarContent, "tbw-grid-toolbar-content", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; }, {}, ["template"], never, true, never>;
2831
+ }
2832
+
2704
2833
  /**
2705
2834
  * Column shorthand parsing for `@toolbox-web/grid-angular`.
2706
2835
  *
@@ -3946,6 +4075,24 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3946
4075
  * ```
3947
4076
  */
3948
4077
  tbwScroll: _angular_core.OutputEmitterRef<TbwScrollDetail>;
4078
+ /**
4079
+ * Emitted once at the end of every render-scheduler flush, after all
4080
+ * plugin `afterRender` hooks have run and `ready()` has resolved.
4081
+ *
4082
+ * Use this to act on the rendered DOM after a programmatic mutation
4083
+ * (e.g. focus the first input of a freshly added row in full-grid edit
4084
+ * mode) without `setTimeout` or double-`requestAnimationFrame` hacks.
4085
+ * The `render` event fires on every flush — including scroll-driven
4086
+ * virtual-window updates — so prefer subscribing once and unsubscribing
4087
+ * (or gating on `detail.phase >= RenderPhase.ROWS`) when you only care
4088
+ * about a specific mutation.
4089
+ *
4090
+ * @example
4091
+ * ```html
4092
+ * <tbw-grid (render)="onRender($event)">...</tbw-grid>
4093
+ * ```
4094
+ */
4095
+ render: _angular_core.OutputEmitterRef<RenderDetail>;
3949
4096
  private readonly eventOutputMap;
3950
4097
  /** Events deliberately not exposed as Angular outputs. Keep empty unless documented. */
3951
4098
  private _intentionallyOmittedEvents;
@@ -3989,7 +4136,7 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3989
4136
  private registerCustomStyles;
3990
4137
  ngOnDestroy(): void;
3991
4138
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Grid, never>;
3992
- 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>;
4139
+ 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"; "render": "render"; }, never, never, true, never>;
3993
4140
  }
3994
4141
 
3995
4142
  /**
@@ -4419,6 +4566,6 @@ declare function isEventClaimed(grid: HTMLElement, eventName: ClaimableEventName
4419
4566
  */
4420
4567
  declare function unclaimEvent(grid: HTMLElement, eventName: ClaimableEventName): void;
4421
4568
 
4422
- 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 };
4423
- 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 };
4569
+ export { BaseFilterPanel, BaseGridEditor, BaseGridEditorCVA, BaseOverlayEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridHeaderContent, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridToolbarContent, 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 };
4570
+ export type { CellCommitEvent, CellEditor, CellRenderer, ColumnConfig, ColumnShorthand, EditorMountHook, FeatureConfigGetter, FeatureConfigPreprocessor, FeatureName, FilterPanel, FilterPanelTypeDefaultBridge, FormArrayContext, GridCellContext, GridConfig, GridDetailContext, GridEditorContext, GridHeaderContentContext, GridResponsiveCardContext, GridToolPanelContext, GridToolbarContentContext, InjectGridReturn, LazyFormFactory, OverlayPosition, ProvideGridOptions, RowCommitEvent, RowFormChangeEvent, RowRendererBridge, StructuralCellContext, StructuralEditorContext, TemplateBridge, TemplateBridgeContext, TypeDefault, TypeDefaultRegistration };
4424
4571
  //# sourceMappingURL=toolbox-web-grid-angular.d.ts.map