@reforgium/data-grid 2.5.4 → 3.1.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,148 @@ 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
+ /**
681
+ * Event emitted when a column resize drag ends in the data grid.
682
+ *
683
+ * Provides the column key and the final pixel width after the user releases the resize handle.
684
+ * Use this to persist column widths (e.g. to localStorage or a user preferences API).
685
+ *
686
+ * @template Data - Type of data objects in the grid
687
+ */
688
+ type GridColumnResizeEndEvent<Data extends AnyDict = AnyDict> = {
689
+ /** Key of the resized column. */
690
+ key: DataKey<Data>;
691
+ /** Final column width in pixels. */
692
+ width: number;
693
+ };
694
+
553
695
  /**
554
696
  * Defines how pagination is displayed and handled in the data grid.
555
697
  *
@@ -595,6 +737,51 @@ type GridSortOrder = 'asc' | 'desc';
595
737
  * @template Data - Type of data objects displayed in the grid rows
596
738
  */
597
739
  type GridPinnedRows<Data extends AnyDict = AnyDict> = GridPinnedRow<Data>[];
740
+ /**
741
+ * Page-oriented source contract for grids that fetch data externally.
742
+ *
743
+ * Intended for pagination/infinity scenarios where the grid should request pages
744
+ * directly instead of receiving one ever-growing accumulated array.
745
+ *
746
+ * @template Data - Type of data objects displayed in the grid rows
747
+ */
748
+ interface GridPagedDataSource<Data extends AnyDict = AnyDict> {
749
+ /** Current page payload. */
750
+ items: Signal<Data[]>;
751
+ /** Loading flag of the current request lifecycle. */
752
+ loading: Signal<boolean>;
753
+ /** Optional last request error. */
754
+ error?: Signal<unknown | null>;
755
+ /** Current page index (0-based). */
756
+ page: number;
757
+ /** Current page size. */
758
+ pageSize: number;
759
+ /**
760
+ * Total number of rows available in the dataset.
761
+ *
762
+ * Optional in infinity mode. When omitted, the grid treats the dataset as open-ended
763
+ * until it receives a short page (`items.length < pageSize`) and then fixes the final size.
764
+ */
765
+ totalElements?: number;
766
+ /** Optional dataset revision signal. Increment to force the grid to clear its local page buffer. */
767
+ version?: Signal<number>;
768
+ /** Current source-side sort state. */
769
+ sort?: ReadonlyArray<GridSortItem<Data>>;
770
+ /**
771
+ * Optional prefetch strategy for infinity mode page buffering.
772
+ * - `sequential` (default) is safest for latest-wins sources such as `PagedQueryStore`
773
+ * - `parallel` warms nearby pages faster when the source supports concurrent `updatePage(...)` calls
774
+ */
775
+ prefetchMode?: 'sequential' | 'parallel';
776
+ /** Load a specific page. */
777
+ updatePage: (page: number) => Promise<unknown>;
778
+ /** Update page size and load the first page. */
779
+ updatePageSize?: (size: number) => Promise<unknown>;
780
+ /** Update single-column sort and refresh the source. */
781
+ updateSort?: (sort?: GridSortItem<Data> | null) => Promise<unknown>;
782
+ /** Update multi-column sort and refresh the source. */
783
+ updateSorts?: (sort?: ReadonlyArray<GridSortItem<Data>> | null) => Promise<unknown>;
784
+ }
598
785
  /**
599
786
  * Union type representing grid selection configuration.
600
787
  *
@@ -663,6 +850,57 @@ type GridPinnedRow<Data extends AnyDict = AnyDict> = {
663
850
  }>;
664
851
  };
665
852
 
853
+ type HeaderTitleContent = {
854
+ title: string;
855
+ titleTemplate?: TemplateRef<HeaderTemplateData>;
856
+ } | {
857
+ title?: string;
858
+ titleTemplate: TemplateRef<HeaderTemplateData>;
859
+ };
860
+ type HeaderPresentation = {
861
+ align?: GridCellAlign;
862
+ };
863
+ /**
864
+ * Defines a header group configuration for grouping multiple columns under a single header.
865
+ *
866
+ * @template Data - The data type of the grid rows
867
+ *
868
+ * @property {string} key - Unique identifier for the header group
869
+ * @property {DataKey<Data>} from - The starting column key where the header group begins
870
+ * @property {DataKey<Data>} [to] - Optional ending column key where the header group ends.
871
+ * If not provided, the group spans only the 'from' column
872
+ * @property {string} [title] - Plain text title for the header group (when using PlainHeader)
873
+ * @property {GridCellAlign} [align] - Text alignment for the header group title (when using PlainHeader)
874
+ * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header group title
875
+ * (when using TemplatedHeader)
876
+ */
877
+ type GridHeaderGroup<Data extends AnyDict = AnyDict> = {
878
+ key: string;
879
+ from: DataKey<Data>;
880
+ to?: DataKey<Data>;
881
+ } & HeaderTitleContent & HeaderPresentation;
882
+ /**
883
+ * Internal normalized representation of a header group after processing.
884
+ * Used by the grid component to render header groups with calculated dimensions.
885
+ *
886
+ * @property {string} key - Unique identifier for the normalized header
887
+ * @property {string} [title] - Plain text title for the header
888
+ * @property {TemplateRef<HeaderTemplateData>} [titleTemplate] - Custom template for rendering the header title
889
+ * @property {GridCellAlign} [align] - Text alignment for the header title
890
+ * @property {number} widthPx - Calculated width of the header in pixels
891
+ * @property {string} [startKey] - Column key where the header group starts
892
+ * @property {string} [endKey] - Column key where the header group ends
893
+ */
894
+ type NormalizedHeader = {
895
+ key: string;
896
+ title?: string;
897
+ titleTemplate?: TemplateRef<HeaderTemplateData>;
898
+ align?: GridCellAlign;
899
+ widthPx: number;
900
+ startKey?: string;
901
+ endKey?: string;
902
+ };
903
+
666
904
  type DataGridTranslations = {
667
905
  emptyState: string;
668
906
  itemsPerPageLabel: string;
@@ -730,8 +968,19 @@ declare const DEFAULT_DATA_GRID_DEFAULTS: DataGridConfigProvider;
730
968
  declare const DATA_GRID_CONFIG: InjectionToken<DataGridConfigProvider>;
731
969
  type DataGridTypeTransformers<Data extends AnyDict = AnyDict> = Partial<Record<GridCellRendererType, GridCellTransformer<Data>>>;
732
970
  type DataGridTypeRenderers<Data extends AnyDict = AnyDict> = Partial<Record<GridCellRendererType, TemplateRef<RenderTemplateData<Data>>>>;
971
+ type DataGridHeaderTextContext<Data extends AnyDict = AnyDict> = {
972
+ kind: 'column';
973
+ column: GridColumn<Data>;
974
+ } | {
975
+ kind: 'group';
976
+ group: NormalizedHeader | Pick<NormalizedHeader, 'key' | 'title' | 'align'> | {
977
+ title?: string;
978
+ };
979
+ };
980
+ type DataGridHeaderTextResolver<Data extends AnyDict = AnyDict> = (text: string, context: DataGridHeaderTextContext<Data>) => string | Signal<string>;
733
981
  declare const DATA_GRID_TYPE_TRANSFORMERS: InjectionToken<Partial<Record<string, GridCellTransformer<AnyDict>>>>;
734
982
  declare const DATA_GRID_TYPE_RENDERERS: InjectionToken<Partial<Record<string, TemplateRef<RenderTemplateData<AnyDict>>>>>;
983
+ declare const DATA_GRID_HEADER_TEXT_RESOLVER: InjectionToken<DataGridHeaderTextResolver<AnyDict>>;
735
984
  /**
736
985
  * Provides a default configuration for Data Grid, overriding base settings.
737
986
  *
@@ -751,189 +1000,24 @@ declare function provideDataGridTypeTransformers<Data extends AnyDict = AnyDict>
751
1000
  * Registrations are merged with parent injector registrations, and later providers override earlier ones.
752
1001
  */
753
1002
  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
- /**
761
- * Event emitted when pagination changes in the data grid.
762
- *
763
- * Contains information about the current page, page size, and optional sorting parameters.
764
- * Property names are compatible with PrimeNG table component conventions.
765
- */
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
- };
775
- /**
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
1003
  /**
788
- * Single sort item used for multi-column sorting.
1004
+ * Provides a global header text resolver for all `re-data-grid` instances in the current injector scope.
789
1005
  *
790
- * @template Data - Type of data objects in the grid
1006
+ * Useful for integrating i18n layers without coupling the grid package to a specific translation library.
1007
+ * The factory runs in Angular DI context, so it may use `inject(...)` to access consumer-side services.
791
1008
  */
