@reforgium/data-grid 2.5.3 → 3.0.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.
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, InjectionToken, EnvironmentProviders, ElementRef } from '@angular/core';
2
+ import { TemplateRef, Signal, InjectionToken, EnvironmentProviders, ElementRef } from '@angular/core';
3
3
  import * as _reforgium_data_grid from '@reforgium/data-grid';
4
4
 
5
5
  /**
@@ -232,7 +232,7 @@ type BaseGridColumn<Data extends AnyDict = AnyDict> = {
232
232
  /**
233
233
  * Optional alternative key for sorting (if different from a display key).
234
234
  */
235
- sortKey?: string;
235
+ sortKey?: DataKey<Data>;
236
236
  /**
237
237
  * Column header text string.
238
238
  */
@@ -550,6 +550,134 @@ declare class DataGridExpanderIconDirective {
550
550
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DataGridExpanderIconDirective, "ng-template[reDataGridExpanderIcon]", never, {}, {}, never, never, true, never>;
551
551
  }
552
552
 
553
+ /**
554
+ * Event emitted when pagination changes in the data grid.
555
+ *
556
+ * Contains information about the current page, page size, and optional sorting parameters.
557
+ * Property names are compatible with PrimeNG table component conventions.
558
+ */
559
+ type GridPageChangeEvent = {
560
+ page: number;
561
+ /** `pageSize`, named `rows` for compatibility with PrimeNG */
562
+ rows: number;
563
+ /** for compatibility with PrimeNG */
564
+ sortField?: string;
565
+ /** for compatibility with PrimeNG */
566
+ sortOrder?: GridSortOrder;
567
+ };
568
+ /**
569
+ * Event emitted when column sorting changes in the data grid.
570
+ *
571
+ * Contains information about the sorted column key and the sort direction.
572
+ * The `key` property is type-safe and corresponds to actual data object keys.
573
+ *
574
+ * @template Data - Type of data objects in the grid
575
+ */
576
+ type GridSortEvent<Data = AnyDict> = {
577
+ sort?: DataKey<Data>;
578
+ order?: GridSortOrder;
579
+ };
580
+ /**
581
+ * Single sort item used for multi-column sorting.
582
+ *
583
+ * @template Data - Type of data objects in the grid
584
+ */
585
+ type GridSortItem<Data = AnyDict> = {
586
+ sort: DataKey<Data>;
587
+ order: GridSortOrder;
588
+ };
589
+ /**
590
+ * Event emitted when multi-column sorting changes in the data grid.
591
+ *
592
+ * Contains an ordered list of sort items, where the order reflects
593
+ * the priority of sorting (first item has highest priority).
594
+ *
595
+ * @template Data - Type of data objects in the grid
596
+ */
597
+ type GridMultiSortEvent<Data = AnyDict> = {
598
+ sort: ReadonlyArray<GridSortItem<Data>>;
599
+ };
600
+ /**
601
+ * Event emitted when row selection changes in the data grid.
602
+ *
603
+ * Contains an array of selected values, which can be either string identifiers
604
+ * or actual data values from the specified key column.
605
+ *
606
+ * @template Data - Type of data objects in the grid
607
+ */
608
+ type GridSelectEvent<Data extends AnyDict = AnyDict> = {
609
+ selected: (string | Data[DataKey<Data>])[];
610
+ };
611
+ /**
612
+ * Event emitted when a row is clicked in the data grid.
613
+ *
614
+ * Provides access to the clicked row's data object and its numeric index position
615
+ * within the current grid data set.
616
+ *
617
+ * @template Data - Type of data objects in the grid
618
+ */
619
+ type GridRowClickEvent<Data extends AnyDict = AnyDict> = {
620
+ row: Data;
621
+ index: number;
622
+ event: Event;
623
+ };
624
+ /**
625
+ * Event emitted when a specific cell is clicked in the data grid.
626
+ *
627
+ * Provides detailed information about the clicked cell, including the row data,
628
+ * column configuration, and the row's numeric index position.
629
+ *
630
+ * @template Data - Type of data objects in the grid
631
+ */
632
+ type GridCellClickEvent<Data extends AnyDict = AnyDict> = {
633
+ row: Data;
634
+ col: GridColumn<Data>;
635
+ index: number;
636
+ event: Event;
637
+ };
638
+ /**
639
+ * Event emitted when a row is right-clicked (context menu) in the data grid.
640
+ *
641
+ * Provides access to the clicked row's data object, its index, and the native mouse event.
642
+ */
643
+ type GridRowContextEvent<Data extends AnyDict = AnyDict> = {
644
+ row: Data;
645
+ index: number;
646
+ event: MouseEvent;
647
+ };
648
+ /**
649
+ * Event emitted when a specific cell is right-clicked (context menu) in the data grid.
650
+ *
651
+ * Provides access to the clicked cell, row data, index, and the native mouse event.
652
+ */
653
+ type GridCellContextEvent<Data extends AnyDict = AnyDict> = {
654
+ row: Data;
655
+ col: GridColumn<Data>;
656
+ index: number;
657
+ event: MouseEvent;
658
+ };
659
+ /**
660
+ * Event emitted when a row is double-clicked in the data grid.
661
+ *
662
+ * Provides access to the clicked row's data object, its index, and the native mouse event.
663
+ */
664
+ type GridRowDoubleClickEvent<Data extends AnyDict = AnyDict> = {
665
+ row: Data;
666
+ index: number;
667
+ event: MouseEvent;
668
+ };
669
+ /**
670
+ * Event emitted when a specific cell is double-clicked in the data grid.
671
+ *
672
+ * Provides access to the clicked cell, row data, index, and the native mouse event.
673
+ */
674
+ type GridCellDoubleClickEvent<Data extends AnyDict = AnyDict> = {
675
+ row: Data;
676
+ col: GridColumn<Data>;
677
+ index: number;
678
+ event: MouseEvent;
679
+ };
680
+
553
681
  /**
554
682
  * Defines how pagination is displayed and handled in the data grid.
555
683
  *
@@ -595,6 +723,51 @@ type GridSortOrder = 'asc' | 'desc';
595
723
  * @template Data - Type of data objects displayed in the grid rows
596
724
  */
