@reforgium/data-grid 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
- ## [3.1.1]: 06.04.2026
1
+ ## [3.1.2]: 14.04.2026
2
+
3
+ ### Fix:
4
+ - `DataGrid`: source/infinity lifecycle for long-lived sources was stabilized; remounting a grid against the same `GridPagedDataSource` / `PagedQueryStore` instance now resets component-local source session state instead of reusing stale buffered pages, queued requests, or pending flags from the previous screen lifecycle
5
+ - `DataGrid`: source/infinity now rebases correctly when a reused source reattaches on a non-zero page without `totalElements`; the current source page becomes the local starting point instead of rendering an empty grid
6
+ - `DataGrid`: singleton-like source reuse now settles correctly after empty successful replacements and remounts, so stale rows are cleared and `loading` no longer depends on previous component-local source state
7
+
8
+ ### Test:
9
+ - added regression coverage for same-source remount, empty replacement after remount, non-zero-page reattach without `totalElements`, and source-session reset on version change
10
+
11
+ ---
12
+
13
+ ## [3.1.1]: 06.04.2026
2
14
 
3
15
  ### Fix:
4
16
  - `DataGrid`: source/infinity — grid no longer auto-requests pages before the first external fetch; `ensureBufferedRange` and `drainQueuedPages` are now gated by a `hasReceivedData` flag that is only raised after at least one non-empty page arrives via `sync()` outside of a reset cycle; guards stale-store (singleton re-bind), stale queued pages surviving a `clearBuffer()`, and the `queueMicrotask` drain-loop that ran after a buffer reset
@@ -107,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
107
107
 
108
108
  /* eslint-disable max-len */