792
- type GridSortItem<Data = AnyDict> = {
793
- key: DataKey<Data>;
794
- order: GridSortOrder;
795
- };
1009
+ declare function provideDataGridHeaderTextResolver<Data extends AnyDict = AnyDict>(factory: () => DataGridHeaderTextResolver<Data>): EnvironmentProviders;
796
1010
  /**
797
- * Event emitted when multi-column sorting changes in the data grid.
1011
+ * Advanced variant of `provideDataGridHeaderTextResolver(...)` that composes with the parent injector resolver.
798
1012
  *
799
- * Contains an ordered list of sort items, where the order reflects
800
- * the priority of sorting (first item has highest priority).
801
- *
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.
1013
+ * Use this only when the current scope should extend or wrap an existing header resolver
1014
+ * instead of replacing it completely.
849
1015
  */
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
- };
1016
+ declare function provideDataGridHeaderTextResolverWithParent<Data extends AnyDict = AnyDict>(factory: (parent: DataGridHeaderTextResolver<Data>) => DataGridHeaderTextResolver<Data>): EnvironmentProviders;
887
1017
 
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;
1018
+ type DeclarativeColumnsResult<Data extends AnyDict = AnyDict> = {
1019
+ columns: GridColumns<Data>;
1020
+ rowCellTemplatesByKey: Map<string, TemplateRef<AnyType>>;
937
1021
  };