597
725
  type GridPinnedRows<Data extends AnyDict = AnyDict> = GridPinnedRow<Data>[];
726
+ /**
727
+ * Page-oriented source contract for grids that fetch data externally.
728
+ *
729
+ * Intended for pagination/infinity scenarios where the grid should request pages
730
+ * directly instead of receiving one ever-growing accumulated array.
731
+ *
732
+ * @template Data - Type of data objects displayed in the grid rows
733
+ */
734
+ interface GridPagedDataSource<Data extends AnyDict = AnyDict> {
735
+ /** Current page payload. */
736
+ items: Signal<Data[]>;
737
+ /** Loading flag of the current request lifecycle. */
738
+ loading: Signal<boolean>;
739
+ /** Optional last request error. */
740
+ error?: Signal<unknown | null>;
741
+ /** Current page index (0-based). */
742
+ page: number;
743
+ /** Current page size. */
744
+ pageSize: number;
745
+ /**
746
+ * Total number of rows available in the dataset.
747
+ *
748
+ * Optional in infinity mode. When omitted, the grid treats the dataset as open-ended
749
+ * until it receives a short page (`items.length < pageSize`) and then fixes the final size.
750
+ */
751
+ totalElements?: number;
752
+ /** Optional dataset revision signal. Increment to force the grid to clear its local page buffer. */
753
+ version?: Signal<number>;
754
+ /** Current source-side sort state. */
755
+ sort?: ReadonlyArray<GridSortItem<Data>>;
756
+ /**
757
+ * Optional prefetch strategy for infinity mode page buffering.
758
+ * - `sequential` (default) is safest for latest-wins sources such as `PagedQueryStore`
759
+ * - `parallel` warms nearby pages faster when the source supports concurrent `updatePage(...)` calls
760
+ */
761
+ prefetchMode?: 'sequential' | 'parallel';
762
+ /** Load a specific page. */
763
+ updatePage: (page: number) => Promise<unknown>;
764
+ /** Update page size and load the first page. */
765
+ updatePageSize?: (size: number) => Promise<unknown>;
766
+ /** Update single-column sort and refresh the source. */
767
+ updateSort?: (sort?: GridSortItem<Data> | null) => Promise<unknown>;
768
+ /** Update multi-column sort and refresh the source. */
769
+ updateSorts?: (sort?: ReadonlyArray<GridSortItem<Data>> | null) => Promise<unknown>;
770
+ }
598
771
  /**
599
772
  * Union type representing grid selection configuration.
600
773
  *
@@ -663,6 +836,57 @@ type GridPinnedRow<Data extends AnyDict = AnyDict> = {
663
836
  }>;
664
837
  };
665
838
 
839
+ type HeaderTitleContent = {
840
+ title: string;
841
+ titleTemplate?: TemplateRef<HeaderTemplateData>;
842
+ } | {
843
+ title?: string;
844
+ titleTemplate: TemplateRef<HeaderTemplateData>;
845
+ };
846
+ type HeaderPresentation = {
847
+ align?: GridCellAlign;
848
+ };
849
+ /**
850
+ * Defines a header group configuration for grouping multiple columns under a single header.
851
+ *
852
+ * @template Data - The data type of the grid rows
853
+ *
854
+ * @property {string} key - Unique identifier for the header group
855
+ * @property {DataKey<Data>} from - The starting column key where the header group begins
856
+ * @property {DataKey<Data>} [to] - Optional ending column key where the header group ends.
857
+ * If not provided, the group spans only the 'from' column
858
+ * @property {string} [title] - Plain text title for the header group (when using PlainHeader)
859
+ * @property {GridCellAlign} [align] - Text alignment for the header group title (when using PlainHeader)
860
+ * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header group title
861
+ * (when using TemplatedHeader)
862
+ */
863
+ type GridHeaderGroup<Data extends AnyDict = AnyDict> = {
864
+ key: string;
865
+ from: DataKey<Data>;
866
+ to?: DataKey<Data>;
867
+ } & HeaderTitleContent & HeaderPresentation;
868
+ /**
869
+ * Internal normalized representation of a header group after processing.
870
+ * Used by the grid component to render header groups with calculated dimensions.
871
+ *
872
+ * @property {string} key - Unique identifier for the normalized header
873
+ * @property {string} [title] - Plain text title for the header
874
+ * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header title
875
+ * @property {GridCellAlign} [align] - Text alignment for the header title
876
+ * @property {number} widthPx - Calculated width of the header in pixels
877
+ * @property {string} [startKey] - Column key where the header group starts
878
+ * @property {string} [endKey] - Column key where the header group ends
879
+ */
880
+ type NormalizedHeader = {
881
+ key: string;
882
+ title?: string;
883
+ titleTemplate?: TemplateRef<HeaderTemplateData>;
884
+ align?: GridCellAlign;
885
+ widthPx: number;
886
+ startKey?: string;
887
+ endKey?: string;
888
+ };
889
+
666
890
  type DataGridTranslations = {
667
891
  emptyState: string;
668
892
  itemsPerPageLabel: string;
@@ -730,8 +954,19 @@ declare const DEFAULT_DATA_GRID_DEFAULTS: DataGridConfigProvider;
730
954
  declare const DATA_GRID_CONFIG: InjectionToken<DataGridConfigProvider>;
731
955
  type DataGridTypeTransformers<Data extends AnyDict = AnyDict> = Partial<Record<GridCellRendererType, GridCellTransformer<Data>>>;
732
956
  type DataGridTypeRenderers<Data extends AnyDict = AnyDict> = Partial<Record<GridCellRendererType, TemplateRef<RenderTemplateData<Data>>>>;
957
+ type DataGridHeaderTextContext<Data extends AnyDict = AnyDict> = {
958
+ kind: 'column';
959
+ column: GridColumn<Data>;
960
+ } | {
961
+ kind: 'group';
962
+ group: NormalizedHeader | Pick<NormalizedHeader, 'key' | 'title' | 'align'> | {
963
+ title?: string;
964
+ };
965
+ };
966
+ type DataGridHeaderTextResolver<Data extends AnyDict = AnyDict> = (text: string, context: DataGridHeaderTextContext<Data>) => string | Signal<string>;
733
967
  declare const DATA_GRID_TYPE_TRANSFORMERS: InjectionToken<Partial<Record<string, GridCellTransformer<AnyDict>>>>;
734
968
  declare const DATA_GRID_TYPE_RENDERERS: InjectionToken<Partial<Record<string, TemplateRef<RenderTemplateData<AnyDict>>>>>;
969
+ declare const DATA_GRID_HEADER_TEXT_RESOLVER: InjectionToken<DataGridHeaderTextResolver<AnyDict>>;
735
970
  /**
736
971
  * Provides a default configuration for Data Grid, overriding base settings.
737
972
  *
@@ -751,189 +986,24 @@ declare function provideDataGridTypeTransformers<Data extends AnyDict = AnyDict>
751
986
  * Registrations are merged with parent injector registrations, and later providers override earlier ones.
752
987
  */
753
988
  declare function provideDataGridTypeRenderers<Data extends AnyDict = AnyDict>(renderers: DataGridTypeRenderers<Data>): EnvironmentProviders;
754
-
755
- type DeclarativeColumnsResult<Data extends AnyDict = AnyDict> = {
756
- columns: GridColumns<Data>;
757
- rowCellTemplatesByKey: Map<string, TemplateRef<AnyType>>;
758
- };
759
-
760
989
  /**
761
- * Event emitted when pagination changes in the data grid.
990
+ * Provides a global header text resolver for all `re-data-grid` instances in the current injector scope.
762
991
  *
763
- * Contains information about the current page, page size, and optional sorting parameters.
764
- * Property names are compatible with PrimeNG table component conventions.
992
+ * Useful for integrating i18n layers without coupling the grid package to a specific translation library.
993
+ * The factory runs in Angular DI context, so it may use `inject(...)` to access consumer-side services.
765
994
  */
766
- type GridPageChangeEvent = {
767
- page: number;
768
- /** `pageSize`, named `rows` for compatibility with PrimeNG */
769
- rows: number;
770
- /** for compatibility with PrimeNG */
771
- sortField?: string;
772
- /** for compatibility with PrimeNG */
773
- sortOrder?: GridSortOrder;
774
- };
995
+ declare function provideDataGridHeaderTextResolver<Data extends AnyDict = AnyDict>(factory: () => DataGridHeaderTextResolver<Data>): EnvironmentProviders;
775
996
  /**
776
- * Event emitted when column sorting changes in the data grid.
777
- *
778
- * Contains information about the sorted column key and the sort direction.
779
- * The `key` property is type-safe and corresponds to actual data object keys.
780
- *
781
- * @template Data - Type of data objects in the grid
782
- */
783
- type GridSortEvent<Data = AnyDict> = {
784
- key: DataKey<Data>;
785
- order?: GridSortOrder;
786
- };
787
- /**
788
- * Single sort item used for multi-column sorting.
789
- *
790
- * @template Data - Type of data objects in the grid
791
- */
792
- type GridSortItem<Data = AnyDict> = {
793
- key: DataKey<Data>;
794
- order: GridSortOrder;
795
- };
796
- /**
797
- * Event emitted when multi-column sorting changes in the data grid.
798
- *
799
- * Contains an ordered list of sort items, where the order reflects
800
- * the priority of sorting (first item has highest priority).
997
+ * Advanced variant of `provideDataGridHeaderTextResolver(...)` that composes with the parent injector resolver.
801
998
  *
802
- * @template Data - Type of data objects in the grid
803
- */
804
- type GridMultiSortEvent<Data = AnyDict> = {
805
- sorts: ReadonlyArray<GridSortItem<Data>>;
806
- };
807
- /**
808
- * Event emitted when row selection changes in the data grid.
809
- *
810
- * Contains an array of selected values, which can be either string identifiers
811
- * or actual data values from the specified key column.
812
- *
813
- * @template Data - Type of data objects in the grid
814
- */
815
- type GridSelectEvent<Data extends AnyDict = AnyDict> = {
816
- selected: (string | Data[DataKey<Data>])[];
817
- };
818
- /**
819
- * Event emitted when a row is clicked in the data grid.
820
- *
821
- * Provides access to the clicked row's data object and its numeric index position
822
- * within the current grid data set.
823
- *
824
- * @template Data - Type of data objects in the grid
825
- */
826
- type GridRowClickEvent<Data extends AnyDict = AnyDict> = {
827
- row: Data;
828
- index: number;
829
- event: Event;
830
- };
831
- /**
832
- * Event emitted when a specific cell is clicked in the data grid.
833
- *
834
- * Provides detailed information about the clicked cell, including the row data,
835
- * column configuration, and the row's numeric index position.
836
- *
837
- * @template Data - Type of data objects in the grid
838
- */
839
- type GridCellClickEvent<Data extends AnyDict = AnyDict> = {
840
- row: Data;
841
- col: GridColumn<Data>;
842
- index: number;
843
- event: Event;
844
- };
845
- /**
846
- * Event emitted when a row is right-clicked (context menu) in the data grid.
847
- *
848
- * Provides access to the clicked row's data object, its index, and the native mouse event.
999
+ * Use this only when the current scope should extend or wrap an existing header resolver
1000
+ * instead of replacing it completely.
849
1001
  */
850
- type GridRowContextEvent<Data extends AnyDict = AnyDict> = {
851
- row: Data;
852
- index: number;
853
- event: MouseEvent;
854
- };
855
- /**
856
- * Event emitted when a specific cell is right-clicked (context menu) in the data grid.
857
- *
858
- * Provides access to the clicked cell, row data, index, and the native mouse event.
859
- */
860
- type GridCellContextEvent<Data extends AnyDict = AnyDict> = {
861
- row: Data;
862
- col: GridColumn<Data>;
863
- index: number;
864
- event: MouseEvent;
865
- };
866
- /**
867
- * Event emitted when a row is double-clicked in the data grid.
868
- *
869
- * Provides access to the clicked row's data object, its index, and the native mouse event.
870
- */
871
- type GridRowDoubleClickEvent<Data extends AnyDict = AnyDict> = {
872
- row: Data;
873
- index: number;
874
- event: MouseEvent;
875
- };
876
- /**
877
- * Event emitted when a specific cell is double-clicked in the data grid.
878
- *
879
- * Provides access to the clicked cell, row data, index, and the native mouse event.
880
- */
881
- type GridCellDoubleClickEvent<Data extends AnyDict = AnyDict> = {
882
- row: Data;
883
- col: GridColumn<Data>;
884
- index: number;
885
- event: MouseEvent;
886
- };
1002
+ declare function provideDataGridHeaderTextResolverWithParent<Data extends AnyDict = AnyDict>(factory: (parent: DataGridHeaderTextResolver<Data>) => DataGridHeaderTextResolver<Data>): EnvironmentProviders;
887
1003
 
888
- type HeaderTitleContent = {
889
- title: string;
890
- titleTemplate?: TemplateRef<HeaderTemplateData>;
891
- } | {
892
- title?: string;
893
- titleTemplate: TemplateRef<HeaderTemplateData>;
894
- };
895
- type HeaderPresentation = {
896
- align?: GridCellAlign;
897
- };
898
- /**
899
- * Defines a header group configuration for grouping multiple columns under a single header.
900
- *
901
- * @template Data - The data type of the grid rows
902
- *
903
- * @property {string} key - Unique identifier for the header group
904
- * @property {DataKey<Data>} from - The starting column key where the header group begins
905
- * @property {DataKey<Data>} [to] - Optional ending column key where the header group ends.
906
- * If not provided, the group spans only the 'from' column
907
- * @property {string} [title] - Plain text title for the header group (when using PlainHeader)
908
- * @property {GridCellAlign} [align] - Text alignment for the header group title (when using PlainHeader)
909
- * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header group title
910
- * (when using TemplatedHeader)
911
- */
912
- type GridHeaderGroup<Data extends AnyDict = AnyDict> = {
913
- key: string;
914
- from: DataKey<Data>;
915
- to?: DataKey<Data>;
916
- } & HeaderTitleContent & HeaderPresentation;
917
- /**
918
- * Internal normalized representation of a header group after processing.
919
- * Used by the grid component to render header groups with calculated dimensions.
920
- *
921
- * @property {string} key - Unique identifier for the normalized header
922
- * @property {string} [title] - Plain text title for the header
923
- * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header title
924
- * @property {GridCellAlign} [align] - Text alignment for the header title
925
- * @property {number} widthPx - Calculated width of the header in pixels
926
- * @property {string} [startKey] - Column key where the header group starts
927
- * @property {string} [endKey] - Column key where the header group ends
928
- */
929
- type NormalizedHeader = {
930
- key: string;
931
- title?: string;
932
- titleTemplate?: TemplateRef<HeaderTemplateData>;
933
- align?: GridCellAlign;
934
- widthPx: number;
935
- startKey?: string;
936
- endKey?: string;
1004
+ type DeclarativeColumnsResult<Data extends AnyDict = AnyDict> = {
1005
+ columns: GridColumns<Data>;
1006
+ rowCellTemplatesByKey: Map<string, TemplateRef<AnyType>>;
937
1007
  };
938
1008
 
939
1009
  /**
@@ -1208,7 +1278,10 @@ type TooltipState = {
1208
1278
  * ```
1209
1279
  */
1210
1280
  declare class DataGrid<Data extends AnyDict> {
1281
+ private static nextAriaId;
1211
1282
  protected defaults: _reforgium_data_grid.DataGridConfigProvider;
1283
+ protected headerTextResolver: DataGridHeaderTextResolver<Data>;
1284
+ private resolvedHeaderTextCache;
1212
1285
  /**
1213
1286
  * Array of data to display in the table.
1214
1287
  *
@@ -1216,6 +1289,14 @@ declare class DataGrid<Data extends AnyDict> {
1216
1289
  * only visible rows using virtual scrolling.
1217
1290
  */
1218
1291
  data: _angular_core.InputSignal<Data[]>;
1292
+ /**
1293
+ * Optional page-oriented source for direct grid/store integration.
1294
+ *
1295
+ * When provided, the grid reads rows from the source, requests pages directly,
1296
+ * and in infinity mode keeps its own internal page buffer instead of requiring
1297
+ * an ever-growing accumulated `data` array from the parent.
1298
+ */
1299
+ source: _angular_core.InputSignal<GridPagedDataSource<Data> | null>;
1219
1300
  /**
1220
1301
  * Column configuration for the table.
1221
1302
  *
@@ -1378,7 +1459,7 @@ declare class DataGrid<Data extends AnyDict> {
1378
1459
  * @example
1379
1460
  * ```typescript
1380
1461
  * onSortChange(event: GridSortEvent<User>) {
1381
- * this.data = sortBy(this.data, event.key, event.order);
1462
+ * this.data = sortBy(this.data, event.sort, event.order);
1382
1463
  * }
1383
1464
  * ```
1384
1465
  */
@@ -1438,11 +1519,13 @@ declare class DataGrid<Data extends AnyDict> {
1438
1519
  private selectionReconcileFeature;
1439
1520
  private gridApiFeature;
1440
1521
  private tooltipAdapterFeature;
1522
+ private sourceDataFeature;
1441
1523
  private virtualScrollFeature;
1442
1524
  private resizeObserverFeature;
1443
1525
  private scrollLoopFeature;
1444
1526
  private lifecycleInitFeature;
1445
1527
  private stickyOrchestrationFeature;
1528
+ private gapLoaderFeature;
1446
1529
  private headerMeasureFeature;
1447
1530
  private selectionFeatureRef?;
1448
1531
  private selectionFeaturePromise?;
@@ -1466,12 +1549,12 @@ declare class DataGrid<Data extends AnyDict> {
1466
1549
  private expanderIcSlotRefs;
1467
1550
  private stickyRowSlotRefs;
1468
1551
  private rowSlotRefs;
1469
- protected emptyTpl: _angular_core.Signal<DataGridCellEmptyDirective | undefined>;
1470
- protected loadingTpl: _angular_core.Signal<DataGridCellLoadingDirective>;
1471
- protected sortTpl: _angular_core.Signal<DataGridSortIconDirective | undefined>;
1472
- protected expanderTpl: _angular_core.Signal<DataGridExpanderIconDirective | undefined>;
1473
- protected stickyRowTpl: _angular_core.Signal<DataGridStickyRowDirective<any> | undefined>;
1474
- protected rowTpl: _angular_core.Signal<DataGridRowDirective<any> | undefined>;
1552
+ protected emptyTpl: Signal<DataGridCellEmptyDirective | undefined>;
1553
+ protected loadingTpl: Signal<DataGridCellLoadingDirective>;
1554
+ protected sortTpl: Signal<DataGridSortIconDirective | undefined>;
1555
+ protected expanderTpl: Signal<DataGridExpanderIconDirective | undefined>;
1556
+ protected stickyRowTpl: Signal<DataGridStickyRowDirective<any> | undefined>;
1557
+ protected rowTpl: Signal<DataGridRowDirective<any> | undefined>;
1475
1558
  protected renderSlots: _angular_core.WritableSignal<number[]>;
1476
1559
  protected renderCount: number;
1477
1560
  private lastStartIndex;
@@ -1480,21 +1563,30 @@ declare class DataGrid<Data extends AnyDict> {
1480
1563
  protected headerHeight: _angular_core.WritableSignal<number>;
1481
1564
  private tooltipEl;
1482
1565
  protected tooltipState: _angular_core.WritableSignal<TooltipState>;
1566
+ protected activeTooltipCellId: _angular_core.WritableSignal<string | null>;
1567
+ protected readonly tooltipId: string;
1568
+ protected readonly expanderRegionId: string;
1483
1569
  protected stickyRowIndex: _angular_core.WritableSignal<number | null>;
1484
1570
  protected stickyRowTopPx: _angular_core.WritableSignal<number>;
1485
- protected stickyRowData: _angular_core.Signal<Data | null>;
1571
+ protected stickyRowData: Signal<Data | null>;
1486
1572
  private stickyIndexes;
1487
1573
  private contentInitialized;
1488
1574
  protected isColumnResizing: _angular_core.WritableSignal<boolean>;
1489
1575
  protected expanderMap: _angular_core.WritableSignal<Map<DataKey<Data>, boolean>>;
1490
- protected declarativeColumns: _angular_core.Signal<DeclarativeColumnsResult<Data>>;
1491
- protected sourceColumns: _angular_core.Signal<GridColumn<Data>[]>;
1576
+ protected declarativeColumns: Signal<DeclarativeColumnsResult<Data>>;
1577
+ protected sourceColumns: Signal<GridColumn<Data>[]>;
1492
1578
  private slotsFeature;
1493
- protected extendedColumns: _angular_core.Signal<GridColumn<Data>[]>;
1579
+ protected extendedColumns: Signal<GridColumn<Data>[]>;
1494
1580
  /**
1495
1581
  * Computed CSS height value based on height setting.
1496
1582
  */
1497
- styleHeight: _angular_core.Signal<string>;
1583
+ styleHeight: Signal<string>;
1584
+ protected resolvedLoading: Signal<boolean>;
1585
+ protected totalRowCount: Signal<number>;
1586
+ protected selectionRows: Signal<Data[]>;
1587
+ protected ariaColCount: Signal<number>;
1588
+ protected ariaHeaderRowCount: Signal<number>;
1589
+ protected ariaRowCount: Signal<number>;
1498
1590
  private hideSbTimeout?;
1499
1591
  private scrollbarRafId;
1500
1592
  private stickyRafId;
@@ -1502,7 +1594,7 @@ declare class DataGrid<Data extends AnyDict> {
1502
1594
  currentSortOrder: GridSortOrder;
1503
1595
  currentSorts: GridSortItem<Data>[];
1504
1596
  private currentSortMap;
1505
- private subscription;
1597
+ private cleanupCallbacks;
1506
1598
  constructor();
1507
1599
  /** Clears current selection and emits `selectChange`. */
1508
1600
  clearSelection(): void;
@@ -1589,8 +1681,42 @@ declare class DataGrid<Data extends AnyDict> {
1589
1681
  protected isActiveSort(col: GridColumn<Data>): boolean;
1590
1682
  protected showTooltip(event: MouseEvent, row: Data, col: GridColumn<Data>, index: number): void;
1591
1683
  protected hideTooltip(): void;
1684
+ protected onTooltipEnter(event: MouseEvent, row: Data, col: GridColumn<Data>, index: number, cellId: string): void;
1592
1685
  protected isStickyRowIndex(index: number): boolean;
1593
1686
  protected resolveRowTemplate(row: Data, index: number): TemplateRef<AnyType> | null;
1687
+ protected rowAt(index: number): Data | null;
1688
+ protected shouldRenderLoadingRow(index: number, topGap: {
1689
+ start: number;
1690
+ count: number;
1691
+ } | null, bottomGap: {
1692
+ start: number;
1693
+ count: number;
1694
+ } | null): boolean;
1695
+ protected topGapLoader(): {
1696
+ start: number;
1697
+ count: number;
1698
+ } | null;
1699
+ protected bottomGapLoader(): {
1700
+ start: number;
1701
+ count: number;
1702
+ } | null;
1703
+ protected resolveHeaderText(col: GridColumn<Data>): string;
1704
+ protected ariaDataRowIndex(index: number): number;
1705
+ protected ariaPinnedTopRowIndex(index: number): number;
1706
+ protected ariaPinnedBottomRowIndex(index: number): number;
1707
+ protected ariaSortLabel(col: GridColumn<Data>): string;
1708
+ protected ariaExpandLabel(col: GridColumn<Data>): string;
1709
+ protected ariaResizeLabel(col: GridColumn<Data>): string;
1710
+ protected ariaHeaderGroupColIndex(group: NormalizedHeader): number | null;
1711
+ protected cellAriaId(colKey: string, rowIndex: number, isPinned: boolean): string;
1712
+ protected isTooltipTarget(cellId: string): boolean;
1713
+ protected resolveHeaderGroupTitle(group: GridHeaderGroup<Data>): string;
1714
+ protected resolveHeaderGroupTitle(group: {
1715
+ title?: string;
1716
+ }): string;
1717
+ private readResolvedHeaderText;
1718
+ private activePageSize;
1719
+ private requestPage;
1594
1720
  private initVm;
1595
1721
  private initSelector;
1596
1722
  private initRefs;
@@ -1599,6 +1725,7 @@ declare class DataGrid<Data extends AnyDict> {
1599
1725
  private initObserver;
1600
1726
  private initExpander;
1601
1727
  private setCurrentSorts;
1728
+ private syncSortFromSource;
1602
1729
  private loadSelectionFeature;
1603
1730
  private loadTooltipFeature;
1604
1731
  private loadOverlayScrollFeature;
@@ -1613,9 +1740,9 @@ declare class DataGrid<Data extends AnyDict> {
1613
1740
  private updateStickyRow;
1614
1741
  private updateStickyFromScroll;
1615
1742
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataGrid<any>, never>;
1616
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataGrid<any>, "re-data-grid", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "isRowSticky": { "alias": "isRowSticky"; "required": false; "isSignal": true; }; "isRowDisabled": { "alias": "isRowDisabled"; "required": false; "isSignal": true; }; "getRowTemplate": { "alias": "getRowTemplate"; "required": false; "isSignal": true; }; "hasIndexColumn": { "alias": "hasIndexColumn"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "lockVerticalScroll": { "alias": "lockVerticalScroll"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMode": { "alias": "loadingMode"; "required": false; "isSignal": true; }; "deferContent": { "alias": "deferContent"; "required": false; "isSignal": true; }; "deferHeader": { "alias": "deferHeader"; "required": false; "isSignal": true; }; "deferPinned": { "alias": "deferPinned"; "required": false; "isSignal": true; }; "deferCells": { "alias": "deferCells"; "required": false; "isSignal": true; }; "deferIcons": { "alias": "deferIcons"; "required": false; "isSignal": true; }; "deferTooltip": { "alias": "deferTooltip"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "pageStartFromZero": { "alias": "pageStartFromZero"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "sortChange": "sortChange"; "multiSortChange": "multiSortChange"; "selectChange": "selectChange"; "rowClick": "rowClick"; "rowContext": "rowContext"; "rowDoubleClick": "rowDoubleClick"; "cellClick": "cellClick"; "cellContext": "cellContext"; "cellDoubleClick": "cellDoubleClick"; }, ["cellTypedSlotRefs", "cellDataSlotRefs", "declarativeColumnRefs", "headerSlotRefs", "emptySlotRefs", "loadingSlotRefs", "sortIcSlotRefs", "expanderIcSlotRefs", "stickyRowSlotRefs", "rowSlotRefs"], never, true, never>;
1743
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataGrid<any>, "re-data-grid", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "source": { "alias": "source"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "isRowSticky": { "alias": "isRowSticky"; "required": false; "isSignal": true; }; "isRowDisabled": { "alias": "isRowDisabled"; "required": false; "isSignal": true; }; "getRowTemplate": { "alias": "getRowTemplate"; "required": false; "isSignal": true; }; "hasIndexColumn": { "alias": "hasIndexColumn"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "lockVerticalScroll": { "alias": "lockVerticalScroll"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMode": { "alias": "loadingMode"; "required": false; "isSignal": true; }; "deferContent": { "alias": "deferContent"; "required": false; "isSignal": true; }; "deferHeader": { "alias": "deferHeader"; "required": false; "isSignal": true; }; "deferPinned": { "alias": "deferPinned"; "required": false; "isSignal": true; }; "deferCells": { "alias": "deferCells"; "required": false; "isSignal": true; }; "deferIcons": { "alias": "deferIcons"; "required": false; "isSignal": true; }; "deferTooltip": { "alias": "deferTooltip"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "pageStartFromZero": { "alias": "pageStartFromZero"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "sortChange": "sortChange"; "multiSortChange": "multiSortChange"; "selectChange": "selectChange"; "rowClick": "rowClick"; "rowContext": "rowContext"; "rowDoubleClick": "rowDoubleClick"; "cellClick": "cellClick"; "cellContext": "cellContext"; "cellDoubleClick": "cellDoubleClick"; }, ["cellTypedSlotRefs", "cellDataSlotRefs", "declarativeColumnRefs", "headerSlotRefs", "emptySlotRefs", "loadingSlotRefs", "sortIcSlotRefs", "expanderIcSlotRefs", "stickyRowSlotRefs", "rowSlotRefs"], never, true, never>;
1617
1744
  }
1618
1745
 
1619
- export { DATA_GRID_CONFIG, DATA_GRID_TYPE_RENDERERS, DATA_GRID_TYPE_TRANSFORMERS, DEFAULT_DATA_GRID_DEFAULTS, DataGrid, DataGridCellEmptyDirective, DataGridCellLoadingDirective, DataGridCellTemplateDirective, DataGridDeclarativeCellDirective, DataGridDeclarativeColumn, DataGridDeclarativeHeaderDirective, DataGridExpanderIconDirective, DataGridHeaderTemplateDirective, DataGridRowDirective, DataGridSortIconDirective, DataGridStickyRowDirective, DataGridTypeCellTemplateDirective, provideDataGridDefaults, provideDataGridTypeRenderers, provideDataGridTypeTransformers };
1620
- export type { BaseGridColumn, DataGridConfigProvider, DataGridRowTemplateContext, DataGridStickyRowTemplateContext, DataGridTypeRenderers, DataGridTypeTransformers, DeclarativeColumnDef, GridBuiltInCellType, GridCellAlign, GridCellClickEvent, GridCellContextEvent, GridCellDoubleClickEvent, GridCellRenderer, GridCellRendererType, GridCellTransformer, GridCellTransformerContext, GridCellValueContext, GridColumn, GridColumnTooltip, GridColumns, GridHeaderGroup, GridMultiSortEvent, GridPageChangeEvent, GridPaginationMode, GridPinnedPosition, GridPinnedRow, GridPinnedRows, GridRowClickEvent, GridRowContextEvent, GridRowDoubleClickEvent, GridSelectEvent, GridSelectMode, GridSelection, GridSortEvent, GridSortItem, GridSortMode, GridSortOrder, GridStickySide, GridTooltipContext, HeaderTemplateData, RenderTemplateData };
1746
+ export { DATA_GRID_CONFIG, DATA_GRID_HEADER_TEXT_RESOLVER, DATA_GRID_TYPE_RENDERERS, DATA_GRID_TYPE_TRANSFORMERS, DEFAULT_DATA_GRID_DEFAULTS, DataGrid, DataGridCellEmptyDirective, DataGridCellLoadingDirective, DataGridCellTemplateDirective, DataGridDeclarativeCellDirective, DataGridDeclarativeColumn, DataGridDeclarativeHeaderDirective, DataGridExpanderIconDirective, DataGridHeaderTemplateDirective, DataGridRowDirective, DataGridSortIconDirective, DataGridStickyRowDirective, DataGridTypeCellTemplateDirective, provideDataGridDefaults, provideDataGridHeaderTextResolver, provideDataGridHeaderTextResolverWithParent, provideDataGridTypeRenderers, provideDataGridTypeTransformers };
1747
+ export type { BaseGridColumn, DataGridConfigProvider, DataGridHeaderTextContext, DataGridHeaderTextResolver, DataGridRowTemplateContext, DataGridStickyRowTemplateContext, DataGridTypeRenderers, DataGridTypeTransformers, DeclarativeColumnDef, GridBuiltInCellType, GridCellAlign, GridCellClickEvent, GridCellContextEvent, GridCellDoubleClickEvent, GridCellRenderer, GridCellRendererType, GridCellTransformer, GridCellTransformerContext, GridCellValueContext, GridColumn, GridColumnTooltip, GridColumns, GridHeaderGroup, GridMultiSortEvent, GridPageChangeEvent, GridPagedDataSource, GridPaginationMode, GridPinnedPosition, GridPinnedRow, GridPinnedRows, GridRowClickEvent, GridRowContextEvent, GridRowDoubleClickEvent, GridSelectEvent, GridSelectMode, GridSelection, GridSortEvent, GridSortItem, GridSortMode, GridSortOrder, GridStickySide, GridTooltipContext, HeaderTemplateData, RenderTemplateData };
1621
1748
  //# sourceMappingURL=reforgium-data-grid.d.ts.map