109
109
  class EyeIcon {
110
- open = input(false, { ...(ngDevMode ? { debugName: "open" } : {}), transform: booleanAttribute });
110
+ open = input(false, { ...(ngDevMode ? { debugName: "open" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
111
111
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: EyeIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
112
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: EyeIcon, isStandalone: true, selector: "re-eye-ic", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
113
113
  @if (open()) {
@@ -150,7 +150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
150
150
 
151
151
  /* eslint-disable max-len */
152
152
  class PinIcon {
153
- toRight = input(false, { ...(ngDevMode ? { debugName: "toRight" } : {}), transform: booleanAttribute });
153
+ toRight = input(false, { ...(ngDevMode ? { debugName: "toRight" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
154
154
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PinIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
155
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: PinIcon, isStandalone: true, selector: "re-pin-ic", inputs: { toRight: { classPropertyName: "toRight", publicName: "toRight", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
156
156
  <svg
@@ -189,28 +189,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
189
189
 
190
190
  class DataGridColumnManager {
191
191
  injector = inject(Injector);
192
- columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
193
- triggerLabel = input('Columns', ...(ngDevMode ? [{ debugName: "triggerLabel" }] : []));
194
- showAllLabel = input('Show all', ...(ngDevMode ? [{ debugName: "showAllLabel" }] : []));
195
- hideAllLabel = input('Hide All', ...(ngDevMode ? [{ debugName: "hideAllLabel" }] : []));
196
- controlsVisible = input(true, { ...(ngDevMode ? { debugName: "controlsVisible" } : {}), transform: booleanAttribute });
197
- searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : {}), transform: booleanAttribute });
198
- searchPlaceholder = input('Search columns...', ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : []));
199
- allowReorder = input(true, { ...(ngDevMode ? { debugName: "allowReorder" } : {}), transform: booleanAttribute });
200
- allowPin = input(true, { ...(ngDevMode ? { debugName: "allowPin" } : {}), transform: booleanAttribute });
201
- allowVisibility = input(true, { ...(ngDevMode ? { debugName: "allowVisibility" } : {}), transform: booleanAttribute });
192
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
193
+ triggerLabel = input('Columns', ...(ngDevMode ? [{ debugName: "triggerLabel" }] : /* istanbul ignore next */ []));
194
+ showAllLabel = input('Show all', ...(ngDevMode ? [{ debugName: "showAllLabel" }] : /* istanbul ignore next */ []));
195
+ hideAllLabel = input('Hide All', ...(ngDevMode ? [{ debugName: "hideAllLabel" }] : /* istanbul ignore next */ []));
196
+ controlsVisible = input(true, { ...(ngDevMode ? { debugName: "controlsVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
197
+ searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
198
+ searchPlaceholder = input('Search columns...', ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
199
+ allowReorder = input(true, { ...(ngDevMode ? { debugName: "allowReorder" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
200
+ allowPin = input(true, { ...(ngDevMode ? { debugName: "allowPin" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
201
+ allowVisibility = input(true, { ...(ngDevMode ? { debugName: "allowVisibility" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
202
202
  columnsChange = output();
203
- triggerDirective = contentChild(DataGridColumnManagerTriggerDirective, ...(ngDevMode ? [{ debugName: "triggerDirective" }] : []));
204
- columnTitleTemplate = contentChild((DataGridColumnManagerColumnTitleDirective), ...(ngDevMode ? [{ debugName: "columnTitleTemplate" }] : []));
205
- state = signal([], ...(ngDevMode ? [{ debugName: "state" }] : []));
206
- searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : []));
207
- draggingKey = signal(null, ...(ngDevMode ? [{ debugName: "draggingKey" }] : []));
208
- opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : []));
209
- openedPinMenuKey = signal(null, ...(ngDevMode ? [{ debugName: "openedPinMenuKey" }] : []));
210
- panelLeft = signal(0, ...(ngDevMode ? [{ debugName: "panelLeft" }] : []));
211
- triggerTemplate = computed(() => this.triggerDirective()?.template, ...(ngDevMode ? [{ debugName: "triggerTemplate" }] : []));
212
- root = viewChild('root', ...(ngDevMode ? [{ debugName: "root" }] : []));
213
- panel = viewChild('panel', ...(ngDevMode ? [{ debugName: "panel" }] : []));
203
+ triggerDirective = contentChild(DataGridColumnManagerTriggerDirective, ...(ngDevMode ? [{ debugName: "triggerDirective" }] : /* istanbul ignore next */ []));
204
+ columnTitleTemplate = contentChild((DataGridColumnManagerColumnTitleDirective), ...(ngDevMode ? [{ debugName: "columnTitleTemplate" }] : /* istanbul ignore next */ []));
205
+ state = signal([], ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
206
+ searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
207
+ draggingKey = signal(null, ...(ngDevMode ? [{ debugName: "draggingKey" }] : /* istanbul ignore next */ []));
208
+ opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : /* istanbul ignore next */ []));
209
+ openedPinMenuKey = signal(null, ...(ngDevMode ? [{ debugName: "openedPinMenuKey" }] : /* istanbul ignore next */ []));
210
+ panelLeft = signal(0, ...(ngDevMode ? [{ debugName: "panelLeft" }] : /* istanbul ignore next */ []));
211
+ triggerTemplate = computed(() => this.triggerDirective()?.template, ...(ngDevMode ? [{ debugName: "triggerTemplate" }] : /* istanbul ignore next */ []));
212
+ root = viewChild('root', ...(ngDevMode ? [{ debugName: "root" }] : /* istanbul ignore next */ []));
213
+ panel = viewChild('panel', ...(ngDevMode ? [{ debugName: "panel" }] : /* istanbul ignore next */ []));
214
214
  filteredColumns = computed(() => {
215
215
  const query = this.searchQuery().trim().toLowerCase();
216
216
  if (!query) {
@@ -221,8 +221,8 @@ class DataGridColumnManager {
221
221
  const header = String(column.header || '').toLowerCase();
222
222
  return key.includes(query) || header.includes(query);
223
223
  });
224
- }, ...(ngDevMode ? [{ debugName: "filteredColumns" }] : []));
225
- visibleColumnsCount = computed(() => this.state().filter((column) => column.visible !== false).length, ...(ngDevMode ? [{ debugName: "visibleColumnsCount" }] : []));
224
+ }, ...(ngDevMode ? [{ debugName: "filteredColumns" }] : /* istanbul ignore next */ []));
225
+ visibleColumnsCount = computed(() => this.state().filter((column) => column.visible !== false).length, ...(ngDevMode ? [{ debugName: "visibleColumnsCount" }] : /* istanbul ignore next */ []));
226
226
  constructor() {
227
227
  effect(() => this.state.set(cloneColumns(this.columns())));
228
228
  }
@@ -1,4 +1,4 @@
1
- import { c as computeScrollbarState, a as clampThumbTop, m as mapThumbTopToScrollTop } from './reforgium-data-grid-reforgium-data-grid-D4fn-nOx.mjs';
1
+ import { c as computeScrollbarState, a as clampThumbTop, m as mapThumbTopToScrollTop } from './reforgium-data-grid-reforgium-data-grid-3n5k89Qx.mjs';
2
2
 
3
3
  function createGridOverlayScrollFeature(ctx) {
4
4
  const showScrollbar = () => {
@@ -76,4 +76,4 @@ function createGridOverlayScrollFeature(ctx) {
76
76
  }
77
77
 
78
78
  export { createGridOverlayScrollFeature };
79
- //# sourceMappingURL=reforgium-data-grid-grid-overlay-scroll.feature-DkosLX9_.mjs.map
79
+ //# sourceMappingURL=reforgium-data-grid-grid-overlay-scroll.feature-BmB4qWr3.mjs.map
@@ -39,24 +39,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
39
39
 
40
40
  // noinspection CssUnresolvedCustomProperty
41
41
  class DataGridPaginator {
42
- current = input(0, { ...(ngDevMode ? { debugName: "current" } : {}), transform: numberAttribute });
43
- totalElements = input(0, { ...(ngDevMode ? { debugName: "totalElements" } : {}), transform: numberAttribute });
44
- pageSize = input(0, { ...(ngDevMode ? { debugName: "pageSize" } : {}), transform: numberAttribute });
45
- maxShowPages = input(7, { ...(ngDevMode ? { debugName: "maxShowPages" } : {}), transform: numberAttribute });
46
- showFirstLast = input(false, { ...(ngDevMode ? { debugName: "showFirstLast" } : {}), transform: booleanAttribute });
47
- firstLabel = input('First', ...(ngDevMode ? [{ debugName: "firstLabel" }] : []));
48
- lastLabel = input('Last', ...(ngDevMode ? [{ debugName: "lastLabel" }] : []));
49
- showPerPage = input(false, { ...(ngDevMode ? { debugName: "showPerPage" } : {}), transform: booleanAttribute });
50
- perPageLabel = input('Items per page:', ...(ngDevMode ? [{ debugName: "perPageLabel" }] : []));
51
- pageSizeOptions = input([10, 20, 50, 100], ...(ngDevMode ? [{ debugName: "pageSizeOptions" }] : []));
42
+ current = input(0, { ...(ngDevMode ? { debugName: "current" } : /* istanbul ignore next */ {}), transform: numberAttribute });
43
+ totalElements = input(0, { ...(ngDevMode ? { debugName: "totalElements" } : /* istanbul ignore next */ {}), transform: numberAttribute });
44
+ pageSize = input(0, { ...(ngDevMode ? { debugName: "pageSize" } : /* istanbul ignore next */ {}), transform: numberAttribute });
45
+ maxShowPages = input(7, { ...(ngDevMode ? { debugName: "maxShowPages" } : /* istanbul ignore next */ {}), transform: numberAttribute });
46
+ showFirstLast = input(false, { ...(ngDevMode ? { debugName: "showFirstLast" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
47
+ firstLabel = input('First', ...(ngDevMode ? [{ debugName: "firstLabel" }] : /* istanbul ignore next */ []));
48
+ lastLabel = input('Last', ...(ngDevMode ? [{ debugName: "lastLabel" }] : /* istanbul ignore next */ []));
49
+ showPerPage = input(false, { ...(ngDevMode ? { debugName: "showPerPage" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
50
+ perPageLabel = input('Items per page:', ...(ngDevMode ? [{ debugName: "perPageLabel" }] : /* istanbul ignore next */ []));
51
+ pageSizeOptions = input([10, 20, 50, 100], ...(ngDevMode ? [{ debugName: "pageSizeOptions" }] : /* istanbul ignore next */ []));
52
52
  pageChange = output();
53
53
  pageSizeChange = output();
54
- firstSlotRefs = contentChildren(DataGridPaginatorFirstDirective, ...(ngDevMode ? [{ debugName: "firstSlotRefs" }] : []));
55
- lastSlotRefs = contentChildren(DataGridPaginatorLastDirective, ...(ngDevMode ? [{ debugName: "lastSlotRefs" }] : []));
56
- pageSlotRefs = contentChildren(DataGridPaginatorPageDirective, ...(ngDevMode ? [{ debugName: "pageSlotRefs" }] : []));
57
- firstTpl = computed(() => this.firstSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "firstTpl" }] : []));
58
- lastTpl = computed(() => this.lastSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "lastTpl" }] : []));
59
- pageTpl = computed(() => this.pageSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "pageTpl" }] : []));
54
+ firstSlotRefs = contentChildren(DataGridPaginatorFirstDirective, ...(ngDevMode ? [{ debugName: "firstSlotRefs" }] : /* istanbul ignore next */ []));
55
+ lastSlotRefs = contentChildren(DataGridPaginatorLastDirective, ...(ngDevMode ? [{ debugName: "lastSlotRefs" }] : /* istanbul ignore next */ []));
56
+ pageSlotRefs = contentChildren(DataGridPaginatorPageDirective, ...(ngDevMode ? [{ debugName: "pageSlotRefs" }] : /* istanbul ignore next */ []));
57
+ firstTpl = computed(() => this.firstSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "firstTpl" }] : /* istanbul ignore next */ []));
58
+ lastTpl = computed(() => this.lastSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "lastTpl" }] : /* istanbul ignore next */ []));
59
+ pageTpl = computed(() => this.pageSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "pageTpl" }] : /* istanbul ignore next */ []));
60
60
  normalizedPageSizeOptions = computed(() => {
61
61
  const uniq = new Set(this.pageSizeOptions()
62
62
  .map((value) => Number(value))
@@ -65,11 +65,11 @@ class DataGridPaginator {
65
65
  uniq.add(this.pageSize());
66
66
  }
67
67
  return [...uniq].sort((a, b) => a - b).map((value) => ({ label: `${value}`, value }));
68
- }, ...(ngDevMode ? [{ debugName: "normalizedPageSizeOptions" }] : []));
68
+ }, ...(ngDevMode ? [{ debugName: "normalizedPageSizeOptions" }] : /* istanbul ignore next */ []));
69
69
  totalPages = computed(() => {
70
70
  const size = this.pageSize();
71
71
  return size > 0 ? Math.ceil(this.totalElements() / size) : 0;
72
- }, ...(ngDevMode ? [{ debugName: "totalPages" }] : []));
72
+ }, ...(ngDevMode ? [{ debugName: "totalPages" }] : /* istanbul ignore next */ []));
73
73
  pages = computed(() => {
74
74
  const current = this.current();
75
75
  const total = this.totalPages();
@@ -99,7 +99,7 @@ class DataGridPaginator {
99
99
  }
100
100
  pages.push(total - 1);
101
101
  return pages;
102
- }, ...(ngDevMode ? [{ debugName: "pages" }] : []));
102
+ }, ...(ngDevMode ? [{ debugName: "pages" }] : /* istanbul ignore next */ []));
103
103
  goToPage(page) {
104
104
  if (!Number.isInteger(page)) {
105
105
  return;
@@ -29,7 +29,7 @@ class DataGridTypeCellTemplateDirective {
29
29
  *
30
30
  * @default ''
31
31
  */
32
- type = input('', { ...(ngDevMode ? { debugName: "type" } : {}), alias: 'reDataGridTypeCell' });
32
+ type = input('', { ...(ngDevMode ? { debugName: "type" } : /* istanbul ignore next */ {}), alias: 'reDataGridTypeCell' });
33
33
  /**
34
34
  * Reference to the template defined in the directive.
35
35
  *
@@ -46,7 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
46
46
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "reDataGridTypeCell", required: false }] }] } });
47
47
 
48
48
  class DataGridCellTemplateDirective {
49
- key = input('', { ...(ngDevMode ? { debugName: "key" } : {}), alias: 'reDataGridCell' });
49
+ key = input('', { ...(ngDevMode ? { debugName: "key" } : /* istanbul ignore next */ {}), alias: 'reDataGridCell' });
50
50
  /**
51
51
  * The injected template reference containing the custom cell template.
52
52
  * The template context is of the type `DataGridCellTemplateDirective`.
@@ -80,7 +80,7 @@ class DataGridHeaderTemplateDirective {
80
80
  * Uses the `reDataGridHeader` directive attribute as an alias.
81
81
  * Defaults to an empty string if not provided.
82
82
  */
83
- key = input('', { ...(ngDevMode ? { debugName: "key" } : {}), alias: 'reDataGridHeader' });
83
+ key = input('', { ...(ngDevMode ? { debugName: "key" } : /* istanbul ignore next */ {}), alias: 'reDataGridHeader' });
84
84
  /**
85
85
  * The injected template reference containing the custom header template.
86
86
  * The template context is of the type `HeaderTemplateData`.
@@ -144,28 +144,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
144
144
  }] });
145
145
 
146
146
  class DataGridDeclarativeColumn {
147
- key = input.required(...(ngDevMode ? [{ debugName: "key" }] : []));
148
- header = input(undefined, ...(ngDevMode ? [{ debugName: "header" }] : []));
149
- align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : []));
150
- sortKey = input(undefined, ...(ngDevMode ? [{ debugName: "sortKey" }] : []));
151
- sticky = input(...(ngDevMode ? [undefined, { debugName: "sticky" }] : []));
152
- expandBy = input(undefined, ...(ngDevMode ? [{ debugName: "expandBy" }] : []));
153
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
154
- visible = input(true, { ...(ngDevMode ? { debugName: "visible" } : {}), transform: booleanAttribute });
155
- width = input(undefined, { ...(ngDevMode ? { debugName: "width" } : {}), transform: toOptionalNumber });
156
- minWidth = input(undefined, { ...(ngDevMode ? { debugName: "minWidth" } : {}), transform: toOptionalNumber });
157
- maxWidth = input(undefined, { ...(ngDevMode ? { debugName: "maxWidth" } : {}), transform: toOptionalNumber });
158
- flex = input(undefined, { ...(ngDevMode ? { debugName: "flex" } : {}), transform: toOptionalNumber });
159
- resizable = input(undefined, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: toOptionalBoolean });
160
- type = input(undefined, ...(ngDevMode ? [{ debugName: "type" }] : []));
161
- typeParams = input(undefined, ...(ngDevMode ? [{ debugName: "typeParams" }] : []));
162
- defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : []));
163
- value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
164
- transformer = input(undefined, ...(ngDevMode ? [{ debugName: "transformer" }] : []));
165
- track = input(undefined, ...(ngDevMode ? [{ debugName: "track" }] : []));
166
- tooltip = input(undefined, ...(ngDevMode ? [{ debugName: "tooltip" }] : []));
167
- headerTplRef = contentChild(DataGridDeclarativeHeaderDirective, ...(ngDevMode ? [{ debugName: "headerTplRef" }] : []));
168
- cellTplRef = contentChild(DataGridDeclarativeCellDirective, ...(ngDevMode ? [{ debugName: "cellTplRef" }] : []));
147
+ key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
148
+ header = input(undefined, ...(ngDevMode ? [{ debugName: "header" }] : /* istanbul ignore next */ []));
149
+ align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
150
+ sortKey = input(undefined, ...(ngDevMode ? [{ debugName: "sortKey" }] : /* istanbul ignore next */ []));
151
+ sticky = input(...(ngDevMode ? [undefined, { debugName: "sticky" }] : /* istanbul ignore next */ []));
152
+ expandBy = input(undefined, ...(ngDevMode ? [{ debugName: "expandBy" }] : /* istanbul ignore next */ []));
153
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
154
+ visible = input(true, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
155
+ width = input(undefined, { ...(ngDevMode ? { debugName: "width" } : /* istanbul ignore next */ {}), transform: toOptionalNumber });
156
+ minWidth = input(undefined, { ...(ngDevMode ? { debugName: "minWidth" } : /* istanbul ignore next */ {}), transform: toOptionalNumber });
157
+ maxWidth = input(undefined, { ...(ngDevMode ? { debugName: "maxWidth" } : /* istanbul ignore next */ {}), transform: toOptionalNumber });
158
+ flex = input(undefined, { ...(ngDevMode ? { debugName: "flex" } : /* istanbul ignore next */ {}), transform: toOptionalNumber });
159
+ resizable = input(undefined, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: toOptionalBoolean });
160
+ type = input(undefined, ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
161
+ typeParams = input(undefined, ...(ngDevMode ? [{ debugName: "typeParams" }] : /* istanbul ignore next */ []));
162
+ defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
163
+ value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
164
+ transformer = input(undefined, ...(ngDevMode ? [{ debugName: "transformer" }] : /* istanbul ignore next */ []));
165
+ track = input(undefined, ...(ngDevMode ? [{ debugName: "track" }] : /* istanbul ignore next */ []));
166
+ tooltip = input(undefined, ...(ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []));
167
+ headerTplRef = contentChild(DataGridDeclarativeHeaderDirective, ...(ngDevMode ? [{ debugName: "headerTplRef" }] : /* istanbul ignore next */ []));
168
+ cellTplRef = contentChild(DataGridDeclarativeCellDirective, ...(ngDevMode ? [{ debugName: "cellTplRef" }] : /* istanbul ignore next */ []));
169
169
  toDeclarativeColumn() {
170
170
  return {
171
171
  key: this.key(),
@@ -1035,47 +1035,47 @@ class DataGridVm {
1035
1035
  *
1036
1036
  * Used for scrollbar calculations and scroll position management.
1037
1037
  */
1038
- scrollEl = signal(undefined, ...(ngDevMode ? [{ debugName: "scrollEl" }] : []));
1038
+ scrollEl = signal(undefined, ...(ngDevMode ? [{ debugName: "scrollEl" }] : /* istanbul ignore next */ []));
1039
1039
  /**
1040
1040
  * Array of column configurations for the grid.
1041
1041
  *
1042
1042
  * Defines all columns including their keys, titles, sticky positioning, and widths.
1043
1043
  * Value is reactive and triggers column layout recalculation when changed.
1044
1044
  */
1045
- columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
1045
+ columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
1046
1046
  /**
1047
1047
  * Array of pinned row configurations.
1048
1048
  *
1049
1049
  * Defines rows that remain fixed at the top or bottom of the grid during scrolling.
1050
1050
  * Each row includes data, position ('top' or 'bottom'), and optional ordering.
1051
1051
  */
1052
- pinnedRows = signal([], ...(ngDevMode ? [{ debugName: "pinnedRows" }] : []));
1053
- headerGroups = signal([], ...(ngDevMode ? [{ debugName: "headerGroups" }] : []));
1052
+ pinnedRows = signal([], ...(ngDevMode ? [{ debugName: "pinnedRows" }] : /* istanbul ignore next */ []));
1053
+ headerGroups = signal([], ...(ngDevMode ? [{ debugName: "headerGroups" }] : /* istanbul ignore next */ []));
1054
1054
  /**
1055
1055
  * Current width of the grid container in pixels.
1056
1056
  *
1057
1057
  * Used for column width calculations and layout adjustments.
1058
1058
  * Value is reactive and triggers column layout recalculation when changed.
1059
1059
  */
1060
- containerWidth = signal(0, ...(ngDevMode ? [{ debugName: "containerWidth" }] : []));
1060
+ containerWidth = signal(0, ...(ngDevMode ? [{ debugName: "containerWidth" }] : /* istanbul ignore next */ []));
1061
1061
  /**
1062
1062
  * Flag indicating whether the custom scrollbar should be visible.
1063
1063
  *
1064
1064
  * Automatically computed based on content height vs. container height.
1065
1065
  */
1066
- scrollbarVisible = signal(false, ...(ngDevMode ? [{ debugName: "scrollbarVisible" }] : []));
1066
+ scrollbarVisible = signal(false, ...(ngDevMode ? [{ debugName: "scrollbarVisible" }] : /* istanbul ignore next */ []));
1067
1067
  /**
1068
1068
  * Height of the scrollbar thumb in pixels.
1069
1069
  *
1070
1070
  * Proportional to the ratio of visible content to total content height.
1071
1071
  */
1072
- thumbHeightPx = signal(0, ...(ngDevMode ? [{ debugName: "thumbHeightPx" }] : []));
1072
+ thumbHeightPx = signal(0, ...(ngDevMode ? [{ debugName: "thumbHeightPx" }] : /* istanbul ignore next */ []));
1073
1073
  /**
1074
1074
  * Top position of the scrollbar thumb in pixels.
1075
1075
  *
1076
1076
  * Corresponds to the current scroll position within the scrollable area.
1077
1077
  */
1078
- thumbTopPx = signal(0, ...(ngDevMode ? [{ debugName: "thumbTopPx" }] : []));
1078
+ thumbTopPx = signal(0, ...(ngDevMode ? [{ debugName: "thumbTopPx" }] : /* istanbul ignore next */ []));
1079
1079
  /**
1080
1080
  * Flag indicating whether the user is currently dragging the scrollbar thumb.
1081
1081
  *
@@ -1091,15 +1091,15 @@ class DataGridVm {
1091
1091
  globalTypeCellTpls = new Map();
1092
1092
  globalDataCellTpls = new Map();
1093
1093
  globalRowCellTpls = new Map();
1094
- #byKey = signal({}, ...(ngDevMode ? [{ debugName: "#byKey" }] : []));
1094
+ #byKey = signal({}, ...(ngDevMode ? [{ debugName: "#byKey" }] : /* istanbul ignore next */ []));
1095
1095
  #defaultColWidth = 140;
1096
1096
  #stickyLeftMap = new Map();
1097
1097
  #stickyRightMap = new Map();
1098
- #stickySplit = computed(() => splitSticky(this.columns() ?? []), ...(ngDevMode ? [{ debugName: "#stickySplit" }] : []));
1098
+ #stickySplit = computed(() => splitSticky(this.columns() ?? []), ...(ngDevMode ? [{ debugName: "#stickySplit" }] : /* istanbul ignore next */ []));
1099
1099
  #layoutSignature = '';
1100
1100
  #stickySignature = '';
1101
- pinnedTop = signal([], ...(ngDevMode ? [{ debugName: "pinnedTop" }] : []));
1102
- pinnedBottom = signal([], ...(ngDevMode ? [{ debugName: "pinnedBottom" }] : []));
1101
+ pinnedTop = signal([], ...(ngDevMode ? [{ debugName: "pinnedTop" }] : /* istanbul ignore next */ []));
1102
+ pinnedBottom = signal([], ...(ngDevMode ? [{ debugName: "pinnedBottom" }] : /* istanbul ignore next */ []));
1103
1103
  /**
1104
1104
  * Computed an array of non-sticky columns to display in the scrollable area.
1105
1105
  *
@@ -1110,14 +1110,14 @@ class DataGridVm {
1110
1110
  columnsToShow = computed(() => {
1111
1111
  this.containerWidth();
1112
1112
  return this.#stickySplit().visible;
1113
- }, ...(ngDevMode ? [{ debugName: "columnsToShow" }] : []));
1113
+ }, ...(ngDevMode ? [{ debugName: "columnsToShow" }] : /* istanbul ignore next */ []));
1114
1114
  contentWidth = computed(() => {
1115
1115
  const columns = this.columnsToShow();
1116
1116
  if (!columns.length) {
1117
1117
  return 0;
1118
1118
  }
1119
1119
  return columns.reduce((sum, col) => sum + this.widthByKey(col.key), 0);
1120
- }, ...(ngDevMode ? [{ debugName: "contentWidth" }] : []));
1120
+ }, ...(ngDevMode ? [{ debugName: "contentWidth" }] : /* istanbul ignore next */ []));
1121
1121
  /**
1122
1122
  * Computed array of normalized header groups with calculated widths.
1123
1123
  *
@@ -1139,7 +1139,7 @@ class DataGridVm {
1139
1139
  width: this.widthByKey(col.key),
1140
1140
  }));
1141
1141
  return computeHeaderGroups(headers, normalizedColumns);
1142
- }, ...(ngDevMode ? [{ debugName: "normalizedHeaderGroups" }] : []));
1142
+ }, ...(ngDevMode ? [{ debugName: "normalizedHeaderGroups" }] : /* istanbul ignore next */ []));
1143
1143
  constructor() {
1144
1144
  effect(() => {
1145
1145
  const rows = this.pinnedRows() ?? [];
@@ -1304,22 +1304,22 @@ class DataGridCellComponent {
1304
1304
  * Used for rendering row numbers (displayed as 1-based in 'index' type columns)
1305
1305
  * and passed to custom templates as context.
1306
1306
  */
1307
- index = input.required(...(ngDevMode ? [{ debugName: "index" }] : []));
1307
+ index = input.required(...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
1308
1308
  /**
1309
1309
  * Data object for the current row.
1310
1310
  *
1311
1311
  * Contains the complete row data that can be accessed by column value functions
1312
1312
  * or custom render templates. Type-safe, according to the Data generic parameter.
1313
1313
  */
1314
- item = input.required(...(ngDevMode ? [{ debugName: "item" }] : []));
1315
- isPinned = input(false, ...(ngDevMode ? [{ debugName: "isPinned" }] : []));
1314
+ item = input.required(...(ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []));
1315
+ isPinned = input(false, ...(ngDevMode ? [{ debugName: "isPinned" }] : /* istanbul ignore next */ []));
1316
1316
  /**
1317
1317
  * Column configuration object.
1318
1318
  *
1319
1319
  * Defines how the cell should be rendered, including key mapping, type,
1320
1320
  * custom templates, or value transformation functions.
1321
1321
  */
1322
- column = input.required(...(ngDevMode ? [{ debugName: "column" }] : []));
1322
+ column = input.required(...(ngDevMode ? [{ debugName: "column" }] : /* istanbul ignore next */ []));
1323
1323
  /**
1324
1324
  * Injected DataGridVm service instance.
1325
1325
  *
@@ -1355,7 +1355,7 @@ class DataGridCellComponent {
1355
1355
  return 'globalRowTpl';
1356
1356
  }
1357
1357
  return 'type' in col ? col['type'] : 'plain';
1358
- }, ...(ngDevMode ? [{ debugName: "type" }] : []));
1358
+ }, ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
1359
1359
  /**
1360
1360
  * Computed cell value extracted from row data.
1361
1361
  *
@@ -1399,7 +1399,7 @@ class DataGridCellComponent {
1399
1399
  return typeTransformer(row, ctx);
1400
1400
  }
1401
1401
  return displayValue;
1402
- }, ...(ngDevMode ? [{ debugName: "value" }] : []));
1402
+ }, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1403
1403
  resolveTypeTemplate(type) {
1404
1404
  if (!type) {
1405
1405
  return undefined;
@@ -2153,7 +2153,7 @@ function createGridSourceDataFeature(ctx) {
2153
2153
  const PARALLEL_PREFETCH_REQUESTS = 3;
2154
2154
  const MAX_BUFFERED_PAGES = 100;
2155
2155
  const sourcePages = new Map();
2156
- const bufferVersion = signal(0, ...(ngDevMode ? [{ debugName: "bufferVersion" }] : []));
2156
+ const bufferVersion = signal(0, ...(ngDevMode ? [{ debugName: "bufferVersion" }] : /* istanbul ignore next */ []));
2157
2157
  const pendingPages = new Set();
2158
2158
  const queuedPages = [];
2159
2159
  let lastSourceRef = null;
@@ -2161,6 +2161,8 @@ function createGridSourceDataFeature(ctx) {
2161
2161
  let activeRequests = 0;
2162
2162
  let requestGeneration = 0;
2163
2163
  let hasReceivedData = false;
2164
+ let pageBase = 0;
2165
+ const hasSessionState = () => sourcePages.size > 0 || pendingPages.size > 0 || queuedPages.length > 0 || activeRequests > 0 || hasReceivedData;
2164
2166
  const resolvedLoading = () => ctx.getSource()?.loading() ?? ctx.getFallbackLoading();
2165
2167
  const totalRowCount = () => {
2166
2168
  const source = ctx.getSource();
@@ -2171,7 +2173,9 @@ function createGridSourceDataFeature(ctx) {
2171
2173
  bufferVersion();
2172
2174
  const knownTotal = resolvedTotalElements(source);
2173
2175
  if (knownTotal !== null) {
2174
- return knownTotal;
2176
+ const pageSize = Math.max(1, source.pageSize || ctx.getFallbackPageSize());
2177
+ const shiftedTotal = Math.max(0, knownTotal - pageBase * pageSize);
2178
+ return shiftedTotal > 0 ? shiftedTotal : (source.items()?.length ?? 0);
2175
2179
  }
2176
2180
  const loadedRows = contiguousLoadedRowCount(source);
2177
2181
  if (loadedRows <= 0) {
@@ -2215,12 +2219,13 @@ function createGridSourceDataFeature(ctx) {
2215
2219
  }
2216
2220
  bufferVersion();
2217
2221
  const pageSize = Math.max(1, source.pageSize || ctx.getFallbackPageSize());
2218
- const page = Math.floor(index / pageSize);
2222
+ const localPage = Math.floor(index / pageSize);
2223
+ const page = localToAbsolutePage(localPage);
2219
2224
  const pageItems = sourcePages.get(page);
2220
2225
  if (!pageItems) {
2221
2226
  return null;
2222
2227
  }
2223
- return pageItems[index - page * pageSize] ?? null;
2228
+ return pageItems[index - localPage * pageSize] ?? null;
2224
2229
  };
2225
2230
  const activePageSize = () => ctx.getSource()?.pageSize || ctx.getFallbackPageSize();
2226
2231
  const requestRowCount = () => {
@@ -2234,11 +2239,12 @@ function createGridSourceDataFeature(ctx) {
2234
2239
  const requestPage = (event) => {
2235
2240
  const source = ctx.getSource();
2236
2241
  if (source) {
2242
+ const targetPage = ctx.getMode() === 'infinity' ? Math.max(0, localToAbsolutePage(event.page)) : event.page;
2237
2243
  if (source.updatePageSize && event.rows > 0 && event.rows !== source.pageSize) {
2238
2244
  void source.updatePageSize(event.rows);
2239
2245
  return;
2240
2246
  }
2241
- void source.updatePage(event.page);
2247
+ void source.updatePage(targetPage);
2242
2248
  return;
2243
2249
  }
2244
2250
  ctx.emitPageChange(event);
@@ -2284,11 +2290,11 @@ function createGridSourceDataFeature(ctx) {
2284
2290
  const sideBufferPages = Math.max(1, visiblePageCount * Math.floor(PAGE_WINDOW_MULTIPLIER / 2));
2285
2291
  const nextQueue = [];
2286
2292
  for (let page = visiblePageStart; page <= visiblePageEnd; page++) {
2287
- pushPage(nextQueue, page, maxPage);
2293
+ pushPage(nextQueue, localToAbsolutePage(page), localToAbsolutePage(maxPage));
2288
2294
  }
2289
2295
  for (let offset = 1; offset <= sideBufferPages; offset++) {
2290
- pushPage(nextQueue, visiblePageStart - offset, maxPage);
2291
- pushPage(nextQueue, visiblePageEnd + offset, maxPage);
2296
+ pushPage(nextQueue, localToAbsolutePage(visiblePageStart - offset), localToAbsolutePage(maxPage));
2297
+ pushPage(nextQueue, localToAbsolutePage(visiblePageEnd + offset), localToAbsolutePage(maxPage));
2292
2298
  }
2293
2299
  evictExcessPages(new Set(nextQueue));
2294
2300
  queuedPages.length = 0;
@@ -2312,24 +2318,27 @@ function createGridSourceDataFeature(ctx) {
2312
2318
  if (lastSourceRef !== source) {
2313
2319
  lastSourceRef = source;
2314
2320
  lastSourceVersion = version ?? null;
2315
- clearBuffer();
2321
+ resetSession();
2316
2322
  didReset = true;
2317
2323
  }
2318
2324
  else if (version !== undefined && version !== lastSourceVersion) {
2319
2325
  lastSourceVersion = version;
2320
- clearBuffer();
2326
+ resetSession();
2321
2327
  didReset = true;
2322
2328
  }
2323
2329
  if (mode !== 'infinity') {
2324
- clearBuffer();
2330
+ if (hasSessionState()) {
2331
+ resetSession();
2332
+ }
2325
2333
  return;
2326
2334
  }
2327
2335
  if (didReset && source.loading()) {
2328
2336
  return;
2329
2337
  }
2338
+ pageBase = sourcePages.size === 0 ? Math.max(0, source.page || 0) : pageBase;
2330
2339
  const pageItems = source.items() ?? [];
2331
2340
  sourcePages.set(Math.max(0, source.page || 0), pageItems);
2332
- if (!hasReceivedData && !didReset && pageItems.length > 0) {
2341
+ if (!hasReceivedData && pageItems.length > 0) {
2333
2342
  hasReceivedData = true;
2334
2343
  }
2335
2344
  bufferVersion.update((current) => current + 1);
@@ -2337,23 +2346,19 @@ function createGridSourceDataFeature(ctx) {
2337
2346
  const clearState = () => {
2338
2347
  lastSourceRef = null;
2339
2348
  lastSourceVersion = null;
2340
- clearQueue();
2341
- clearBuffer();
2342
- };
2343
- const clearBuffer = () => {
2344
- hasReceivedData = false;
2345
- requestGeneration++;
2346
- if (!sourcePages.size) {
2349
+ if (!hasSessionState()) {
2347
2350
  return;
2348
2351
  }
2349
- sourcePages.clear();
2350
- bufferVersion.update((current) => current + 1);
2352
+ resetSession();
2351
2353
  };
2352
- const clearQueue = () => {
2354
+ const resetSession = () => {
2353
2355
  requestGeneration++;
2356
+ hasReceivedData = false;
2357
+ pageBase = 0;
2354
2358
  queuedPages.length = 0;
2355
2359
  pendingPages.clear();
2356
2360
  activeRequests = 0;
2361
+ sourcePages.clear();
2357
2362
  bufferVersion.update((current) => current + 1);
2358
2363
  };
2359
2364
  const pushPage = (pages, page, maxPage) => {
@@ -2411,7 +2416,7 @@ function createGridSourceDataFeature(ctx) {
2411
2416
  const contiguousLoadedRowCount = (source) => {
2412
2417
  const pageSize = Math.max(1, source.pageSize || ctx.getFallbackPageSize());
2413
2418
  let loaded = 0;
2414
- let page = 0;
2419
+ let page = pageBase;
2415
2420
  while (sourcePages.has(page)) {
2416
2421
  const items = sourcePages.get(page) ?? [];
2417
2422
  loaded += items.length;
@@ -2424,7 +2429,7 @@ function createGridSourceDataFeature(ctx) {
2424
2429
  };
2425
2430
  const hasReachedInfinityEnd = (source) => {
2426
2431
  const pageSize = Math.max(1, source.pageSize || ctx.getFallbackPageSize());
2427
- let page = 0;
2432
+ let page = pageBase;
2428
2433
  while (sourcePages.has(page)) {
2429
2434
  const items = sourcePages.get(page) ?? [];
2430
2435
  if (items.length < pageSize) {
@@ -2461,6 +2466,7 @@ function createGridSourceDataFeature(ctx) {
2461
2466
  }
2462
2467
  return rows;
2463
2468
  };
2469
+ const localToAbsolutePage = (page) => pageBase + page;
2464
2470
  return {
2465
2471
  activePageSize,
2466
2472
  ensureBufferedRange,
@@ -2747,14 +2753,14 @@ class Selector {
2747
2753
  * This signal holds all data items that can be selected.
2748
2754
  * Defaults to an empty array.
2749
2755
  */
2750
- data = signal([], ...(ngDevMode ? [{ debugName: "data" }] : []));
2756
+ data = signal([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
2751
2757
  /**
2752
2758
  * Signal containing the current selection configuration.
2753
2759
  *
2754
2760
  * Defines the selection mode and the key property used for identifying rows.
2755
2761
  * Defaults to `{ mode: 'none' }` which disables selection.
2756
2762
  */
2757
- selection = signal({ mode: 'none' }, ...(ngDevMode ? [{ debugName: "selection" }] : []));
2763
+ selection = signal({ mode: 'none' }, ...(ngDevMode ? [{ debugName: "selection" }] : /* istanbul ignore next */ []));
2758
2764
  /**
2759
2765
  * Signal containing the array of currently selected row keys.
2760
2766
  *
@@ -2762,8 +2768,8 @@ class Selector {
2762
2768
  * defined in the selection configuration.
2763
2769
  * Defaults to an empty array.
2764
2770
  */
2765
- selectedKeys = signal([], ...(ngDevMode ? [{ debugName: "selectedKeys" }] : []));
2766
- selectedKeySet = computed(() => new Set(this.selectedKeys()), ...(ngDevMode ? [{ debugName: "selectedKeySet" }] : []));
2771
+ selectedKeys = signal([], ...(ngDevMode ? [{ debugName: "selectedKeys" }] : /* istanbul ignore next */ []));
2772
+ selectedKeySet = computed(() => new Set(this.selectedKeys()), ...(ngDevMode ? [{ debugName: "selectedKeySet" }] : /* istanbul ignore next */ []));
2767
2773
  /**
2768
2774
  * Computed signal indicating the overall selection state of all rows.
2769
2775
  *
@@ -2793,7 +2799,7 @@ class Selector {
2793
2799
  selected.has(key) && matched++;
2794
2800
  }
2795
2801
  return matched === loadedKeys.length ? true : matched === 0 ? false : 'mixed';
2796
- }, ...(ngDevMode ? [{ debugName: "isAllSelected" }] : []));
2802
+ }, ...(ngDevMode ? [{ debugName: "isAllSelected" }] : /* istanbul ignore next */ []));
2797
2803
  /**
2798
2804
  * Checks whether a specific row is currently selected.
2799
2805
  *
@@ -2896,8 +2902,8 @@ class Selector {
2896
2902
 
2897
2903
  // noinspection CssUnresolvedCustomProperty
2898
2904
  class CheckboxIcon {
2899
- state = input(false, ...(ngDevMode ? [{ debugName: "state" }] : []));
2900
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
2905
+ state = input(false, ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
2906
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
2901
2907
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CheckboxIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
2902
2908
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: CheckboxIcon, isStandalone: true, selector: "re-checkbox-ic", inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2903
2909
  <span
@@ -2934,7 +2940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
2934
2940
 
2935
2941
  /* eslint-disable max-len */
2936
2942
  class ExpandIcon {
2937
- expanded = input(false, { ...(ngDevMode ? { debugName: "expanded" } : {}), transform: booleanAttribute });
2943
+ expanded = input(false, { ...(ngDevMode ? { debugName: "expanded" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2938
2944
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ExpandIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
2939
2945
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: ExpandIcon, isStandalone: true, selector: "re-expand-ic", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2940
2946
  @if (expanded()) {
@@ -2976,7 +2982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
2976
2982
  }], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }] } });
2977
2983
 
2978
2984
  class SortIcon {
2979
- direction = input('asc', ...(ngDevMode ? [{ debugName: "direction" }] : []));
2985
+ direction = input('asc', ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
2980
2986
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SortIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
2981
2987
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SortIcon, isStandalone: true, selector: "re-sort-ic", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2982
2988
  @if (direction()) {
@@ -3045,7 +3051,7 @@ class DataGrid {
3045
3051
  * Each item represents a single row. The component will efficiently render
3046
3052
  * only visible rows using virtual scrolling.
3047
3053
  */
3048
- data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
3054
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
3049
3055
  /**
3050
3056
  * Optional page-oriented source for direct grid/store integration.
3051
3057
  *
@@ -3053,14 +3059,14 @@ class DataGrid {
3053
3059
  * and in infinity mode keeps its own internal page buffer instead of requiring
3054
3060
  * an ever-growing accumulated `data` array from the parent.
3055
3061
  */
3056
- source = input(null, ...(ngDevMode ? [{ debugName: "source" }] : []));
3062
+ source = input(null, ...(ngDevMode ? [{ debugName: "source" }] : /* istanbul ignore next */ []));
3057
3063
  /**
3058
3064
  * Column configuration for the table.
3059
3065
  *
3060
3066
  * Defines how each column should be rendered, sorted, and styled.
3061
3067
  * Supports custom templates, sorting keys, and expandable columns.
3062
3068
  */
3063
- columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
3069
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
3064
3070
  /**
3065
3071
  * Pagination mode: 'none', 'pagination', or 'infinity'.
3066
3072
  *
@@ -3068,35 +3074,35 @@ class DataGrid {
3068
3074
  * - `pagination` - Classic page-based pagination with fixed page size
3069
3075
  * - `infinity` - Infinite scroll mode, loads more data as user scrolls
3070
3076
  */
3071
- mode = input(this.defaults.mode, ...(ngDevMode ? [{ debugName: "mode" }] : []));
3077
+ mode = input(this.defaults.mode, ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
3072
3078
  /**
3073
3079
  * Array of pinned rows that remain visible at the top or bottom.
3074
3080
  *
3075
3081
  * Pinned rows stay fixed while the rest of the content scrolls.
3076
3082
  * Useful for totals, summaries, or always-visible items.
3077
3083
  */
3078
- pinnedRows = input([], ...(ngDevMode ? [{ debugName: "pinnedRows" }] : []));
3084
+ pinnedRows = input([], ...(ngDevMode ? [{ debugName: "pinnedRows" }] : /* istanbul ignore next */ []));
3079
3085
  /**
3080
3086
  * Function to determine if a row should become sticky at the top.
3081
3087
  *
3082
3088
  * When provided, rows matching this predicate will stick to the top
3083
3089
  * of the scroll area as the user scrolls.
3084
3090
  */
3085
- isRowSticky = input(undefined, ...(ngDevMode ? [{ debugName: "isRowSticky" }] : []));
3086
- isRowDisabled = input(undefined, ...(ngDevMode ? [{ debugName: "isRowDisabled" }] : []));
3091
+ isRowSticky = input(undefined, ...(ngDevMode ? [{ debugName: "isRowSticky" }] : /* istanbul ignore next */ []));
3092
+ isRowDisabled = input(undefined, ...(ngDevMode ? [{ debugName: "isRowDisabled" }] : /* istanbul ignore next */ []));
3087
3093
  /**
3088
3094
  * Function to choose a custom template for a row.
3089
3095
  *
3090
3096
  * If it returns a template, the row will be rendered with it;
3091
3097
  * otherwise, the default row rendering is used.
3092
3098
  */
3093
- getRowTemplate = input(undefined, ...(ngDevMode ? [{ debugName: "getRowTemplate" }] : []));
3099
+ getRowTemplate = input(undefined, ...(ngDevMode ? [{ debugName: "getRowTemplate" }] : /* istanbul ignore next */ []));
3094
3100
  /**
3095
3101
  * Whether to add an index column showing row numbers.
3096
3102
  *
3097
3103
  * When enabled, it automatically adds a column displaying sequential row numbers.
3098
3104
  */
3099
- hasIndexColumn = input(this.defaults.hasIndexColumn, { ...(ngDevMode ? { debugName: "hasIndexColumn" } : {}), transform: booleanAttribute });
3105
+ hasIndexColumn = input(this.defaults.hasIndexColumn, { ...(ngDevMode ? { debugName: "hasIndexColumn" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3100
3106
  /**
3101
3107
  * Row selection configuration.
3102
3108
  *
@@ -3107,21 +3113,21 @@ class DataGrid {
3107
3113
  *
3108
3114
  * When selection is enabled, a `key` must be provided to identify rows.
3109
3115
  */
3110
- selection = input(this.defaults.selection, ...(ngDevMode ? [{ debugName: "selection" }] : []));
3116
+ selection = input(this.defaults.selection, ...(ngDevMode ? [{ debugName: "selection" }] : /* istanbul ignore next */ []));
3111
3117
  /**
3112
3118
  * Number of items per page.
3113
3119
  *
3114
3120
  * Used in pagination and infinity scroll modes to control
3115
3121
  * how many rows are loaded at once. Default is 20.
3116
3122
  */
3117
- pageSize = input(this.defaults.pageSize, { ...(ngDevMode ? { debugName: "pageSize" } : {}), transform: numberAttribute });
3123
+ pageSize = input(this.defaults.pageSize, { ...(ngDevMode ? { debugName: "pageSize" } : /* istanbul ignore next */ {}), transform: numberAttribute });
3118
3124
  /**
3119
3125
  * Height of each row in pixels.
3120
3126
  *
3121
3127
  * Used for virtual scrolling calculations. Must be consistent
3122
3128
  * across all rows for accurate scrolling. Default is 40.
3123
3129
  */
3124
- rowHeight = input(this.defaults.rowHeight, { ...(ngDevMode ? { debugName: "rowHeight" } : {}), transform: numberAttribute });
3130
+ rowHeight = input(this.defaults.rowHeight, { ...(ngDevMode ? { debugName: "rowHeight" } : /* istanbul ignore next */ {}), transform: numberAttribute });
3125
3131
  /**
3126
3132
  * Grid height configuration.
3127
3133
  *
@@ -3129,21 +3135,21 @@ class DataGrid {
3129
3135
  * - `'full'` - Fill container height (100%), can be managed by host component style
3130
3136
  * - `'default'` - Height by CSS var (--re-data-grid-height)
3131
3137
  */
3132
- height = input(this.defaults.height, ...(ngDevMode ? [{ debugName: "height" }] : []));
3138
+ height = input(this.defaults.height, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
3133
3139
  /**
3134
3140
  * Size of the virtual scroll buffer.
3135
3141
  *
3136
3142
  * Number of extra rows to render above and below the viewport
3137
3143
  * to reduce flickering during fast scrolling. Default is 8.
3138
3144
  */
3139
- virtualBuffer = input(this.defaults.virtualBuffer, ...(ngDevMode ? [{ debugName: "virtualBuffer" }] : []));
3145
+ virtualBuffer = input(this.defaults.virtualBuffer, ...(ngDevMode ? [{ debugName: "virtualBuffer" }] : /* istanbul ignore next */ []));
3140
3146
  /**
3141
3147
  * Locks vertical scrolling while keeping horizontal scrolling enabled.
3142
3148
  *
3143
3149
  * Useful when the grid height is fixed by the parent and vertical scrolling
3144
3150
  * should be managed externally.
3145
3151
  */
3146
- lockVerticalScroll = input(false, { ...(ngDevMode ? { debugName: "lockVerticalScroll" } : {}), transform: booleanAttribute });
3152
+ lockVerticalScroll = input(false, { ...(ngDevMode ? { debugName: "lockVerticalScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3147
3153
  /**
3148
3154
  * Header group configuration for creating multi-level column headers.
3149
3155
  *
@@ -3163,36 +3169,36 @@ class DataGrid {
3163
3169
  * ];
3164
3170
  * ```
3165
3171
  */
3166
- headerGroups = input([], ...(ngDevMode ? [{ debugName: "headerGroups" }] : []));
3172
+ headerGroups = input([], ...(ngDevMode ? [{ debugName: "headerGroups" }] : /* istanbul ignore next */ []));
3167
3173
  /**
3168
3174
  * Loading state indicator.
3169
3175
  *
3170
3176
  * When true, displays loading template instead of data.
3171
3177
  * Useful during async data fetching operations.
3172
3178
  */
3173
- loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : {}), transform: booleanAttribute });
3174
- loadingMode = input(this.defaults.loadingMode, ...(ngDevMode ? [{ debugName: "loadingMode" }] : []));
3175
- deferContent = input(this.defaults.deferContent, { ...(ngDevMode ? { debugName: "deferContent" } : {}), transform: booleanAttribute });
3176
- deferHeader = input(this.defaults.deferHeader, { ...(ngDevMode ? { debugName: "deferHeader" } : {}), transform: booleanAttribute });
3177
- deferPinned = input(this.defaults.deferPinned, { ...(ngDevMode ? { debugName: "deferPinned" } : {}), transform: booleanAttribute });
3178
- deferCells = input(this.defaults.deferCells, { ...(ngDevMode ? { debugName: "deferCells" } : {}), transform: booleanAttribute });
3179
- deferIcons = input(this.defaults.deferIcons, { ...(ngDevMode ? { debugName: "deferIcons" } : {}), transform: booleanAttribute });
3180
- deferTooltip = input(this.defaults.deferTooltip, { ...(ngDevMode ? { debugName: "deferTooltip" } : {}), transform: booleanAttribute });
3179
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3180
+ loadingMode = input(this.defaults.loadingMode, ...(ngDevMode ? [{ debugName: "loadingMode" }] : /* istanbul ignore next */ []));
3181
+ deferContent = input(this.defaults.deferContent, { ...(ngDevMode ? { debugName: "deferContent" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3182
+ deferHeader = input(this.defaults.deferHeader, { ...(ngDevMode ? { debugName: "deferHeader" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3183
+ deferPinned = input(this.defaults.deferPinned, { ...(ngDevMode ? { debugName: "deferPinned" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3184
+ deferCells = input(this.defaults.deferCells, { ...(ngDevMode ? { debugName: "deferCells" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3185
+ deferIcons = input(this.defaults.deferIcons, { ...(ngDevMode ? { debugName: "deferIcons" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3186
+ deferTooltip = input(this.defaults.deferTooltip, { ...(ngDevMode ? { debugName: "deferTooltip" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3181
3187
  /**
3182
3188
  * Function or property name for getting a unique row key.
3183
3189
  *
3184
3190
  * Used for efficient change detection and row tracking.
3185
3191
  * Can be a property name (string) or a function that returns a unique identifier.
3186
3192
  */
3187
- rowKey = input(undefined, ...(ngDevMode ? [{ debugName: "rowKey" }] : []));
3193
+ rowKey = input(undefined, ...(ngDevMode ? [{ debugName: "rowKey" }] : /* istanbul ignore next */ []));
3188
3194
  /**
3189
3195
  * Whether to start a page count from 0 (true) or 1 (false).
3190
3196
  *
3191
3197
  * Controls the numbering scheme for pagination events.
3192
3198
  * Default is true (0-based indexing).
3193
3199
  */
3194
- pageStartFromZero = input(this.defaults.pageStartFromZero, { ...(ngDevMode ? { debugName: "pageStartFromZero" } : {}), transform: booleanAttribute });
3195
- sortMode = input(this.defaults.sortMode, ...(ngDevMode ? [{ debugName: "sortMode" }] : []));
3200
+ pageStartFromZero = input(this.defaults.pageStartFromZero, { ...(ngDevMode ? { debugName: "pageStartFromZero" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3201
+ sortMode = input(this.defaults.sortMode, ...(ngDevMode ? [{ debugName: "sortMode" }] : /* istanbul ignore next */ []));
3196
3202
  /**
3197
3203
  * Event emitted when requesting data for a new page.
3198
3204
  *
@@ -3442,62 +3448,62 @@ class DataGrid {
3442
3448
  overlayScrollFeaturePromise;
3443
3449
  stickyFeatureRef;
3444
3450
  stickyFeaturePromise;
3445
- rootEl = viewChild('root', ...(ngDevMode ? [{ debugName: "rootEl" }] : []));
3446
- scrollEl = viewChild('scroll', ...(ngDevMode ? [{ debugName: "scrollEl" }] : []));
3447
- headerEl = viewChild('header', ...(ngDevMode ? [{ debugName: "headerEl" }] : []));
3451
+ rootEl = viewChild('root', ...(ngDevMode ? [{ debugName: "rootEl" }] : /* istanbul ignore next */ []));
3452
+ scrollEl = viewChild('scroll', ...(ngDevMode ? [{ debugName: "scrollEl" }] : /* istanbul ignore next */ []));
3453
+ headerEl = viewChild('header', ...(ngDevMode ? [{ debugName: "headerEl" }] : /* istanbul ignore next */ []));
3448
3454
  ngZone = inject(NgZone);
3449
- cellTypedSlotRefs = contentChildren(DataGridTypeCellTemplateDirective, ...(ngDevMode ? [{ debugName: "cellTypedSlotRefs" }] : []));
3450
- cellDataSlotRefs = contentChildren(DataGridCellTemplateDirective, ...(ngDevMode ? [{ debugName: "cellDataSlotRefs" }] : []));
3451
- declarativeColumnRefs = contentChildren(DataGridDeclarativeColumn, ...(ngDevMode ? [{ debugName: "declarativeColumnRefs" }] : []));
3452
- headerSlotRefs = contentChildren(DataGridHeaderTemplateDirective, ...(ngDevMode ? [{ debugName: "headerSlotRefs" }] : []));
3453
- emptySlotRefs = contentChildren(DataGridCellEmptyDirective, ...(ngDevMode ? [{ debugName: "emptySlotRefs" }] : []));
3454
- loadingSlotRefs = contentChildren(DataGridCellLoadingDirective, ...(ngDevMode ? [{ debugName: "loadingSlotRefs" }] : []));
3455
- sortIcSlotRefs = contentChildren(DataGridSortIconDirective, ...(ngDevMode ? [{ debugName: "sortIcSlotRefs" }] : []));
3456
- expanderIcSlotRefs = contentChildren(DataGridExpanderIconDirective, ...(ngDevMode ? [{ debugName: "expanderIcSlotRefs" }] : []));
3457
- stickyRowSlotRefs = contentChildren(DataGridStickyRowDirective, ...(ngDevMode ? [{ debugName: "stickyRowSlotRefs" }] : []));
3458
- rowSlotRefs = contentChildren(DataGridRowDirective, ...(ngDevMode ? [{ debugName: "rowSlotRefs" }] : []));
3459
- emptyTpl = computed(() => this.emptySlotRefs()?.[0], ...(ngDevMode ? [{ debugName: "emptyTpl" }] : []));
3460
- loadingTpl = computed(() => this.loadingSlotRefs()?.[0], ...(ngDevMode ? [{ debugName: "loadingTpl" }] : []));
3461
- sortTpl = computed(() => this.sortIcSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "sortTpl" }] : []));
3462
- expanderTpl = computed(() => this.expanderIcSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "expanderTpl" }] : []));
3463
- stickyRowTpl = computed(() => this.stickyRowSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "stickyRowTpl" }] : []));
3464
- rowTpl = computed(() => this.rowSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "rowTpl" }] : []));
3465
- renderSlots = signal([], ...(ngDevMode ? [{ debugName: "renderSlots" }] : []));
3455
+ cellTypedSlotRefs = contentChildren(DataGridTypeCellTemplateDirective, ...(ngDevMode ? [{ debugName: "cellTypedSlotRefs" }] : /* istanbul ignore next */ []));
3456
+ cellDataSlotRefs = contentChildren(DataGridCellTemplateDirective, ...(ngDevMode ? [{ debugName: "cellDataSlotRefs" }] : /* istanbul ignore next */ []));
3457
+ declarativeColumnRefs = contentChildren(DataGridDeclarativeColumn, ...(ngDevMode ? [{ debugName: "declarativeColumnRefs" }] : /* istanbul ignore next */ []));
3458
+ headerSlotRefs = contentChildren(DataGridHeaderTemplateDirective, ...(ngDevMode ? [{ debugName: "headerSlotRefs" }] : /* istanbul ignore next */ []));
3459
+ emptySlotRefs = contentChildren(DataGridCellEmptyDirective, ...(ngDevMode ? [{ debugName: "emptySlotRefs" }] : /* istanbul ignore next */ []));
3460
+ loadingSlotRefs = contentChildren(DataGridCellLoadingDirective, ...(ngDevMode ? [{ debugName: "loadingSlotRefs" }] : /* istanbul ignore next */ []));
3461
+ sortIcSlotRefs = contentChildren(DataGridSortIconDirective, ...(ngDevMode ? [{ debugName: "sortIcSlotRefs" }] : /* istanbul ignore next */ []));
3462
+ expanderIcSlotRefs = contentChildren(DataGridExpanderIconDirective, ...(ngDevMode ? [{ debugName: "expanderIcSlotRefs" }] : /* istanbul ignore next */ []));
3463
+ stickyRowSlotRefs = contentChildren(DataGridStickyRowDirective, ...(ngDevMode ? [{ debugName: "stickyRowSlotRefs" }] : /* istanbul ignore next */ []));
3464
+ rowSlotRefs = contentChildren(DataGridRowDirective, ...(ngDevMode ? [{ debugName: "rowSlotRefs" }] : /* istanbul ignore next */ []));
3465
+ emptyTpl = computed(() => this.emptySlotRefs()?.[0], ...(ngDevMode ? [{ debugName: "emptyTpl" }] : /* istanbul ignore next */ []));
3466
+ loadingTpl = computed(() => this.loadingSlotRefs()?.[0], ...(ngDevMode ? [{ debugName: "loadingTpl" }] : /* istanbul ignore next */ []));
3467
+ sortTpl = computed(() => this.sortIcSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "sortTpl" }] : /* istanbul ignore next */ []));
3468
+ expanderTpl = computed(() => this.expanderIcSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "expanderTpl" }] : /* istanbul ignore next */ []));
3469
+ stickyRowTpl = computed(() => this.stickyRowSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "stickyRowTpl" }] : /* istanbul ignore next */ []));
3470
+ rowTpl = computed(() => this.rowSlotRefs()?.at(0), ...(ngDevMode ? [{ debugName: "rowTpl" }] : /* istanbul ignore next */ []));
3471
+ renderSlots = signal([], ...(ngDevMode ? [{ debugName: "renderSlots" }] : /* istanbul ignore next */ []));
3466
3472
  renderCount = 0;
3467
3473
  lastStartIndex = -1;
3468
3474
  lastEndIndex = -1;
3469
3475
  startIndex = 0;
3470
- headerHeight = signal(this.defaults.headerHeight, ...(ngDevMode ? [{ debugName: "headerHeight" }] : []));
3471
- tooltipEl = viewChild('tooltip', ...(ngDevMode ? [{ debugName: "tooltipEl" }] : []));
3476
+ headerHeight = signal(this.defaults.headerHeight, ...(ngDevMode ? [{ debugName: "headerHeight" }] : /* istanbul ignore next */ []));
3477
+ tooltipEl = viewChild('tooltip', ...(ngDevMode ? [{ debugName: "tooltipEl" }] : /* istanbul ignore next */ []));
3472
3478
  tooltipState = signal({
3473
3479
  text: '',
3474
3480
  x: 0,
3475
3481
  y: 0,
3476
3482
  visible: false,
3477
- }, ...(ngDevMode ? [{ debugName: "tooltipState" }] : []));
3478
- activeTooltipCellId = signal(null, ...(ngDevMode ? [{ debugName: "activeTooltipCellId" }] : []));
3483
+ }, ...(ngDevMode ? [{ debugName: "tooltipState" }] : /* istanbul ignore next */ []));
3484
+ activeTooltipCellId = signal(null, ...(ngDevMode ? [{ debugName: "activeTooltipCellId" }] : /* istanbul ignore next */ []));
3479
3485
  tooltipId = `re-dg-tooltip-${DataGrid.nextAriaId++}`;
3480
3486
  expanderRegionId = `re-dg-expander-${DataGrid.nextAriaId++}`;
3481
- stickyRowIndex = signal(null, ...(ngDevMode ? [{ debugName: "stickyRowIndex" }] : []));
3482
- stickyRowTopPx = signal(0, ...(ngDevMode ? [{ debugName: "stickyRowTopPx" }] : []));
3487
+ stickyRowIndex = signal(null, ...(ngDevMode ? [{ debugName: "stickyRowIndex" }] : /* istanbul ignore next */ []));
3488
+ stickyRowTopPx = signal(0, ...(ngDevMode ? [{ debugName: "stickyRowTopPx" }] : /* istanbul ignore next */ []));
3483
3489
  stickyRowData = computed(() => {
3484
3490
  const index = this.stickyRowIndex();
3485
3491
  if (index === null || index < 0 || index >= this.totalRowCount()) {
3486
3492
  return null;
3487
3493
  }
3488
3494
  return this.rowAt(index);
3489
- }, ...(ngDevMode ? [{ debugName: "stickyRowData" }] : []));
3490
- stickyIndexes = signal([], ...(ngDevMode ? [{ debugName: "stickyIndexes" }] : []));
3491
- contentInitialized = signal(false, ...(ngDevMode ? [{ debugName: "contentInitialized" }] : []));
3492
- isColumnResizing = signal(false, ...(ngDevMode ? [{ debugName: "isColumnResizing" }] : []));
3493
- expanderMap = signal(new Map(), ...(ngDevMode ? [{ debugName: "expanderMap" }] : []));
3495
+ }, ...(ngDevMode ? [{ debugName: "stickyRowData" }] : /* istanbul ignore next */ []));
3496
+ stickyIndexes = signal([], ...(ngDevMode ? [{ debugName: "stickyIndexes" }] : /* istanbul ignore next */ []));
3497
+ contentInitialized = signal(false, ...(ngDevMode ? [{ debugName: "contentInitialized" }] : /* istanbul ignore next */ []));
3498
+ isColumnResizing = signal(false, ...(ngDevMode ? [{ debugName: "isColumnResizing" }] : /* istanbul ignore next */ []));
3499
+ expanderMap = signal(new Map(), ...(ngDevMode ? [{ debugName: "expanderMap" }] : /* istanbul ignore next */ []));
3494
3500
  declarativeColumns = computed(() => {
3495
3501
  if (!this.contentInitialized()) {
3496
3502
  return normalizeDeclarativeColumns([], this.rowKey());
3497
3503
  }
3498
3504
  return normalizeDeclarativeColumns(this.declarativeColumnRefs().map((columnRef) => columnRef.toDeclarativeColumn()), this.rowKey());
3499
- }, ...(ngDevMode ? [{ debugName: "declarativeColumns" }] : []));
3500
- sourceColumns = computed(() => mergeDeclarativeColumns(this.declarativeColumns().columns, this.columns()), ...(ngDevMode ? [{ debugName: "sourceColumns" }] : []));
3505
+ }, ...(ngDevMode ? [{ debugName: "declarativeColumns" }] : /* istanbul ignore next */ []));
3506
+ sourceColumns = computed(() => mergeDeclarativeColumns(this.declarativeColumns().columns, this.columns()), ...(ngDevMode ? [{ debugName: "sourceColumns" }] : /* istanbul ignore next */ []));
3501
3507
  slotsFeature = createGridSlotsFeature({
3502
3508
  clearTypeTemplates: () => this.vm.globalTypeCellTpls.clear(),
3503
3509
  clearDataTemplates: () => this.vm.globalDataCellTpls.clear(),
@@ -3523,7 +3529,7 @@ class DataGrid {
3523
3529
  resizable: this.defaults.resizable,
3524
3530
  });
3525
3531
  return [...newColumns, ...this.sourceColumns()];
3526
- }, ...(ngDevMode ? [{ debugName: "extendedColumns" }] : []));
3532
+ }, ...(ngDevMode ? [{ debugName: "extendedColumns" }] : /* istanbul ignore next */ []));
3527
3533
  /**
3528
3534
  * Computed CSS height value based on height setting.
3529
3535
  */
@@ -3536,13 +3542,13 @@ class DataGrid {
3536
3542
  return '100%';
3537
3543
  }
3538
3544
  return 'var(--re-data-grid-height)';
3539
- }, ...(ngDevMode ? [{ debugName: "styleHeight" }] : []));
3540
- resolvedLoading = computed(() => this.sourceDataFeature.resolvedLoading(), ...(ngDevMode ? [{ debugName: "resolvedLoading" }] : []));
3541
- totalRowCount = computed(() => this.sourceDataFeature.totalRowCount(), ...(ngDevMode ? [{ debugName: "totalRowCount" }] : []));
3542
- selectionRows = computed(() => this.sourceDataFeature.selectionRows(), ...(ngDevMode ? [{ debugName: "selectionRows" }] : []));
3543
- ariaColCount = computed(() => this.vm.columnsToShow().length, ...(ngDevMode ? [{ debugName: "ariaColCount" }] : []));
3544
- ariaHeaderRowCount = computed(() => 1 + (this.vm.normalizedHeaderGroups().length ? 1 : 0), ...(ngDevMode ? [{ debugName: "ariaHeaderRowCount" }] : []));
3545
- ariaRowCount = computed(() => this.ariaHeaderRowCount() + this.vm.pinnedTop().length + this.totalRowCount() + this.vm.pinnedBottom().length, ...(ngDevMode ? [{ debugName: "ariaRowCount" }] : []));
3545
+ }, ...(ngDevMode ? [{ debugName: "styleHeight" }] : /* istanbul ignore next */ []));
3546
+ resolvedLoading = computed(() => this.sourceDataFeature.resolvedLoading(), ...(ngDevMode ? [{ debugName: "resolvedLoading" }] : /* istanbul ignore next */ []));
3547
+ totalRowCount = computed(() => this.sourceDataFeature.totalRowCount(), ...(ngDevMode ? [{ debugName: "totalRowCount" }] : /* istanbul ignore next */ []));
3548
+ selectionRows = computed(() => this.sourceDataFeature.selectionRows(), ...(ngDevMode ? [{ debugName: "selectionRows" }] : /* istanbul ignore next */ []));
3549
+ ariaColCount = computed(() => this.vm.columnsToShow().length, ...(ngDevMode ? [{ debugName: "ariaColCount" }] : /* istanbul ignore next */ []));
3550
+ ariaHeaderRowCount = computed(() => 1 + (this.vm.normalizedHeaderGroups().length ? 1 : 0), ...(ngDevMode ? [{ debugName: "ariaHeaderRowCount" }] : /* istanbul ignore next */ []));
3551
+ ariaRowCount = computed(() => this.ariaHeaderRowCount() + this.vm.pinnedTop().length + this.totalRowCount() + this.vm.pinnedBottom().length, ...(ngDevMode ? [{ debugName: "ariaRowCount" }] : /* istanbul ignore next */ []));
3546
3552
  hideSbTimeout;
3547
3553
  scrollbarRafId = null;
3548
3554
  stickyRafId = null;
@@ -4057,7 +4063,7 @@ class DataGrid {
4057
4063
  if (this.overlayScrollFeaturePromise) {
4058
4064
  return this.overlayScrollFeaturePromise;
4059
4065
  }
4060
- this.overlayScrollFeaturePromise = import('./reforgium-data-grid-grid-overlay-scroll.feature-DkosLX9_.mjs').then(({ createGridOverlayScrollFeature }) => {
4066
+ this.overlayScrollFeaturePromise = import('./reforgium-data-grid-grid-overlay-scroll.feature-BmB4qWr3.mjs').then(({ createGridOverlayScrollFeature }) => {
4061
4067
  const feature = createGridOverlayScrollFeature({
4062
4068
  getScrollElement: () => this.scrollEl()?.nativeElement ?? null,
4063
4069
  getThumbTop: () => this.vm.thumbTopPx(),
@@ -4182,4 +4188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
4182
4188
  */
4183
4189
 
4184
4190
  export { DataGridTypeCellTemplateDirective as D, clampThumbTop as a, DataGridCellTemplateDirective as b, computeScrollbarState as c, DataGridHeaderTemplateDirective as d, DataGridRowDirective as e, DataGridDeclarativeColumn as f, DataGridDeclarativeHeaderDirective as g, DataGridDeclarativeCellDirective as h, DataGridCellEmptyDirective as i, DataGridCellLoadingDirective as j, DataGridStickyRowDirective as k, DataGridSortIconDirective as l, mapThumbTopToScrollTop as m, DataGridExpanderIconDirective as n, DATA_GRID_CONFIG as o, DATA_GRID_HEADER_TEXT_RESOLVER as p, DATA_GRID_TYPE_RENDERERS as q, DATA_GRID_TYPE_TRANSFORMERS as r, DEFAULT_DATA_GRID_DEFAULTS as s, provideDataGridDefaults as t, provideDataGridHeaderTextResolver as u, provideDataGridHeaderTextResolverWithParent as v, provideDataGridTypeRenderers as w, provideDataGridTypeTransformers as x, DataGrid as y };
4185
- //# sourceMappingURL=reforgium-data-grid-reforgium-data-grid-D4fn-nOx.mjs.map
4191
+ //# sourceMappingURL=reforgium-data-grid-reforgium-data-grid-3n5k89Qx.mjs.map
@@ -4,17 +4,17 @@ import { input, output, viewChild, signal, computed, Component } from '@angular/
4
4
 
5
5
  // noinspection CssUnresolvedCustomProperty
6
6
  class DataGridDropdown {
7
- options = input([], ...(ngDevMode ? [{ debugName: "options" }] : []));
8
- value = input(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
9
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
10
- placeholder = input('Select', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
7
+ options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
8
+ value = input(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
9
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
10
+ placeholder = input('Select', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
11
11
  selectValue = output();
12
- root = viewChild('root', ...(ngDevMode ? [{ debugName: "root" }] : []));
13
- opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : []));
12
+ root = viewChild('root', ...(ngDevMode ? [{ debugName: "root" }] : /* istanbul ignore next */ []));
13
+ opened = signal(false, ...(ngDevMode ? [{ debugName: "opened" }] : /* istanbul ignore next */ []));
14
14
  selectedLabel = computed(() => {
15
15
  const selected = this.options().find((option) => option.value === this.value());
16
16
  return selected?.label ?? this.placeholder();
17
- }, ...(ngDevMode ? [{ debugName: "selectedLabel" }] : []));
17
+ }, ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
18
18
  toggleOpen() {
19
19
  if (this.disabled()) {
20
20
  return;
@@ -1,2 +1,2 @@
1
- export { o as DATA_GRID_CONFIG, p as DATA_GRID_HEADER_TEXT_RESOLVER, q as DATA_GRID_TYPE_RENDERERS, r as DATA_GRID_TYPE_TRANSFORMERS, s as DEFAULT_DATA_GRID_DEFAULTS, y as DataGrid, i as DataGridCellEmptyDirective, j as DataGridCellLoadingDirective, b as DataGridCellTemplateDirective, h as DataGridDeclarativeCellDirective, f as DataGridDeclarativeColumn, g as DataGridDeclarativeHeaderDirective, n as DataGridExpanderIconDirective, d as DataGridHeaderTemplateDirective, e as DataGridRowDirective, l as DataGridSortIconDirective, k as DataGridStickyRowDirective, D as DataGridTypeCellTemplateDirective, t as provideDataGridDefaults, u as provideDataGridHeaderTextResolver, v as provideDataGridHeaderTextResolverWithParent, w as provideDataGridTypeRenderers, x as provideDataGridTypeTransformers } from './reforgium-data-grid-reforgium-data-grid-D4fn-nOx.mjs';
1
+ export { o as DATA_GRID_CONFIG, p as DATA_GRID_HEADER_TEXT_RESOLVER, q as DATA_GRID_TYPE_RENDERERS, r as DATA_GRID_TYPE_TRANSFORMERS, s as DEFAULT_DATA_GRID_DEFAULTS, y as DataGrid, i as DataGridCellEmptyDirective, j as DataGridCellLoadingDirective, b as DataGridCellTemplateDirective, h as DataGridDeclarativeCellDirective, f as DataGridDeclarativeColumn, g as DataGridDeclarativeHeaderDirective, n as DataGridExpanderIconDirective, d as DataGridHeaderTemplateDirective, e as DataGridRowDirective, l as DataGridSortIconDirective, k as DataGridStickyRowDirective, D as DataGridTypeCellTemplateDirective, t as provideDataGridDefaults, u as provideDataGridHeaderTextResolver, v as provideDataGridHeaderTextResolverWithParent, w as provideDataGridTypeRenderers, x as provideDataGridTypeTransformers } from './reforgium-data-grid-reforgium-data-grid-3n5k89Qx.mjs';
2
2
  //# sourceMappingURL=reforgium-data-grid.mjs.map
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.1.1",
2
+ "version": "3.1.2",
3
3
  "name": "@reforgium/data-grid",
4
4
  "description": "reforgium DataGrid component",
5
5
  "author": "rtommievich",
@@ -1763,5 +1763,5 @@ declare class DataGrid<Data extends AnyDict> {
1763
1763
  }
1764
1764
 
1765
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 };
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, KeyResolver, RenderTemplateData };
1767
1767
  //# sourceMappingURL=reforgium-data-grid.d.ts.map