938
1022
 
939
1023
  /**
@@ -1208,7 +1292,10 @@ type TooltipState = {
1208
1292
  * ```
1209
1293
  */
1210
1294
  declare class DataGrid<Data extends AnyDict> {
1295
+ private static nextAriaId;
1211
1296
  protected defaults: _reforgium_data_grid.DataGridConfigProvider;
1297
+ protected headerTextResolver: DataGridHeaderTextResolver<Data>;
1298
+ private resolvedHeaderTextCache;
1212
1299
  /**
1213
1300
  * Array of data to display in the table.
1214
1301
  *
@@ -1216,6 +1303,14 @@ declare class DataGrid<Data extends AnyDict> {
1216
1303
  * only visible rows using virtual scrolling.
1217
1304
  */
1218
1305
  data: _angular_core.InputSignal<Data[]>;
1306
+ /**
1307
+ * Optional page-oriented source for direct grid/store integration.
1308
+ *
1309
+ * When provided, the grid reads rows from the source, requests pages directly,
1310
+ * and in infinity mode keeps its own internal page buffer instead of requiring
1311
+ * an ever-growing accumulated `data` array from the parent.
1312
+ */
1313
+ source: _angular_core.InputSignal<GridPagedDataSource<Data> | null>;
1219
1314
  /**
1220
1315
  * Column configuration for the table.
1221
1316
  *
@@ -1378,7 +1473,7 @@ declare class DataGrid<Data extends AnyDict> {
1378
1473
  * @example
1379
1474
  * ```typescript
1380
1475
  * onSortChange(event: GridSortEvent<User>) {
1381
- * this.data = sortBy(this.data, event.key, event.order);
1476
+ * this.data = sortBy(this.data, event.sort, event.order);
1382
1477
  * }
1383
1478
  * ```
1384
1479
  */
@@ -1427,6 +1522,11 @@ declare class DataGrid<Data extends AnyDict> {
1427
1522
  * Contains the clicked row, column configuration, row index, and the native mouse event.
1428
1523
  */
1429
1524
  cellDoubleClick: _angular_core.OutputEmitterRef<GridCellDoubleClickEvent<Data>>;
1525
+ /**
1526
+ * Emitted when the user finishes resizing a column (on mouseup).
1527
+ * Use this to persist column widths across sessions.
1528
+ */
1529
+ columnResizeEnd: _angular_core.OutputEmitterRef<GridColumnResizeEndEvent<Data>>;
1430
1530
  vm: DataGridVm<Data>;
1431
1531
  selector: Selector<Data>;
1432
1532
  private sortFeature;
@@ -1438,11 +1538,13 @@ declare class DataGrid<Data extends AnyDict> {
1438
1538
  private selectionReconcileFeature;
1439
1539
  private gridApiFeature;
1440
1540
  private tooltipAdapterFeature;
1541
+ private sourceDataFeature;
1441
1542
  private virtualScrollFeature;
1442
1543
  private resizeObserverFeature;
1443
1544
  private scrollLoopFeature;
1444
1545
  private lifecycleInitFeature;
1445
1546
  private stickyOrchestrationFeature;
1547
+ private gapLoaderFeature;
1446
1548
  private headerMeasureFeature;
1447
1549
  private selectionFeatureRef?;
1448
1550
  private selectionFeaturePromise?;
@@ -1466,12 +1568,12 @@ declare class DataGrid<Data extends AnyDict> {
1466
1568
  private expanderIcSlotRefs;
1467
1569
  private stickyRowSlotRefs;
1468
1570
  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>;
1571
+ protected emptyTpl: Signal<DataGridCellEmptyDirective | undefined>;
1572
+ protected loadingTpl: Signal<DataGridCellLoadingDirective>;
1573
+ protected sortTpl: Signal<DataGridSortIconDirective | undefined>;
1574
+ protected expanderTpl: Signal<DataGridExpanderIconDirective | undefined>;
1575
+ protected stickyRowTpl: Signal<DataGridStickyRowDirective<any> | undefined>;
1576
+ protected rowTpl: Signal<DataGridRowDirective<any> | undefined>;
1475
1577
  protected renderSlots: _angular_core.WritableSignal<number[]>;
1476
1578
  protected renderCount: number;
1477
1579
  private lastStartIndex;
@@ -1480,21 +1582,30 @@ declare class DataGrid<Data extends AnyDict> {
1480
1582
  protected headerHeight: _angular_core.WritableSignal<number>;
1481
1583
  private tooltipEl;
1482
1584
  protected tooltipState: _angular_core.WritableSignal<TooltipState>;
1585
+ protected activeTooltipCellId: _angular_core.WritableSignal<string | null>;
1586
+ protected readonly tooltipId: string;
1587
+ protected readonly expanderRegionId: string;
1483
1588
  protected stickyRowIndex: _angular_core.WritableSignal<number | null>;
1484
1589
  protected stickyRowTopPx: _angular_core.WritableSignal<number>;
1485
- protected stickyRowData: _angular_core.Signal<Data | null>;
1590
+ protected stickyRowData: Signal<Data | null>;
1486
1591
  private stickyIndexes;
1487
1592
  private contentInitialized;
1488
1593
  protected isColumnResizing: _angular_core.WritableSignal<boolean>;
1489
1594
  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>[]>;
1595
+ protected declarativeColumns: Signal<DeclarativeColumnsResult<Data>>;
1596
+ protected sourceColumns: Signal<GridColumn<Data>[]>;
1492
1597
  private slotsFeature;
1493
- protected extendedColumns: _angular_core.Signal<GridColumn<Data>[]>;
1598
+ protected extendedColumns: Signal<GridColumn<Data>[]>;
1494
1599
  /**
1495
1600
  * Computed CSS height value based on height setting.
1496
1601
  */
1497
- styleHeight: _angular_core.Signal<string>;
1602
+ styleHeight: Signal<string>;
1603
+ protected resolvedLoading: Signal<boolean>;
1604
+ protected totalRowCount: Signal<number>;
1605
+ protected selectionRows: Signal<Data[]>;
1606
+ protected ariaColCount: Signal<number>;
1607
+ protected ariaHeaderRowCount: Signal<number>;
1608
+ protected ariaRowCount: Signal<number>;
1498
1609
  private hideSbTimeout?;
1499
1610
  private scrollbarRafId;
1500
1611
  private stickyRafId;
@@ -1502,7 +1613,7 @@ declare class DataGrid<Data extends AnyDict> {
1502
1613
  currentSortOrder: GridSortOrder;
1503
1614
  currentSorts: GridSortItem<Data>[];
1504
1615
  private currentSortMap;
1505
- private subscription;
1616
+ private cleanupCallbacks;
1506
1617
  constructor();
1507
1618
  /** Clears current selection and emits `selectChange`. */
1508
1619
  clearSelection(): void;
@@ -1589,8 +1700,42 @@ declare class DataGrid<Data extends AnyDict> {
1589
1700
  protected isActiveSort(col: GridColumn<Data>): boolean;
1590
1701
  protected showTooltip(event: MouseEvent, row: Data, col: GridColumn<Data>, index: number): void;
1591
1702
  protected hideTooltip(): void;
1703
+ protected onTooltipEnter(event: MouseEvent, row: Data, col: GridColumn<Data>, index: number, cellId: string): void;
1592
1704
  protected isStickyRowIndex(index: number): boolean;
1593
1705
  protected resolveRowTemplate(row: Data, index: number): TemplateRef<AnyType> | null;
1706
+ protected rowAt(index: number): Data | null;
1707
+ protected shouldRenderLoadingRow(index: number, topGap: {
1708
+ start: number;
1709
+ count: number;
1710
+ } | null, bottomGap: {
1711
+ start: number;
1712
+ count: number;
1713
+ } | null): boolean;
1714
+ protected topGapLoader(): {
1715
+ start: number;
1716
+ count: number;
1717
+ } | null;
1718
+ protected bottomGapLoader(): {
1719
+ start: number;
1720
+ count: number;
1721
+ } | null;
1722
+ protected resolveHeaderText(col: GridColumn<Data>): string;
1723
+ protected ariaDataRowIndex(index: number): number;
1724
+ protected ariaPinnedTopRowIndex(index: number): number;
1725
+ protected ariaPinnedBottomRowIndex(index: number): number;
1726
+ protected ariaSortLabel(col: GridColumn<Data>): string;
1727
+ protected ariaExpandLabel(col: GridColumn<Data>): string;
1728
+ protected ariaResizeLabel(col: GridColumn<Data>): string;
1729
+ protected ariaHeaderGroupColIndex(group: NormalizedHeader): number | null;
1730
+ protected cellAriaId(colKey: string, rowIndex: number, isPinned: boolean): string;
1731
+ protected isTooltipTarget(cellId: string): boolean;
1732
+ protected resolveHeaderGroupTitle(group: GridHeaderGroup<Data>): string;
1733
+ protected resolveHeaderGroupTitle(group: {
1734
+ title?: string;
1735
+ }): string;
1736
+ private readResolvedHeaderText;
1737
+ private activePageSize;
1738
+ private requestPage;
1594
1739
  private initVm;
1595
1740
  private initSelector;
1596
1741
  private initRefs;
@@ -1599,6 +1744,7 @@ declare class DataGrid<Data extends AnyDict> {
1599
1744
  private initObserver;
1600
1745
  private initExpander;
1601
1746
  private setCurrentSorts;
1747
+ private syncSortFromSource;
1602
1748
  private loadSelectionFeature;
1603
1749
  private loadTooltipFeature;
1604
1750
  private loadOverlayScrollFeature;
@@ -1613,9 +1759,9 @@ declare class DataGrid<Data extends AnyDict> {
1613
1759
  private updateStickyRow;
1614
1760
  private updateStickyFromScroll;
1615
1761
  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>;
1762
+ 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"; "columnResizeEnd": "columnResizeEnd"; }, ["cellTypedSlotRefs", "cellDataSlotRefs", "declarativeColumnRefs", "headerSlotRefs", "emptySlotRefs", "loadingSlotRefs", "sortIcSlotRefs", "expanderIcSlotRefs", "stickyRowSlotRefs", "rowSlotRefs"], never, true, never>;
1617
1763
  }
1618
1764
 
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 };
1765
+ 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 };
1766
+ export type { BaseGridColumn, DataGridConfigProvider, DataGridHeaderTextContext, DataGridHeaderTextResolver, DataGridRowTemplateContext, DataGridStickyRowTemplateContext, DataGridTypeRenderers, DataGridTypeTransformers, DeclarativeColumnDef, GridBuiltInCellType, GridCellAlign, GridCellClickEvent, GridCellContextEvent, GridCellDoubleClickEvent, GridCellRenderer, GridCellRendererType, GridCellTransformer, GridCellTransformerContext, GridCellValueContext, GridColumn, GridColumnResizeEndEvent, 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
1767
  //# sourceMappingURL=reforgium-data-grid.d.ts.map