@alaarab/ogrid-angular-material 2.6.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,903 @@
1
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, signal, computed, effect } from '@angular/core';
2
+ import { BaseDataGridTableComponent, DataGridStateService, ColumnReorderService, VirtualScrollService, MarchingAntsOverlayComponent, StatusBarComponent, GridContextMenuComponent, EmptyStateComponent, FormulaRefOverlayComponent, CHECKBOX_COLUMN_WIDTH, ROW_NUMBER_COLUMN_ID, indexToColumnLetter, formatCellReference, } from '@alaarab/ogrid-angular';
3
+ import { ColumnHeaderFilterComponent } from '../column-header-filter/column-header-filter.component';
4
+ import { ColumnHeaderMenuComponent } from '../column-header-menu/column-header-menu.component';
5
+ import { InlineCellEditorComponent } from './inline-cell-editor.component';
6
+ import { PopoverCellEditorComponent } from './popover-cell-editor.component';
7
+ import * as i0 from "@angular/core";
8
+ const _c0 = ["wrapperEl"];
9
+ const _c1 = ["tableContainerElRef"];
10
+ const _forTrack0 = ($index, $item) => $item.columnId;
11
+ const _forTrack1 = ($index, $item) => ($item.columnDef == null ? null : $item.columnDef.columnId) ?? $index;
12
+ function _forTrack2($index, $item) { return this.getRowId()($item); }
13
+ const _forTrack3 = ($index, $item) => $item.col.columnId;
14
+ function DataGridTableComponent_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵelement(0, "th", 16);
16
+ } }
17
+ function DataGridTableComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "th", 16);
19
+ } }
20
+ function DataGridTableComponent_Conditional_9_For_4_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "th", 16);
22
+ i0.ɵɵtext(1);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const ɵ$index_24_r2 = ctx.$index;
26
+ const ctx_r2 = i0.ɵɵnextContext(2);
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.getColumnLetter(ɵ$index_24_r2), " ");
29
+ } }
30
+ function DataGridTableComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "tr", 7);
32
+ i0.ɵɵconditionalCreate(1, DataGridTableComponent_Conditional_9_Conditional_1_Template, 1, 0, "th", 16);
33
+ i0.ɵɵconditionalCreate(2, DataGridTableComponent_Conditional_9_Conditional_2_Template, 1, 0, "th", 16);
34
+ i0.ɵɵrepeaterCreate(3, DataGridTableComponent_Conditional_9_For_4_Template, 2, 1, "th", 16, _forTrack0);
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const ctx_r2 = i0.ɵɵnextContext();
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵconditional(ctx_r2.hasCheckboxCol() ? 1 : -1);
40
+ i0.ɵɵadvance();
41
+ i0.ɵɵconditional(ctx_r2.hasRowNumbersCol() ? 2 : -1);
42
+ i0.ɵɵadvance();
43
+ i0.ɵɵrepeater(ctx_r2.visibleCols());
44
+ } }
45
+ function DataGridTableComponent_For_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
46
+ const _r4 = i0.ɵɵgetCurrentView();
47
+ i0.ɵɵelementStart(0, "th", 17)(1, "div", 21)(2, "input", 22);
48
+ i0.ɵɵlistener("change", function DataGridTableComponent_For_11_Conditional_1_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onSelectAllChange($event)); });
49
+ i0.ɵɵelementEnd()()();
50
+ } if (rf & 2) {
51
+ const ctx_r2 = i0.ɵɵnextContext(2);
52
+ i0.ɵɵattribute("rowSpan", ctx_r2.headerRows().length > 1 ? 1 : null);
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵproperty("checked", ctx_r2.allSelected())("indeterminate", ctx_r2.someSelected());
55
+ } }
56
+ function DataGridTableComponent_For_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelement(0, "th", 18);
58
+ } if (rf & 2) {
59
+ const ctx_r2 = i0.ɵɵnextContext(2);
60
+ i0.ɵɵattribute("rowSpan", ctx_r2.headerRows().length - 1);
61
+ } }
62
+ function DataGridTableComponent_For_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
63
+ const _r5 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "th", 23)(1, "div", 24);
65
+ i0.ɵɵtext(2, "#");
66
+ i0.ɵɵelementEnd();
67
+ i0.ɵɵelementStart(3, "div", 25);
68
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_For_11_Conditional_3_Template_div_pointerdown_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onResizeRowNumber($event)); })("dblclick", function DataGridTableComponent_For_11_Conditional_3_Template_div_dblclick_3_listener($event) { i0.ɵɵrestoreView(_r5); return i0.ɵɵresetView($event.stopPropagation()); });
69
+ i0.ɵɵelementEnd()();
70
+ } if (rf & 2) {
71
+ const ctx_r2 = i0.ɵɵnextContext(2);
72
+ i0.ɵɵstyleProp("width", ctx_r2.getRowNumberWidth(), "px")("min-width", ctx_r2.getRowNumberWidth(), "px")("max-width", ctx_r2.getRowNumberWidth(), "px");
73
+ i0.ɵɵattribute("rowSpan", ctx_r2.headerRows().length > 1 ? 1 : null);
74
+ } }
75
+ function DataGridTableComponent_For_11_Conditional_4_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelement(0, "th", 26);
77
+ } if (rf & 2) {
78
+ const ctx_r2 = i0.ɵɵnextContext(2);
79
+ i0.ɵɵstyleProp("width", ctx_r2.getRowNumberWidth(), "px")("min-width", ctx_r2.getRowNumberWidth(), "px");
80
+ i0.ɵɵattribute("rowSpan", ctx_r2.headerRows().length - 1);
81
+ } }
82
+ function DataGridTableComponent_For_11_For_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelementStart(0, "th", 27);
84
+ i0.ɵɵtext(1);
85
+ i0.ɵɵelementEnd();
86
+ } if (rf & 2) {
87
+ const cell_r6 = i0.ɵɵnextContext().$implicit;
88
+ i0.ɵɵattribute("colSpan", cell_r6.colSpan);
89
+ i0.ɵɵadvance();
90
+ i0.ɵɵtextInterpolate1(" ", cell_r6.label, " ");
91
+ } }
92
+ function DataGridTableComponent_For_11_For_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
93
+ const _r7 = i0.ɵɵgetCurrentView();
94
+ i0.ɵɵdeclareLet(0);
95
+ i0.ɵɵelementStart(1, "th", 29);
96
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_For_11_For_6_Conditional_1_Template_th_pointerdown_1_listener($event) { i0.ɵɵrestoreView(_r7); const col_r8 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onHeaderMouseDown(col_r8.columnId, $event)); });
97
+ i0.ɵɵelementStart(2, "div", 30);
98
+ i0.ɵɵelement(3, "ogrid-column-header-filter", 31)(4, "column-header-menu", 32);
99
+ i0.ɵɵelementEnd();
100
+ i0.ɵɵelementStart(5, "div", 33);
101
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_For_11_For_6_Conditional_1_Template_div_pointerdown_5_listener($event) { i0.ɵɵrestoreView(_r7); const col_r8 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onResizeStart($event, col_r8)); })("dblclick", function DataGridTableComponent_For_11_For_6_Conditional_1_Template_div_dblclick_5_listener($event) { i0.ɵɵrestoreView(_r7); const col_r8 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onResizeDoubleClick($event, col_r8)); });
102
+ i0.ɵɵelementEnd()();
103
+ } if (rf & 2) {
104
+ const cell_r6 = i0.ɵɵnextContext().$implicit;
105
+ const ɵ$index_28_r9 = i0.ɵɵnextContext().$index;
106
+ const ctx_r2 = i0.ɵɵnextContext();
107
+ const col_r10 = i0.ɵɵstoreLet(ctx_r2.asColumnDef(cell_r6.columnDef));
108
+ const colW_r11 = ctx_r2.getColumnWidth(col_r10);
109
+ const pinned_r12 = ctx_r2.isPinned(col_r10.columnId);
110
+ const pinnedLeft_r13 = pinned_r12 === "left";
111
+ const pinnedRight_r14 = pinned_r12 === "right";
112
+ const sortState_r15 = ctx_r2.getSortState(col_r10.columnId);
113
+ const ariaSort_r16 = sortState_r15 === "asc" ? "ascending" : sortState_r15 === "desc" ? "descending" : null;
114
+ const config_r17 = ctx_r2.getFilterConfig(col_r10);
115
+ i0.ɵɵadvance();
116
+ i0.ɵɵstyleProp("min-width", ctx_r2.getEffectiveMinWidth(col_r10), "px")("width", colW_r11, "px")("max-width", colW_r11, "px")("cursor", ctx_r2.columnReorderService.isDragging() ? "grabbing" : "grab")("left", pinnedLeft_r13 ? ctx_r2.getPinnedLeftOffset(col_r10.columnId) : null, "px")("right", pinnedRight_r14 ? ctx_r2.getPinnedRightOffset(col_r10.columnId) : null, "px");
117
+ i0.ɵɵclassProp("ogrid-datagrid-th--pinned-left", pinnedLeft_r13)("ogrid-datagrid-th--pinned-right", pinnedRight_r14);
118
+ i0.ɵɵattribute("rowSpan", ctx_r2.headerRows().length > 1 ? ctx_r2.headerRows().length - ɵ$index_28_r9 : null)("data-column-id", col_r10.columnId)("aria-sort", ariaSort_r16);
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵproperty("columnKey", col_r10.columnId)("columnName", col_r10.name)("filterType", config_r17.filterType)("isSorted", config_r17.isSorted)("isSortedDescending", config_r17.isSortedDescending)("onSort", config_r17.onSort)("selectedValues", config_r17.selectedValues)("onFilterChange", config_r17.onFilterChange)("options", config_r17.options)("isLoadingOptions", config_r17.isLoadingOptions ?? false)("textValue", config_r17.textValue ?? "")("onTextChange", config_r17.onTextChange)("selectedUser", config_r17.selectedUser)("onUserChange", config_r17.onUserChange)("peopleSearch", config_r17.peopleSearch)("dateValue", config_r17.dateValue)("onDateChange", config_r17.onDateChange);
121
+ const pinState_r18 = ctx_r2.getPinState(col_r10.columnId);
122
+ i0.ɵɵadvance();
123
+ i0.ɵɵproperty("columnId", col_r10.columnId)("canPinLeft", pinState_r18.canPinLeft)("canPinRight", pinState_r18.canPinRight)("canUnpin", pinState_r18.canUnpin)("currentSort", sortState_r15)("isSortable", col_r10.sortable !== false)("isResizable", col_r10.resizable !== false)("handlers", ctx_r2.getColumnMenuHandlersMemoized(col_r10.columnId));
124
+ i0.ɵɵadvance();
125
+ i0.ɵɵattribute("aria-label", "Resize " + col_r10.name);
126
+ } }
127
+ function DataGridTableComponent_For_11_For_6_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵconditionalCreate(0, DataGridTableComponent_For_11_For_6_Conditional_0_Template, 2, 2, "th", 27)(1, DataGridTableComponent_For_11_For_6_Conditional_1_Template, 6, 46, "th", 28);
129
+ } if (rf & 2) {
130
+ const cell_r6 = ctx.$implicit;
131
+ i0.ɵɵconditional(cell_r6.isGroup ? 0 : 1);
132
+ } }
133
+ function DataGridTableComponent_For_11_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "tr", 8);
135
+ i0.ɵɵconditionalCreate(1, DataGridTableComponent_For_11_Conditional_1_Template, 3, 3, "th", 17);
136
+ i0.ɵɵconditionalCreate(2, DataGridTableComponent_For_11_Conditional_2_Template, 1, 1, "th", 18);
137
+ i0.ɵɵconditionalCreate(3, DataGridTableComponent_For_11_Conditional_3_Template, 4, 7, "th", 19);
138
+ i0.ɵɵconditionalCreate(4, DataGridTableComponent_For_11_Conditional_4_Template, 1, 5, "th", 20);
139
+ i0.ɵɵrepeaterCreate(5, DataGridTableComponent_For_11_For_6_Template, 2, 1, null, null, _forTrack1);
140
+ i0.ɵɵelementEnd();
141
+ } if (rf & 2) {
142
+ const row_r19 = ctx.$implicit;
143
+ const ɵ$index_28_r9 = ctx.$index;
144
+ const ctx_r2 = i0.ɵɵnextContext();
145
+ i0.ɵɵadvance();
146
+ i0.ɵɵconditional(ɵ$index_28_r9 === ctx_r2.headerRows().length - 1 && ctx_r2.hasCheckboxCol() ? 1 : -1);
147
+ i0.ɵɵadvance();
148
+ i0.ɵɵconditional(ɵ$index_28_r9 === 0 && ɵ$index_28_r9 < ctx_r2.headerRows().length - 1 && ctx_r2.hasCheckboxCol() ? 2 : -1);
149
+ i0.ɵɵadvance();
150
+ i0.ɵɵconditional(ɵ$index_28_r9 === ctx_r2.headerRows().length - 1 && ctx_r2.hasRowNumbersCol() ? 3 : -1);
151
+ i0.ɵɵadvance();
152
+ i0.ɵɵconditional(ɵ$index_28_r9 === 0 && ɵ$index_28_r9 < ctx_r2.headerRows().length - 1 && ctx_r2.hasRowNumbersCol() ? 4 : -1);
153
+ i0.ɵɵadvance();
154
+ i0.ɵɵrepeater(row_r19);
155
+ } }
156
+ function DataGridTableComponent_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
157
+ i0.ɵɵelement(0, "tr", 36);
158
+ } if (rf & 2) {
159
+ const ctx_r2 = i0.ɵɵnextContext(2);
160
+ i0.ɵɵstyleProp("height", ctx_r2.vsTopSpacerHeight(), "px");
161
+ } }
162
+ function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
163
+ const _r22 = i0.ɵɵgetCurrentView();
164
+ i0.ɵɵelementStart(0, "td", 38)(1, "div", 42);
165
+ i0.ɵɵlistener("click", function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r22); return i0.ɵɵresetView($event.stopPropagation()); });
166
+ i0.ɵɵelementStart(2, "input", 43);
167
+ i0.ɵɵlistener("change", function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r22); i0.ɵɵnextContext(); const rowIndex_r23 = i0.ɵɵreadContextLet(0); const rowId_r21 = i0.ɵɵreadContextLet(1); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onRowCheckboxChange(rowId_r21, $event, rowIndex_r23)); });
168
+ i0.ɵɵelementEnd()()();
169
+ } if (rf & 2) {
170
+ i0.ɵɵnextContext();
171
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
172
+ const isSelected_r24 = i0.ɵɵreadContextLet(2);
173
+ i0.ɵɵadvance();
174
+ i0.ɵɵattribute("data-row-index", rowIndex_r23)("data-col-index", 0);
175
+ i0.ɵɵadvance();
176
+ i0.ɵɵproperty("checked", isSelected_r24);
177
+ i0.ɵɵattribute("aria-label", "Select row " + (rowIndex_r23 + 1));
178
+ } }
179
+ function DataGridTableComponent_Conditional_12_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelementStart(0, "td", 44)(1, "div", 45);
181
+ i0.ɵɵtext(2);
182
+ i0.ɵɵelementEnd()();
183
+ } if (rf & 2) {
184
+ i0.ɵɵnextContext();
185
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
186
+ const ctx_r2 = i0.ɵɵnextContext(2);
187
+ i0.ɵɵstyleProp("width", ctx_r2.getRowNumberWidth(), "px")("min-width", ctx_r2.getRowNumberWidth(), "px")("max-width", ctx_r2.getRowNumberWidth(), "px");
188
+ i0.ɵɵadvance(2);
189
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.rowNumberOffset() + rowIndex_r23 + 1, " ");
190
+ } }
191
+ function DataGridTableComponent_Conditional_12_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵelement(0, "td");
193
+ } if (rf & 2) {
194
+ const ctx_r2 = i0.ɵɵnextContext(3);
195
+ i0.ɵɵstyleProp("width", ctx_r2.vsLeftSpacerWidth(), "px")("min-width", ctx_r2.vsLeftSpacerWidth(), "px")("max-width", ctx_r2.vsLeftSpacerWidth(), "px")("padding", "0");
196
+ } }
197
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
198
+ const _r25 = i0.ɵɵgetCurrentView();
199
+ i0.ɵɵelementStart(0, "div", 47)(1, "ogrid-mat-inline-cell-editor", 50);
200
+ i0.ɵɵlistener("commit", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_2_Template_ogrid_mat_inline_cell_editor_commit_1_listener($event) { i0.ɵɵrestoreView(_r25); const colLayout_r26 = i0.ɵɵnextContext().$implicit; const descriptor_r27 = i0.ɵɵreadContextLet(1); const item_r28 = i0.ɵɵnextContext().$implicit; const rowIndex_r23 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.commitEdit(item_r28, colLayout_r26.col.columnId, descriptor_r27.value, $event, rowIndex_r23, descriptor_r27.globalColIndex)); })("cancel", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_2_Template_ogrid_mat_inline_cell_editor_cancel_1_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.cancelEdit()); });
201
+ i0.ɵɵelementEnd()();
202
+ } if (rf & 2) {
203
+ const colLayout_r26 = i0.ɵɵnextContext().$implicit;
204
+ const descriptor_r27 = i0.ɵɵreadContextLet(1);
205
+ const item_r28 = i0.ɵɵnextContext().$implicit;
206
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
207
+ i0.ɵɵadvance();
208
+ i0.ɵɵproperty("value", descriptor_r27.value)("item", item_r28)("column", colLayout_r26.col)("rowIndex", rowIndex_r23)("editorType", descriptor_r27.editorType ?? "text");
209
+ } }
210
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_3_Template(rf, ctx) { if (rf & 1) {
211
+ i0.ɵɵelement(0, "ogrid-mat-popover-cell-editor", 48);
212
+ } if (rf & 2) {
213
+ const colLayout_r26 = i0.ɵɵnextContext().$implicit;
214
+ const descriptor_r27 = i0.ɵɵreadContextLet(1);
215
+ const item_r28 = i0.ɵɵnextContext().$implicit;
216
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
217
+ const ctx_r2 = i0.ɵɵnextContext(2);
218
+ const editorProps_r29 = ctx_r2.buildPopoverEditorProps(item_r28, colLayout_r26.col, descriptor_r27);
219
+ i0.ɵɵproperty("item", item_r28)("column", colLayout_r26.col)("rowIndex", rowIndex_r23)("globalColIndex", descriptor_r27.globalColIndex)("displayValue", descriptor_r27.displayValue)("editorProps", editorProps_r29)("onCancel", ctx_r2.cancelEdit.bind(ctx_r2));
220
+ } }
221
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
222
+ const _r31 = i0.ɵɵgetCurrentView();
223
+ i0.ɵɵelementStart(0, "input", 54);
224
+ i0.ɵɵlistener("change", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_2_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r31); const colLayout_r26 = i0.ɵɵnextContext(2).$implicit; const descriptor_r27 = i0.ɵɵreadContextLet(1); const item_r28 = i0.ɵɵnextContext().$implicit; const rowIndex_r23 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(descriptor_r27.canEditAny ? ctx_r2.commitBooleanEdit(item_r28, colLayout_r26.col.columnId, !!descriptor_r27.displayValue, rowIndex_r23, descriptor_r27.globalColIndex) : null); })("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_2_Template_input_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r31); i0.ɵɵnextContext(2); const descriptor_r27 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r23 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onBooleanCheckboxPointerDown($event, rowIndex_r23, descriptor_r27.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_2_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r31); return i0.ɵɵresetView($event.stopPropagation()); });
225
+ i0.ɵɵelementEnd();
226
+ } if (rf & 2) {
227
+ i0.ɵɵnextContext(2);
228
+ const descriptor_r27 = i0.ɵɵreadContextLet(1);
229
+ i0.ɵɵstyleProp("cursor", descriptor_r27.canEditAny ? "pointer" : "default");
230
+ i0.ɵɵproperty("checked", !!descriptor_r27.displayValue)("disabled", !descriptor_r27.canEditAny);
231
+ i0.ɵɵattribute("aria-label", descriptor_r27.displayValue ? "Checked" : "Unchecked");
232
+ } }
233
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵtext(0);
235
+ } if (rf & 2) {
236
+ i0.ɵɵnextContext();
237
+ const content_r32 = i0.ɵɵreadContextLet(0);
238
+ i0.ɵɵtextInterpolate1(" ", content_r32, " ");
239
+ } }
240
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
241
+ const _r33 = i0.ɵɵgetCurrentView();
242
+ i0.ɵɵelementStart(0, "div", 55);
243
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_4_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onFillHandleMouseDown($event)); });
244
+ i0.ɵɵelementEnd();
245
+ } }
246
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
247
+ const _r30 = i0.ɵɵgetCurrentView();
248
+ i0.ɵɵdeclareLet(0);
249
+ i0.ɵɵelementStart(1, "div", 51);
250
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template_div_pointerdown_1_listener($event) { i0.ɵɵrestoreView(_r30); i0.ɵɵnextContext(); const descriptor_r27 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r23 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellMouseDown($event, rowIndex_r23, descriptor_r27.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r30); i0.ɵɵnextContext(); const descriptor_r27 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r23 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellClick(rowIndex_r23, descriptor_r27.globalColIndex)); })("contextmenu", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template_div_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onCellContextMenu($event)); })("dblclick", function DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template_div_dblclick_1_listener() { i0.ɵɵrestoreView(_r30); const colLayout_r26 = i0.ɵɵnextContext().$implicit; const descriptor_r27 = i0.ɵɵreadContextLet(1); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(descriptor_r27.canEditAny ? ctx_r2.onCellDblClick(descriptor_r27.rowId, colLayout_r26.col.columnId) : null); });
251
+ i0.ɵɵconditionalCreate(2, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_2_Template, 1, 5, "input", 52)(3, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_3_Template, 1, 1);
252
+ i0.ɵɵconditionalCreate(4, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Conditional_4_Template, 1, 0, "div", 53);
253
+ i0.ɵɵelementEnd();
254
+ } if (rf & 2) {
255
+ const colLayout_r26 = i0.ɵɵnextContext().$implicit;
256
+ const descriptor_r27 = i0.ɵɵreadContextLet(1);
257
+ const item_r28 = i0.ɵɵnextContext().$implicit;
258
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
259
+ const ctx_r2 = i0.ɵɵnextContext(2);
260
+ i0.ɵɵstoreLet(ctx_r2.resolveCellContent(colLayout_r26.col, item_r28, descriptor_r27.displayValue));
261
+ const cellStyle_r34 = ctx_r2.resolveCellStyleFn(colLayout_r26.col, item_r28, descriptor_r27.displayValue);
262
+ i0.ɵɵadvance();
263
+ i0.ɵɵstyleMap(cellStyle_r34 ?? undefined);
264
+ i0.ɵɵclassProp("ogrid-datagrid-cell--active", descriptor_r27.isActive)("ogrid-datagrid-cell--active-in-range", descriptor_r27.isActive && descriptor_r27.isInRange)("ogrid-datagrid-cell--in-range", descriptor_r27.isInRange && !descriptor_r27.isActive)("ogrid-datagrid-cell--in-cut-range", descriptor_r27.isInCutRange)("ogrid-datagrid-cell--editable", descriptor_r27.canEditAny)("ogrid-datagrid-cell--numeric", colLayout_r26.col.type === "numeric")("ogrid-datagrid-cell--boolean", colLayout_r26.col.type === "boolean");
265
+ i0.ɵɵattribute("data-row-index", rowIndex_r23)("data-col-index", descriptor_r27.globalColIndex)("data-in-range", descriptor_r27.isInRange ? "true" : null)("tabindex", descriptor_r27.isActive ? 0 : -1)("role", descriptor_r27.canEditAny ? "button" : null);
266
+ i0.ɵɵadvance();
267
+ i0.ɵɵconditional(colLayout_r26.col.type === "boolean" ? 2 : 3);
268
+ i0.ɵɵadvance(2);
269
+ i0.ɵɵconditional(descriptor_r27.canEditAny && descriptor_r27.isSelectionEndCell ? 4 : -1);
270
+ } }
271
+ function DataGridTableComponent_Conditional_12_For_3_For_8_Template(rf, ctx) { if (rf & 1) {
272
+ i0.ɵɵelementStart(0, "td", 46);
273
+ i0.ɵɵdeclareLet(1);
274
+ i0.ɵɵconditionalCreate(2, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_2_Template, 2, 5, "div", 47)(3, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_3_Template, 1, 7, "ogrid-mat-popover-cell-editor", 48)(4, DataGridTableComponent_Conditional_12_For_3_For_8_Conditional_4_Template, 5, 24, "div", 49);
275
+ i0.ɵɵelementEnd();
276
+ } if (rf & 2) {
277
+ const colLayout_r26 = ctx.$implicit;
278
+ const item_r28 = i0.ɵɵnextContext().$implicit;
279
+ const rowIndex_r23 = i0.ɵɵreadContextLet(0);
280
+ const ctx_r2 = i0.ɵɵnextContext(2);
281
+ i0.ɵɵstyleProp("min-width", colLayout_r26.minWidth, "px")("width", colLayout_r26.width, "px")("max-width", colLayout_r26.width, "px")("left", colLayout_r26.pinnedLeft ? ctx_r2.getPinnedLeftOffset(colLayout_r26.col.columnId) : null, "px")("right", colLayout_r26.pinnedRight ? ctx_r2.getPinnedRightOffset(colLayout_r26.col.columnId) : null, "px");
282
+ i0.ɵɵclassProp("ogrid-datagrid-td--pinned-left", colLayout_r26.pinnedLeft)("ogrid-datagrid-td--pinned-right", colLayout_r26.pinnedRight);
283
+ i0.ɵɵattribute("data-column-id", colLayout_r26.col.columnId);
284
+ i0.ɵɵadvance();
285
+ const descriptor_r35 = i0.ɵɵstoreLet(ctx_r2.getCellDescriptor(item_r28, colLayout_r26.col, rowIndex_r23, ctx_r2.getGlobalColIndex(colLayout_r26.col)));
286
+ i0.ɵɵadvance();
287
+ i0.ɵɵconditional(descriptor_r35.mode === "editing-inline" ? 2 : descriptor_r35.mode === "editing-popover" ? 3 : 4);
288
+ } }
289
+ function DataGridTableComponent_Conditional_12_For_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
290
+ i0.ɵɵelement(0, "td");
291
+ } if (rf & 2) {
292
+ const ctx_r2 = i0.ɵɵnextContext(3);
293
+ i0.ɵɵstyleProp("width", ctx_r2.vsRightSpacerWidth(), "px")("min-width", ctx_r2.vsRightSpacerWidth(), "px")("max-width", ctx_r2.vsRightSpacerWidth(), "px")("padding", "0");
294
+ } }
295
+ function DataGridTableComponent_Conditional_12_For_3_Template(rf, ctx) { if (rf & 1) {
296
+ const _r20 = i0.ɵɵgetCurrentView();
297
+ i0.ɵɵdeclareLet(0)(1)(2);
298
+ i0.ɵɵelementStart(3, "tr", 37);
299
+ i0.ɵɵlistener("click", function DataGridTableComponent_Conditional_12_For_3_Template_tr_click_3_listener($event) { i0.ɵɵrestoreView(_r20); const rowId_r21 = i0.ɵɵreadContextLet(1); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onRowClick($event, rowId_r21)); });
300
+ i0.ɵɵconditionalCreate(4, DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template, 3, 4, "td", 38);
301
+ i0.ɵɵconditionalCreate(5, DataGridTableComponent_Conditional_12_For_3_Conditional_5_Template, 3, 7, "td", 39);
302
+ i0.ɵɵconditionalCreate(6, DataGridTableComponent_Conditional_12_For_3_Conditional_6_Template, 1, 8, "td", 40);
303
+ i0.ɵɵrepeaterCreate(7, DataGridTableComponent_Conditional_12_For_3_For_8_Template, 5, 17, "td", 41, _forTrack3);
304
+ i0.ɵɵconditionalCreate(9, DataGridTableComponent_Conditional_12_For_3_Conditional_9_Template, 1, 8, "td", 40);
305
+ i0.ɵɵelementEnd();
306
+ } if (rf & 2) {
307
+ const item_r28 = ctx.$implicit;
308
+ const ɵ$index_83_r36 = ctx.$index;
309
+ const ctx_r2 = i0.ɵɵnextContext(2);
310
+ i0.ɵɵstoreLet(ctx_r2.vsStartIndex() + ɵ$index_83_r36);
311
+ i0.ɵɵadvance();
312
+ const rowId_r37 = i0.ɵɵstoreLet(ctx_r2.getRowId()(item_r28));
313
+ i0.ɵɵadvance();
314
+ const isSelected_r38 = i0.ɵɵstoreLet(ctx_r2.selectedRowIds().has(rowId_r37));
315
+ i0.ɵɵadvance();
316
+ i0.ɵɵclassProp("ogrid-datagrid-row--selected", isSelected_r38);
317
+ i0.ɵɵattribute("data-row-id", rowId_r37)("aria-selected", isSelected_r38 || null);
318
+ i0.ɵɵadvance();
319
+ i0.ɵɵconditional(ctx_r2.hasCheckboxCol() ? 4 : -1);
320
+ i0.ɵɵadvance();
321
+ i0.ɵɵconditional(ctx_r2.hasRowNumbersCol() ? 5 : -1);
322
+ i0.ɵɵadvance();
323
+ i0.ɵɵconditional(ctx_r2.vsColumnsEnabled() && ctx_r2.vsLeftSpacerWidth() > 0 ? 6 : -1);
324
+ i0.ɵɵadvance();
325
+ i0.ɵɵrepeater(ctx_r2.vsColumnLayouts());
326
+ i0.ɵɵadvance(2);
327
+ i0.ɵɵconditional(ctx_r2.vsColumnsEnabled() && ctx_r2.vsRightSpacerWidth() > 0 ? 9 : -1);
328
+ } }
329
+ function DataGridTableComponent_Conditional_12_Conditional_4_Template(rf, ctx) { if (rf & 1) {
330
+ i0.ɵɵelement(0, "tr", 36);
331
+ } if (rf & 2) {
332
+ const ctx_r2 = i0.ɵɵnextContext(2);
333
+ i0.ɵɵstyleProp("height", ctx_r2.vsBottomSpacerHeight(), "px");
334
+ } }
335
+ function DataGridTableComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
336
+ i0.ɵɵelementStart(0, "tbody");
337
+ i0.ɵɵconditionalCreate(1, DataGridTableComponent_Conditional_12_Conditional_1_Template, 1, 2, "tr", 34);
338
+ i0.ɵɵrepeaterCreate(2, DataGridTableComponent_Conditional_12_For_3_Template, 10, 11, "tr", 35, _forTrack2, true);
339
+ i0.ɵɵconditionalCreate(4, DataGridTableComponent_Conditional_12_Conditional_4_Template, 1, 2, "tr", 34);
340
+ i0.ɵɵelementEnd();
341
+ } if (rf & 2) {
342
+ const ctx_r2 = i0.ɵɵnextContext();
343
+ i0.ɵɵadvance();
344
+ i0.ɵɵconditional(ctx_r2.vsEnabled() && ctx_r2.vsTopSpacerHeight() > 0 ? 1 : -1);
345
+ i0.ɵɵadvance();
346
+ i0.ɵɵrepeater(ctx_r2.vsVisibleItems());
347
+ i0.ɵɵadvance(2);
348
+ i0.ɵɵconditional(ctx_r2.vsEnabled() && ctx_r2.vsBottomSpacerHeight() > 0 ? 4 : -1);
349
+ } }
350
+ function DataGridTableComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
351
+ i0.ɵɵelement(0, "ogrid-formula-ref-overlay", 10);
352
+ } if (rf & 2) {
353
+ const ctx_r2 = i0.ɵɵnextContext();
354
+ i0.ɵɵproperty("containerEl", ctx_r2.tableContainerEl())("references", ctx_r2.formulaReferences())("colOffset", ctx_r2.colOffset());
355
+ } }
356
+ function DataGridTableComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
357
+ const _r39 = i0.ɵɵgetCurrentView();
358
+ i0.ɵɵelementStart(0, "div", 11)(1, "div", 56);
359
+ i0.ɵɵtext(2, "No results found");
360
+ i0.ɵɵelementEnd();
361
+ i0.ɵɵelementStart(3, "div", 57)(4, "ogrid-empty-state", 58);
362
+ i0.ɵɵlistener("clearAll", function DataGridTableComponent_Conditional_15_Template_ogrid_empty_state_clearAll_4_listener() { let tmp_5_0; i0.ɵɵrestoreView(_r39); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_5_0 = ctx_r2.emptyState()) == null ? null : tmp_5_0.onClearAll()); });
363
+ i0.ɵɵelementEnd()()();
364
+ } if (rf & 2) {
365
+ let tmp_4_0;
366
+ let tmp_5_0;
367
+ let tmp_6_0;
368
+ const ctx_r2 = i0.ɵɵnextContext();
369
+ i0.ɵɵadvance(4);
370
+ i0.ɵɵproperty("message", (tmp_4_0 = ctx_r2.emptyState()) == null ? null : tmp_4_0.message)("hasActiveFilters", ((tmp_5_0 = ctx_r2.emptyState()) == null ? null : tmp_5_0.hasActiveFilters) ?? false)("render", (tmp_6_0 = ctx_r2.emptyState()) == null ? null : tmp_6_0.render);
371
+ } }
372
+ function DataGridTableComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
373
+ i0.ɵɵelement(0, "div", 59);
374
+ } if (rf & 2) {
375
+ const ctx_r2 = i0.ɵɵnextContext();
376
+ i0.ɵɵstyleProp("left", ctx_r2.columnReorderService.dropIndicatorX(), "px");
377
+ } }
378
+ function DataGridTableComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
379
+ const _r40 = i0.ɵɵgetCurrentView();
380
+ i0.ɵɵelementStart(0, "div", 60);
381
+ i0.ɵɵlistener("click", function DataGridTableComponent_Conditional_17_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); })("contextmenu", function DataGridTableComponent_Conditional_17_Template_div_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); $event.preventDefault(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
382
+ i0.ɵɵelementStart(1, "ogrid-context-menu", 61);
383
+ i0.ɵɵlistener("undoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_undoAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUndo()); })("redoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_redoAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRedo()); })("copyAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_copyAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCopy()); })("cutAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_cutAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCut()); })("pasteAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_pasteAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handlePaste()); })("selectAllAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_selectAllAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSelectAllCells()); })("closeAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_closeAction_1_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
384
+ i0.ɵɵelementEnd()();
385
+ } if (rf & 2) {
386
+ const ctx_r2 = i0.ɵɵnextContext();
387
+ i0.ɵɵadvance();
388
+ i0.ɵɵproperty("x", ctx_r2.menuPosition().x)("y", ctx_r2.menuPosition().y)("hasSelection", ctx_r2.hasCellSelection())("canUndoProp", ctx_r2.canUndo())("canRedoProp", ctx_r2.canRedo());
389
+ } }
390
+ function DataGridTableComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
391
+ i0.ɵɵelement(0, "ogrid-status-bar", 14);
392
+ } if (rf & 2) {
393
+ const ctx_r2 = i0.ɵɵnextContext();
394
+ const sbConfig_r41 = i0.ɵɵreadContextLet(18);
395
+ i0.ɵɵproperty("totalCount", sbConfig_r41.totalCount)("filteredCount", sbConfig_r41.filteredCount)("selectedCount", sbConfig_r41.selectedCount ?? ctx_r2.selectedRowIds().size)("selectedCellCount", ctx_r2.selectionCellCount())("aggregation", sbConfig_r41.aggregation)("suppressRowCount", sbConfig_r41.suppressRowCount)("classNames", ctx_r2.statusBarClasses);
396
+ } }
397
+ function DataGridTableComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
398
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 62);
399
+ i0.ɵɵelement(2, "div", 63);
400
+ i0.ɵɵelementStart(3, "span");
401
+ i0.ɵɵtext(4);
402
+ i0.ɵɵelementEnd()()();
403
+ } if (rf & 2) {
404
+ const ctx_r2 = i0.ɵɵnextContext();
405
+ i0.ɵɵadvance(4);
406
+ i0.ɵɵtextInterpolate(ctx_r2.loadingMessage());
407
+ } }
408
+ /**
409
+ * DataGridTable component using native HTML table with Material Design-inspired styling.
410
+ * Standalone component - this is the workhorse of the grid.
411
+ */
412
+ export class DataGridTableComponent extends BaseDataGridTableComponent {
413
+ set propsInput(value) {
414
+ this.propsSignal.set(value);
415
+ }
416
+ constructor() {
417
+ super();
418
+ this.propsSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "propsSignal" }] : []));
419
+ this.statusBarClasses = {
420
+ statusBar: 'ogrid-status-bar',
421
+ statusBarItem: 'ogrid-status-bar-item',
422
+ statusBarLabel: 'ogrid-status-bar-label',
423
+ statusBarValue: 'ogrid-status-bar-value',
424
+ };
425
+ this.showColumnLetters = computed(() => !!this.getProps()?.showColumnLetters, ...(ngDevMode ? [{ debugName: "showColumnLetters" }] : []));
426
+ this.formulaReferences = computed(() => this.getProps()?.formulaReferences, ...(ngDevMode ? [{ debugName: "formulaReferences" }] : []));
427
+ this.initBase();
428
+ // Watch active cell and notify parent via onActiveCellChange when cellReferences is enabled
429
+ effect(() => {
430
+ const props = this.getProps();
431
+ const onActiveCellChange = props?.onActiveCellChange;
432
+ if (!onActiveCellChange)
433
+ return;
434
+ const ac = this.activeCell();
435
+ if (ac) {
436
+ const colIndex = ac.columnIndex - this.colOffset();
437
+ const rowNumber = ac.rowIndex + 1;
438
+ onActiveCellChange(formatCellReference(colIndex, rowNumber));
439
+ }
440
+ else {
441
+ onActiveCellChange(null);
442
+ }
443
+ });
444
+ }
445
+ getProps() {
446
+ return this.propsSignal();
447
+ }
448
+ getWrapperRef() {
449
+ return this.wrapperRef;
450
+ }
451
+ getTableContainerRef() {
452
+ return this.tableContainerRef;
453
+ }
454
+ getColumnLetter(colIdx) {
455
+ return indexToColumnLetter(colIdx);
456
+ }
457
+ onResizeRowNumber(event) {
458
+ event.stopPropagation();
459
+ this.onResizeStart(event, { columnId: ROW_NUMBER_COLUMN_ID, name: '#' });
460
+ }
461
+ static { this.ɵfac = function DataGridTableComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataGridTableComponent)(); }; }
462
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataGridTableComponent, selectors: [["ogrid-datagrid-table"]], viewQuery: function DataGridTableComponent_Query(rf, ctx) { if (rf & 1) {
463
+ i0.ɵɵviewQuery(_c0, 5)(_c1, 5);
464
+ } if (rf & 2) {
465
+ let _t;
466
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.wrapperRef = _t.first);
467
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableContainerRef = _t.first);
468
+ } }, inputs: { propsInput: [0, "props", "propsInput"] }, features: [i0.ɵɵProvidersFeature([DataGridStateService, ColumnReorderService, VirtualScrollService]), i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 39, consts: [["wrapperEl", ""], ["tableContainerElRef", ""], [1, "ogrid-datagrid-root"], ["tabindex", "0", "role", "region", "data-ogrid-scroll-container", "", 1, "ogrid-datagrid-wrapper", 3, "pointerdown", "keydown", "scroll", "contextmenu"], [1, "ogrid-datagrid-scroll-wrapper"], [2, "overflow-x", "clip"], ["role", "grid", 1, "ogrid-datagrid-table"], [1, "ogrid-column-letter-row"], [1, "ogrid-datagrid-header-row"], [3, "containerEl", "selectionRange", "copyRange", "cutRange", "colOffset", "columnSizingVersion", "items", "visibleColumns", "columnOrder"], [3, "containerEl", "references", "colOffset"], [1, "ogrid-datagrid-empty"], [1, "ogrid-datagrid-drop-indicator", 3, "left"], [1, "ogrid-datagrid-context-menu-overlay"], [3, "totalCount", "filteredCount", "selectedCount", "selectedCellCount", "aggregation", "suppressRowCount", "classNames"], [1, "ogrid-datagrid-loading-overlay"], [1, "ogrid-column-letter-cell"], [1, "ogrid-datagrid-th", "ogrid-datagrid-checkbox-col"], [1, "ogrid-datagrid-th", 2, "width", "48px", "min-width", "48px", "padding", "0"], [1, "ogrid-datagrid-th", "ogrid-row-number-header", 3, "width", "min-width", "max-width"], [1, "ogrid-datagrid-th", 2, "padding", "0", 3, "width", "min-width"], [1, "ogrid-datagrid-checkbox-wrapper"], ["type", "checkbox", "aria-label", "Select all rows", 3, "change", "checked", "indeterminate"], [1, "ogrid-datagrid-th", "ogrid-row-number-header"], [1, "ogrid-row-number-header-content"], ["role", "separator", "aria-label", "Resize row numbers", 1, "ogrid-datagrid-resize-handle", 3, "pointerdown", "dblclick"], [1, "ogrid-datagrid-th", 2, "padding", "0"], ["scope", "colgroup", 1, "ogrid-datagrid-th", "ogrid-datagrid-group-header"], ["scope", "col", 1, "ogrid-datagrid-th", 3, "ogrid-datagrid-th--pinned-left", "ogrid-datagrid-th--pinned-right", "minWidth", "width", "maxWidth", "cursor", "left", "right"], ["scope", "col", 1, "ogrid-datagrid-th", 3, "pointerdown"], [2, "display", "flex", "align-items", "center", "gap", "4px"], [3, "columnKey", "columnName", "filterType", "isSorted", "isSortedDescending", "onSort", "selectedValues", "onFilterChange", "options", "isLoadingOptions", "textValue", "onTextChange", "selectedUser", "onUserChange", "peopleSearch", "dateValue", "onDateChange"], [3, "columnId", "canPinLeft", "canPinRight", "canUnpin", "currentSort", "isSortable", "isResizable", "handlers"], ["role", "separator", 1, "ogrid-datagrid-resize-handle", 3, "pointerdown", "dblclick"], [1, "ogrid-datagrid-vs-spacer", 3, "height"], [1, "ogrid-datagrid-row", 3, "ogrid-datagrid-row--selected"], [1, "ogrid-datagrid-vs-spacer"], [1, "ogrid-datagrid-row", 3, "click"], [1, "ogrid-datagrid-td", "ogrid-datagrid-checkbox-col"], [1, "ogrid-datagrid-td", "ogrid-row-number-cell", 3, "width", "min-width", "max-width"], [3, "width", "minWidth", "maxWidth", "padding"], [1, "ogrid-datagrid-td", 3, "ogrid-datagrid-td--pinned-left", "ogrid-datagrid-td--pinned-right", "minWidth", "width", "maxWidth", "left", "right"], [1, "ogrid-datagrid-checkbox-wrapper", 3, "click"], ["type", "checkbox", 3, "change", "checked"], [1, "ogrid-datagrid-td", "ogrid-row-number-cell"], [1, "ogrid-row-number-cell-content"], [1, "ogrid-datagrid-td"], [1, "ogrid-editing-cell"], [3, "item", "column", "rowIndex", "globalColIndex", "displayValue", "editorProps", "onCancel"], [1, "ogrid-datagrid-cell", 3, "ogrid-datagrid-cell--active", "ogrid-datagrid-cell--active-in-range", "ogrid-datagrid-cell--in-range", "ogrid-datagrid-cell--in-cut-range", "ogrid-datagrid-cell--editable", "ogrid-datagrid-cell--numeric", "ogrid-datagrid-cell--boolean", "style"], [3, "commit", "cancel", "value", "item", "column", "rowIndex", "editorType"], [1, "ogrid-datagrid-cell", 3, "pointerdown", "click", "contextmenu", "dblclick"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "checked", "disabled", "cursor"], ["aria-label", "Fill handle", 1, "ogrid-datagrid-fill-handle"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "change", "pointerdown", "click", "checked", "disabled"], ["aria-label", "Fill handle", 1, "ogrid-datagrid-fill-handle", 3, "pointerdown"], [1, "ogrid-datagrid-empty__title"], [1, "ogrid-datagrid-empty__message"], [3, "clearAll", "message", "hasActiveFilters", "render"], [1, "ogrid-datagrid-drop-indicator"], [1, "ogrid-datagrid-context-menu-overlay", 3, "click", "contextmenu"], [3, "undoAction", "redoAction", "copyAction", "cutAction", "pasteAction", "selectAllAction", "closeAction", "x", "y", "hasSelection", "canUndoProp", "canRedoProp"], [1, "ogrid-datagrid-loading-inner"], [1, "ogrid-datagrid-spinner"]], template: function DataGridTableComponent_Template(rf, ctx) { if (rf & 1) {
469
+ const _r1 = i0.ɵɵgetCurrentView();
470
+ i0.ɵɵelementStart(0, "div", 2)(1, "div", 3, 0);
471
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Template_div_pointerdown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onWrapperMouseDown($event)); })("keydown", function DataGridTableComponent_Template_div_keydown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onGridKeyDown($event)); })("scroll", function DataGridTableComponent_Template_div_scroll_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onWrapperScroll($event)); })("contextmenu", function DataGridTableComponent_Template_div_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.preventDefault()); });
472
+ i0.ɵɵelementStart(3, "div", 4)(4, "div", 5)(5, "div", null, 1)(7, "table", 6)(8, "thead");
473
+ i0.ɵɵconditionalCreate(9, DataGridTableComponent_Conditional_9_Template, 5, 2, "tr", 7);
474
+ i0.ɵɵrepeaterCreate(10, DataGridTableComponent_For_11_Template, 7, 4, "tr", 8, i0.ɵɵrepeaterTrackByIndex);
475
+ i0.ɵɵelementEnd();
476
+ i0.ɵɵconditionalCreate(12, DataGridTableComponent_Conditional_12_Template, 5, 2, "tbody");
477
+ i0.ɵɵelementEnd();
478
+ i0.ɵɵelement(13, "ogrid-marching-ants-overlay", 9);
479
+ i0.ɵɵconditionalCreate(14, DataGridTableComponent_Conditional_14_Template, 1, 3, "ogrid-formula-ref-overlay", 10);
480
+ i0.ɵɵconditionalCreate(15, DataGridTableComponent_Conditional_15_Template, 5, 3, "div", 11);
481
+ i0.ɵɵelementEnd()()();
482
+ i0.ɵɵconditionalCreate(16, DataGridTableComponent_Conditional_16_Template, 1, 2, "div", 12);
483
+ i0.ɵɵconditionalCreate(17, DataGridTableComponent_Conditional_17_Template, 2, 5, "div", 13);
484
+ i0.ɵɵelementEnd();
485
+ i0.ɵɵdeclareLet(18);
486
+ i0.ɵɵconditionalCreate(19, DataGridTableComponent_Conditional_19_Template, 1, 7, "ogrid-status-bar", 14);
487
+ i0.ɵɵconditionalCreate(20, DataGridTableComponent_Conditional_20_Template, 5, 1, "div", 15);
488
+ i0.ɵɵelementEnd();
489
+ } if (rf & 2) {
490
+ i0.ɵɵadvance();
491
+ i0.ɵɵstyleProp("--ogrid-row-height", ctx.rowHeightCssVar());
492
+ i0.ɵɵclassProp("ogrid-datagrid-wrapper--fit", ctx.layoutModeFit())("ogrid-datagrid-wrapper--loading-empty", ctx.isLoading() && ctx.items().length === 0)("ogrid-datagrid-wrapper--overflow-x", ctx.allowOverflowX());
493
+ i0.ɵɵattribute("aria-label", ctx.ariaLabel())("aria-labelledby", ctx.ariaLabelledBy())("data-overflow-x", ctx.allowOverflowX() ? "true" : "false")("data-virtual-scroll", ctx.vsEnabled() ? "" : null);
494
+ i0.ɵɵadvance(3);
495
+ i0.ɵɵstyleProp("min-width", ctx.allowOverflowX() ? ctx.minTableWidth() : undefined, "px");
496
+ i0.ɵɵadvance();
497
+ i0.ɵɵclassProp("ogrid-datagrid-table-wrapper--loading", ctx.isLoading() && ctx.items().length > 0);
498
+ i0.ɵɵadvance(2);
499
+ i0.ɵɵstyleProp("min-width", ctx.minTableWidth(), "px");
500
+ i0.ɵɵattribute("data-virtual-scroll", ctx.vsEnabled() ? "" : null);
501
+ i0.ɵɵadvance();
502
+ i0.ɵɵclassMap(ctx.stickyHeader() ? "ogrid-datagrid-thead ogrid-sticky-header" : "ogrid-datagrid-thead");
503
+ i0.ɵɵadvance();
504
+ i0.ɵɵconditional(ctx.showColumnLetters() ? 9 : -1);
505
+ i0.ɵɵadvance();
506
+ i0.ɵɵrepeater(ctx.headerRows());
507
+ i0.ɵɵadvance(2);
508
+ i0.ɵɵconditional(!ctx.showEmptyInGrid() ? 12 : -1);
509
+ i0.ɵɵadvance();
510
+ i0.ɵɵproperty("containerEl", ctx.tableContainerEl())("selectionRange", ctx.state().interaction.selectionRange)("copyRange", ctx.state().interaction.copyRange)("cutRange", ctx.state().interaction.cutRange)("colOffset", ctx.state().layout.colOffset)("columnSizingVersion", ctx.columnSizingVersion())("items", ctx.items())("visibleColumns", ctx.propsVisibleColumns())("columnOrder", ctx.propsColumnOrder());
511
+ i0.ɵɵadvance();
512
+ i0.ɵɵconditional(ctx.formulaReferences() && ctx.formulaReferences().length > 0 ? 14 : -1);
513
+ i0.ɵɵadvance();
514
+ i0.ɵɵconditional(ctx.showEmptyInGrid() && ctx.emptyState() ? 15 : -1);
515
+ i0.ɵɵadvance();
516
+ i0.ɵɵconditional(ctx.columnReorderService.isDragging() && ctx.columnReorderService.dropIndicatorX() !== null ? 16 : -1);
517
+ i0.ɵɵadvance();
518
+ i0.ɵɵconditional(ctx.menuPosition() ? 17 : -1);
519
+ i0.ɵɵadvance();
520
+ const sbConfig_r42 = i0.ɵɵstoreLet(ctx.statusBarConfig());
521
+ i0.ɵɵadvance();
522
+ i0.ɵɵconditional(sbConfig_r42 ? 19 : -1);
523
+ i0.ɵɵadvance();
524
+ i0.ɵɵconditional(ctx.isLoading() ? 20 : -1);
525
+ } }, dependencies: [ColumnHeaderFilterComponent, ColumnHeaderMenuComponent, StatusBarComponent, GridContextMenuComponent, MarchingAntsOverlayComponent, EmptyStateComponent, FormulaRefOverlayComponent, InlineCellEditorComponent, PopoverCellEditorComponent], styles: ["\n :host { display: block; }\n .ogrid-datagrid-root { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; }\n .ogrid-datagrid-wrapper {\n position: relative; width: 100%; max-width: 100%;\n overflow-x: hidden; overflow-y: auto; background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n will-change: scroll-position; outline: none;\n }\n .ogrid-datagrid-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-datagrid-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-datagrid-cell--active[data-drag-range] { outline: none; }\n .ogrid-datagrid-wrapper--fit { width: fit-content; }\n .ogrid-datagrid-wrapper--overflow-x { overflow-x: auto; }\n .ogrid-datagrid-wrapper--loading-empty { min-height: 200px; }\n .ogrid-datagrid-scroll-wrapper { display: flex; flex-direction: column; min-height: 100%; }\n .ogrid-datagrid-table-wrapper--loading { position: relative; opacity: 0.6; }\n .ogrid-datagrid-table {\n width: 100%; min-width: max-content; border-collapse: collapse; table-layout: fixed;\n }\n .ogrid-datagrid-table tr th:first-child,\n .ogrid-datagrid-table tr td:first-child { border-left: none; }\n .ogrid-datagrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-datagrid-thead {\n z-index: 8; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-datagrid-thead th { background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-header-row { background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-th {\n font-weight: 600; padding: 6px 10px; text-align: left;\n font-size: 14px; border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); z-index: 8;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-sticky-header .ogrid-datagrid-th { position: sticky; top: 0; }\n .ogrid-datagrid-th:focus-visible {\n outline: 2px solid var(--mat-sys-primary, #1976d2); outline-offset: -2px; z-index: 11;\n }\n .ogrid-datagrid-th--pinned-left {\n position: sticky; top: 0; left: 0; z-index: 10; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); will-change: transform;\n border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-th--pinned-right {\n position: sticky; top: 0; right: 0; z-index: 10; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); will-change: transform;\n border-left: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-group-header {\n text-align: center; font-weight: 600; border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); padding: 6px;\n }\n .ogrid-datagrid-checkbox-col {\n width: 48px; min-width: 48px;\n max-width: 48px; text-align: center;\n }\n .ogrid-datagrid-checkbox-wrapper { display: flex; align-items: center; justify-content: center; }\n .ogrid-row-number-header, .ogrid-row-number-cell {\n text-align: center;\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); font-weight: 600;\n font-variant-numeric: tabular-nums; color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n position: sticky; left: 0; z-index: 3;\n }\n .ogrid-row-number-header { z-index: 4; }\n .ogrid-row-number-header-content, .ogrid-row-number-cell-content {\n display: flex; align-items: center; justify-content: center;\n }\n .ogrid-datagrid-row { }\n .ogrid-datagrid-row:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-row--selected { background: var(--ogrid-selected-row-bg, #e6f0fb); }\n .ogrid-datagrid-td { position: relative; padding: 0; height: 1px; border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.06)); }\n .ogrid-datagrid-td--pinned-left {\n position: sticky; left: 0; z-index: 6; background: var(--ogrid-bg, #ffffff); will-change: transform;\n border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-td--pinned-right {\n position: sticky; right: 0; z-index: 6; background: var(--ogrid-bg, #ffffff); will-change: transform;\n border-left: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-cell {\n width: 100%; height: 100%; display: flex; align-items: center; min-width: 0;\n padding: var(--ogrid-cell-padding, 6px 10px); box-sizing: border-box; overflow: hidden;\n text-overflow: ellipsis; white-space: nowrap; user-select: none; outline: none;\n font-size: 14px; color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-cell:focus-visible {\n outline: 2px solid var(--mat-sys-primary, #1976d2); outline-offset: -2px; z-index: 3;\n }\n .ogrid-datagrid-cell--numeric { justify-content: flex-end; text-align: right; }\n .ogrid-datagrid-cell--boolean { justify-content: flex-start; }\n .ogrid-datagrid-cell--editable { cursor: cell; }\n .ogrid-datagrid-cell--active {\n outline: 2px solid var(--ogrid-selection-color, #217346); outline-offset: -1px;\n z-index: 2; position: relative; overflow: visible;\n }\n .ogrid-datagrid-td:has(> .ogrid-datagrid-cell--active),\n .ogrid-datagrid-td:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-datagrid-cell--active-in-range { outline: none; background: var(--ogrid-bg, #fff); }\n .ogrid-datagrid-cell--in-range { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-datagrid-cell--in-cut-range { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); opacity: 0.7; }\n .ogrid-datagrid-cell--editing { padding: 0; }\n .ogrid-editing-cell {\n width: 100%; height: 100%; display: flex; align-items: center; box-sizing: border-box;\n outline: 2px solid var(--ogrid-selection-color, #217346); outline-offset: -1px;\n z-index: 2; position: relative; background: var(--ogrid-bg, #fff); overflow: hidden; padding: 0;\n }\n .ogrid-datagrid-editor-input {\n width: 100%; height: 100%; padding: 6px 10px; border: 2px solid var(--ogrid-selection-color, #217346);\n box-sizing: border-box; font-size: 14px; outline: none; font-family: inherit; line-height: inherit;\n background: var(--ogrid-bg, #ffffff); color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-cell--numeric .ogrid-datagrid-editor-input {\n text-align: right;\n }\n .ogrid-datagrid-editor-select {\n width: 100%; height: 100%; padding: 4px 8px; border: 2px solid var(--ogrid-selection-color, #217346);\n box-sizing: border-box; font-size: 14px;\n background: var(--ogrid-bg, #ffffff); color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-fill-handle {\n position: absolute; right: -3px; bottom: -3px; width: 7px; height: 7px;\n background: var(--ogrid-selection-color, #217346);\n border: 1px solid var(--ogrid-bg, #ffffff); border-radius: 1px;\n cursor: crosshair; pointer-events: auto; touch-action: none; z-index: 3;\n }\n @media (pointer: coarse) {\n .ogrid-datagrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-datagrid-resize-handle {\n position: absolute; top: 0; right: -3px; bottom: 0; width: 8px;\n cursor: col-resize; user-select: none; touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-datagrid-resize-handle { width: 16px; right: -8px; }\n }\n .ogrid-datagrid-resize-handle::after {\n content: ''; position: absolute; top: 4px; right: 3px; bottom: 4px; width: 2px;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 1px; transition: background 0.15s;\n }\n .ogrid-datagrid-resize-handle:hover::after { background: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.4)); }\n .ogrid-datagrid-resize-handle:active::after { background: var(--mat-sys-primary, #1976d2); }\n .ogrid-datagrid-empty {\n padding: 32px 16px; text-align: center; border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-datagrid-empty__title { font-size: 18px; font-weight: 600; margin-bottom: 8px; color: var(--ogrid-fg, rgba(0, 0, 0, 0.87)); }\n .ogrid-datagrid-empty__message { font-size: 14px; color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6)); }\n .ogrid-datagrid-empty__clear {\n background: none; border: none; color: var(--mat-sys-primary, #1976d2);\n cursor: pointer; font-size: inherit; text-decoration: underline; padding: 0;\n }\n .ogrid-status-bar {\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n min-height: 33px;\n padding: 6px 12px;\n box-sizing: border-box;\n font-size: 12px;\n line-height: 20px;\n color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-status-bar-item {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n .ogrid-status-bar-item:not(:last-child)::after {\n content: '';\n width: 1px;\n height: 14px;\n margin-left: 12px;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-status-bar-label {\n color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n }\n .ogrid-status-bar-value {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-weight: 600;\n }\n .ogrid-datagrid-loading-overlay {\n position: absolute; inset: 0; z-index: 2;\n display: flex; align-items: center; justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n }\n .ogrid-datagrid-loading-inner {\n display: flex; flex-direction: column; align-items: center; gap: 8px;\n padding: 16px; background: var(--ogrid-bg, #ffffff); border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 4px;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-spinner {\n width: 24px; height: 24px; border: 3px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-top-color: var(--mat-sys-primary, #1976d2);\n border-radius: 50%; animation: ogrid-spin 0.8s linear infinite;\n }\n @keyframes ogrid-spin { to { transform: rotate(360deg); } }\n .ogrid-datagrid-drop-indicator {\n position: absolute; top: 0; bottom: 0; width: 3px;\n background: var(--ogrid-selection-color, #217346);\n pointer-events: none; z-index: 100; transition: left 0.05s;\n }\n .ogrid-datagrid-context-menu-overlay {\n position: fixed; inset: 0; z-index: 1000;\n }\n .ogrid-column-letter-cell {\n text-align: center;\n font-size: 11px;\n font-weight: 500;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.4));\n padding: 2px 4px;\n background: var(--ogrid-column-letter-bg, var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)));\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n user-select: none;\n font-variant-numeric: tabular-nums;\n }\n\n /* Reveal column menu trigger on header hover without layout shift.\n The button always takes up space (visibility: hidden); shown when column is hovered. */\n @media (hover: hover) {\n th:hover .column-header-menu-trigger { visibility: visible; }\n }\n\n /* Angular Material Menu popup dark mode overrides.\n Double-class selector (0,2,0) beats MUI's single-class (0,1,0) defaults. */\n .mat-mdc-menu-panel.mat-mdc-menu-panel {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item:hover:not([disabled]) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item .mat-mdc-menu-item-text {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n "], encapsulation: 2, changeDetection: 0 }); }
526
+ }
527
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataGridTableComponent, [{
528
+ type: Component,
529
+ args: [{ selector: 'ogrid-datagrid-table', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [ColumnHeaderFilterComponent, ColumnHeaderMenuComponent, StatusBarComponent, GridContextMenuComponent, MarchingAntsOverlayComponent, EmptyStateComponent, FormulaRefOverlayComponent, InlineCellEditorComponent, PopoverCellEditorComponent], providers: [DataGridStateService, ColumnReorderService, VirtualScrollService], template: `
530
+ <div class="ogrid-datagrid-root">
531
+ <div
532
+ #wrapperEl
533
+ class="ogrid-datagrid-wrapper"
534
+ [class.ogrid-datagrid-wrapper--fit]="layoutModeFit()"
535
+ [class.ogrid-datagrid-wrapper--loading-empty]="isLoading() && items().length === 0"
536
+ [style.--ogrid-row-height]="rowHeightCssVar()"
537
+ tabindex="0"
538
+ role="region"
539
+ [attr.aria-label]="ariaLabel()"
540
+ [attr.aria-labelledby]="ariaLabelledBy()"
541
+ (pointerdown)="onWrapperMouseDown($event)"
542
+ (keydown)="onGridKeyDown($event)"
543
+ (scroll)="onWrapperScroll($event)"
544
+ (contextmenu)="$event.preventDefault()"
545
+ [class.ogrid-datagrid-wrapper--overflow-x]="allowOverflowX()"
546
+ [attr.data-overflow-x]="allowOverflowX() ? 'true' : 'false'"
547
+ [attr.data-virtual-scroll]="vsEnabled() ? '' : null"
548
+ data-ogrid-scroll-container
549
+ >
550
+ <div class="ogrid-datagrid-scroll-wrapper">
551
+ <div [style.minWidth.px]="allowOverflowX() ? minTableWidth() : undefined" style="overflow-x: clip">
552
+ <div [class.ogrid-datagrid-table-wrapper--loading]="isLoading() && items().length > 0" #tableContainerElRef>
553
+ <table class="ogrid-datagrid-table" role="grid" [style.minWidth.px]="minTableWidth()"
554
+ [attr.data-virtual-scroll]="vsEnabled() ? '' : null"
555
+ >
556
+ <thead [class]="stickyHeader() ? 'ogrid-datagrid-thead ogrid-sticky-header' : 'ogrid-datagrid-thead'">
557
+ @if (showColumnLetters()) {
558
+ <tr class="ogrid-column-letter-row">
559
+ @if (hasCheckboxCol()) {
560
+ <th class="ogrid-column-letter-cell"></th>
561
+ }
562
+ @if (hasRowNumbersCol()) {
563
+ <th class="ogrid-column-letter-cell"></th>
564
+ }
565
+ @for (col of visibleCols(); track col.columnId; let colIdx = $index) {
566
+ <th class="ogrid-column-letter-cell">
567
+ {{ getColumnLetter(colIdx) }}
568
+ </th>
569
+ }
570
+ </tr>
571
+ }
572
+ @for (row of headerRows(); track $index; let rowIdx = $index) {
573
+ <tr class="ogrid-datagrid-header-row">
574
+ @if (rowIdx === headerRows().length - 1 && hasCheckboxCol()) {
575
+ <th class="ogrid-datagrid-th ogrid-datagrid-checkbox-col" [attr.rowSpan]="headerRows().length > 1 ? 1 : null">
576
+ <div class="ogrid-datagrid-checkbox-wrapper">
577
+ <input
578
+ type="checkbox"
579
+ [checked]="allSelected()"
580
+ [indeterminate]="someSelected()"
581
+ (change)="onSelectAllChange($event)"
582
+ aria-label="Select all rows"
583
+ />
584
+ </div>
585
+ </th>
586
+ }
587
+ @if (rowIdx === 0 && rowIdx < headerRows().length - 1 && hasCheckboxCol()) {
588
+ <th [attr.rowSpan]="headerRows().length - 1" class="ogrid-datagrid-th" style="width: 48px; min-width: 48px; padding: 0;"></th>
589
+ }
590
+ @if (rowIdx === headerRows().length - 1 && hasRowNumbersCol()) {
591
+ <th class="ogrid-datagrid-th ogrid-row-number-header" [attr.rowSpan]="headerRows().length > 1 ? 1 : null"
592
+ [style.width.px]="getRowNumberWidth()"
593
+ [style.min-width.px]="getRowNumberWidth()"
594
+ [style.max-width.px]="getRowNumberWidth()"
595
+ >
596
+ <div class="ogrid-row-number-header-content">#</div>
597
+ <div class="ogrid-datagrid-resize-handle" role="separator" aria-label="Resize row numbers" (pointerdown)="onResizeRowNumber($event)" (dblclick)="$event.stopPropagation()"></div>
598
+ </th>
599
+ }
600
+ @if (rowIdx === 0 && rowIdx < headerRows().length - 1 && hasRowNumbersCol()) {
601
+ <th [attr.rowSpan]="headerRows().length - 1" class="ogrid-datagrid-th" [style.width.px]="getRowNumberWidth()" [style.min-width.px]="getRowNumberWidth()" style="padding: 0;"></th>
602
+ }
603
+ @for (cell of row; track cell.columnDef?.columnId ?? $index; let cellIdx = $index) {
604
+ @if (cell.isGroup) {
605
+ <th [attr.colSpan]="cell.colSpan" scope="colgroup" class="ogrid-datagrid-th ogrid-datagrid-group-header">
606
+ {{ cell.label }}
607
+ </th>
608
+ } @else {
609
+ @let col = asColumnDef(cell.columnDef);
610
+ @let colW = getColumnWidth(col);
611
+ @let pinned = isPinned(col.columnId);
612
+ @let pinnedLeft = pinned === 'left';
613
+ @let pinnedRight = pinned === 'right';
614
+ @let sortState = getSortState(col.columnId);
615
+ @let ariaSort = sortState === 'asc' ? 'ascending' : sortState === 'desc' ? 'descending' : null;
616
+ @let config = getFilterConfig(col);
617
+ <th scope="col"
618
+ class="ogrid-datagrid-th"
619
+ [class.ogrid-datagrid-th--pinned-left]="pinnedLeft"
620
+ [class.ogrid-datagrid-th--pinned-right]="pinnedRight"
621
+ [attr.rowSpan]="headerRows().length > 1 ? headerRows().length - rowIdx : null"
622
+ [attr.data-column-id]="col.columnId"
623
+ [attr.aria-sort]="ariaSort"
624
+ [style.minWidth.px]="getEffectiveMinWidth(col)"
625
+ [style.width.px]="colW"
626
+ [style.maxWidth.px]="colW"
627
+ [style.cursor]="columnReorderService.isDragging() ? 'grabbing' : 'grab'"
628
+ [style.left.px]="pinnedLeft ? getPinnedLeftOffset(col.columnId) : null"
629
+ [style.right.px]="pinnedRight ? getPinnedRightOffset(col.columnId) : null"
630
+ (pointerdown)="onHeaderMouseDown(col.columnId, $event)"
631
+ >
632
+ <div style="display:flex;align-items:center;gap:4px;">
633
+ <ogrid-column-header-filter
634
+ [columnKey]="col.columnId"
635
+ [columnName]="col.name"
636
+ [filterType]="config.filterType"
637
+ [isSorted]="config.isSorted"
638
+ [isSortedDescending]="config.isSortedDescending"
639
+ [onSort]="config.onSort"
640
+ [selectedValues]="config.selectedValues"
641
+ [onFilterChange]="config.onFilterChange"
642
+ [options]="config.options"
643
+ [isLoadingOptions]="config.isLoadingOptions ?? false"
644
+ [textValue]="config.textValue ?? ''"
645
+ [onTextChange]="config.onTextChange"
646
+ [selectedUser]="config.selectedUser"
647
+ [onUserChange]="config.onUserChange"
648
+ [peopleSearch]="config.peopleSearch"
649
+ [dateValue]="config.dateValue"
650
+ [onDateChange]="config.onDateChange"
651
+ />
652
+ @let pinState = getPinState(col.columnId);
653
+ <column-header-menu
654
+ [columnId]="col.columnId"
655
+ [canPinLeft]="pinState.canPinLeft"
656
+ [canPinRight]="pinState.canPinRight"
657
+ [canUnpin]="pinState.canUnpin"
658
+ [currentSort]="sortState"
659
+ [isSortable]="col.sortable !== false"
660
+ [isResizable]="col.resizable !== false"
661
+ [handlers]="getColumnMenuHandlersMemoized(col.columnId)"
662
+ />
663
+ </div>
664
+ <div class="ogrid-datagrid-resize-handle" role="separator" [attr.aria-label]="'Resize ' + col.name" (pointerdown)="onResizeStart($event, col)" (dblclick)="onResizeDoubleClick($event, col)"></div>
665
+ </th>
666
+ }
667
+ }
668
+ </tr>
669
+ }
670
+ </thead>
671
+ @if (!showEmptyInGrid()) {
672
+ <tbody>
673
+ @if (vsEnabled() && vsTopSpacerHeight() > 0) {
674
+ <tr class="ogrid-datagrid-vs-spacer" [style.height.px]="vsTopSpacerHeight()"></tr>
675
+ }
676
+ @for (item of vsVisibleItems(); track getRowId()(item); let localIdx = $index) {
677
+ @let rowIndex = vsStartIndex() + localIdx;
678
+ @let rowId = getRowId()(item);
679
+ @let isSelected = selectedRowIds().has(rowId);
680
+ <tr
681
+ class="ogrid-datagrid-row"
682
+ [class.ogrid-datagrid-row--selected]="isSelected"
683
+ [attr.data-row-id]="rowId"
684
+ [attr.aria-selected]="isSelected || null"
685
+ (click)="onRowClick($event, rowId)"
686
+ >
687
+ @if (hasCheckboxCol()) {
688
+ <td class="ogrid-datagrid-td ogrid-datagrid-checkbox-col">
689
+ <div
690
+ class="ogrid-datagrid-checkbox-wrapper"
691
+ [attr.data-row-index]="rowIndex"
692
+ [attr.data-col-index]="0"
693
+ (click)="$event.stopPropagation()"
694
+ >
695
+ <input
696
+ type="checkbox"
697
+ [checked]="isSelected"
698
+ (change)="onRowCheckboxChange(rowId, $event, rowIndex)"
699
+ [attr.aria-label]="'Select row ' + (rowIndex + 1)"
700
+ />
701
+ </div>
702
+ </td>
703
+ }
704
+ @if (hasRowNumbersCol()) {
705
+ <td class="ogrid-datagrid-td ogrid-row-number-cell"
706
+ [style.width.px]="getRowNumberWidth()"
707
+ [style.min-width.px]="getRowNumberWidth()"
708
+ [style.max-width.px]="getRowNumberWidth()"
709
+ >
710
+ <div class="ogrid-row-number-cell-content">
711
+ {{ rowNumberOffset() + rowIndex + 1 }}
712
+ </div>
713
+ </td>
714
+ }
715
+ @if (vsColumnsEnabled() && vsLeftSpacerWidth() > 0) {
716
+ <td [style.width.px]="vsLeftSpacerWidth()" [style.minWidth.px]="vsLeftSpacerWidth()" [style.maxWidth.px]="vsLeftSpacerWidth()" [style.padding]="'0'"></td>
717
+ }
718
+ @for (colLayout of vsColumnLayouts(); track colLayout.col.columnId) {
719
+ <td
720
+ class="ogrid-datagrid-td"
721
+ [attr.data-column-id]="colLayout.col.columnId"
722
+ [class.ogrid-datagrid-td--pinned-left]="colLayout.pinnedLeft"
723
+ [class.ogrid-datagrid-td--pinned-right]="colLayout.pinnedRight"
724
+ [style.minWidth.px]="colLayout.minWidth"
725
+ [style.width.px]="colLayout.width"
726
+ [style.maxWidth.px]="colLayout.width"
727
+ [style.left.px]="colLayout.pinnedLeft ? getPinnedLeftOffset(colLayout.col.columnId) : null"
728
+ [style.right.px]="colLayout.pinnedRight ? getPinnedRightOffset(colLayout.col.columnId) : null"
729
+ >
730
+ @let descriptor = getCellDescriptor(item, colLayout.col, rowIndex, getGlobalColIndex(colLayout.col));
731
+ @if (descriptor.mode === 'editing-inline') {
732
+ <div class="ogrid-editing-cell">
733
+ <ogrid-mat-inline-cell-editor
734
+ [value]="descriptor.value"
735
+ [item]="item"
736
+ [column]="colLayout.col"
737
+ [rowIndex]="rowIndex"
738
+ [editorType]="descriptor.editorType ?? 'text'"
739
+ (commit)="commitEdit(item, colLayout.col.columnId, descriptor.value, $event, rowIndex, descriptor.globalColIndex)"
740
+ (cancel)="cancelEdit()"
741
+ ></ogrid-mat-inline-cell-editor>
742
+ </div>
743
+ } @else if (descriptor.mode === 'editing-popover') {
744
+ @let editorProps = buildPopoverEditorProps(item, colLayout.col, descriptor);
745
+ <ogrid-mat-popover-cell-editor
746
+ [item]="item"
747
+ [column]="colLayout.col"
748
+ [rowIndex]="rowIndex"
749
+ [globalColIndex]="descriptor.globalColIndex"
750
+ [displayValue]="descriptor.displayValue"
751
+ [editorProps]="editorProps"
752
+ [onCancel]="cancelEdit.bind(this)"
753
+ ></ogrid-mat-popover-cell-editor>
754
+ } @else {
755
+ @let content = resolveCellContent(colLayout.col, item, descriptor.displayValue);
756
+ @let cellStyle = resolveCellStyleFn(colLayout.col, item, descriptor.displayValue);
757
+ <div
758
+ class="ogrid-datagrid-cell"
759
+ [class.ogrid-datagrid-cell--active]="descriptor.isActive"
760
+ [class.ogrid-datagrid-cell--active-in-range]="descriptor.isActive && descriptor.isInRange"
761
+ [class.ogrid-datagrid-cell--in-range]="descriptor.isInRange && !descriptor.isActive"
762
+ [class.ogrid-datagrid-cell--in-cut-range]="descriptor.isInCutRange"
763
+ [class.ogrid-datagrid-cell--editable]="descriptor.canEditAny"
764
+ [class.ogrid-datagrid-cell--numeric]="colLayout.col.type === 'numeric'"
765
+ [class.ogrid-datagrid-cell--boolean]="colLayout.col.type === 'boolean'"
766
+ [attr.data-row-index]="rowIndex"
767
+ [attr.data-col-index]="descriptor.globalColIndex"
768
+ [attr.data-in-range]="descriptor.isInRange ? 'true' : null"
769
+ [attr.tabindex]="descriptor.isActive ? 0 : -1"
770
+ (pointerdown)="onCellMouseDown($event, rowIndex, descriptor.globalColIndex)"
771
+ (click)="onCellClick(rowIndex, descriptor.globalColIndex)"
772
+ (contextmenu)="onCellContextMenu($event)"
773
+ (dblclick)="descriptor.canEditAny ? onCellDblClick(descriptor.rowId, colLayout.col.columnId) : null"
774
+ [attr.role]="descriptor.canEditAny ? 'button' : null"
775
+ [style]="cellStyle ?? undefined"
776
+ >
777
+ @if (colLayout.col.type === 'boolean') {
778
+ <input type="checkbox" [checked]="!!descriptor.displayValue" [disabled]="!descriptor.canEditAny" (change)="descriptor.canEditAny ? commitBooleanEdit(item, colLayout.col.columnId, !!descriptor.displayValue, rowIndex, descriptor.globalColIndex) : null" (pointerdown)="onBooleanCheckboxPointerDown($event, rowIndex, descriptor.globalColIndex)" (click)="$event.stopPropagation()" style="margin:0;outline:none" [style.cursor]="descriptor.canEditAny ? 'pointer' : 'default'" [attr.aria-label]="descriptor.displayValue ? 'Checked' : 'Unchecked'" />
779
+ } @else {
780
+ {{ content }}
781
+ }
782
+ @if (descriptor.canEditAny && descriptor.isSelectionEndCell) {
783
+ <div
784
+ class="ogrid-datagrid-fill-handle"
785
+ (pointerdown)="onFillHandleMouseDown($event)"
786
+ aria-label="Fill handle"
787
+ ></div>
788
+ }
789
+ </div>
790
+ }
791
+ </td>
792
+ }
793
+ @if (vsColumnsEnabled() && vsRightSpacerWidth() > 0) {
794
+ <td [style.width.px]="vsRightSpacerWidth()" [style.minWidth.px]="vsRightSpacerWidth()" [style.maxWidth.px]="vsRightSpacerWidth()" [style.padding]="'0'"></td>
795
+ }
796
+ </tr>
797
+ }
798
+ @if (vsEnabled() && vsBottomSpacerHeight() > 0) {
799
+ <tr class="ogrid-datagrid-vs-spacer" [style.height.px]="vsBottomSpacerHeight()"></tr>
800
+ }
801
+ </tbody>
802
+ }
803
+ </table>
804
+
805
+ <ogrid-marching-ants-overlay
806
+ [containerEl]="tableContainerEl()"
807
+ [selectionRange]="state().interaction.selectionRange"
808
+ [copyRange]="state().interaction.copyRange"
809
+ [cutRange]="state().interaction.cutRange"
810
+ [colOffset]="state().layout.colOffset"
811
+ [columnSizingVersion]="columnSizingVersion()"
812
+ [items]="items()"
813
+ [visibleColumns]="propsVisibleColumns()"
814
+ [columnOrder]="propsColumnOrder()"
815
+ ></ogrid-marching-ants-overlay>
816
+
817
+ @if (formulaReferences() && formulaReferences()!.length > 0) {
818
+ <ogrid-formula-ref-overlay
819
+ [containerEl]="tableContainerEl()"
820
+ [references]="formulaReferences()!"
821
+ [colOffset]="colOffset()"
822
+ />
823
+ }
824
+
825
+ @if (showEmptyInGrid() && emptyState()) {
826
+ <div class="ogrid-datagrid-empty">
827
+ <div class="ogrid-datagrid-empty__title">No results found</div>
828
+ <div class="ogrid-datagrid-empty__message">
829
+ <ogrid-empty-state
830
+ [message]="emptyState()?.message"
831
+ [hasActiveFilters]="emptyState()?.hasActiveFilters ?? false"
832
+ [render]="emptyState()?.render"
833
+ (clearAll)="emptyState()?.onClearAll()"
834
+ ></ogrid-empty-state>
835
+ </div>
836
+ </div>
837
+ }
838
+ </div>
839
+ </div>
840
+ </div>
841
+
842
+ @if (columnReorderService.isDragging() && columnReorderService.dropIndicatorX() !== null) {
843
+ <div class="ogrid-datagrid-drop-indicator" [style.left.px]="columnReorderService.dropIndicatorX()"></div>
844
+ }
845
+
846
+ @if (menuPosition()) {
847
+ <div
848
+ class="ogrid-datagrid-context-menu-overlay"
849
+ (click)="closeContextMenu()"
850
+ (contextmenu)="$event.preventDefault(); closeContextMenu()"
851
+ >
852
+ <ogrid-context-menu
853
+ [x]="menuPosition()!.x"
854
+ [y]="menuPosition()!.y"
855
+ [hasSelection]="hasCellSelection()"
856
+ [canUndoProp]="canUndo()"
857
+ [canRedoProp]="canRedo()"
858
+ (undoAction)="onUndo()"
859
+ (redoAction)="onRedo()"
860
+ (copyAction)="handleCopy()"
861
+ (cutAction)="handleCut()"
862
+ (pasteAction)="handlePaste()"
863
+ (selectAllAction)="handleSelectAllCells()"
864
+ (closeAction)="closeContextMenu()"
865
+ />
866
+ </div>
867
+ }
868
+ </div>
869
+
870
+ @let sbConfig = statusBarConfig();
871
+ @if (sbConfig) {
872
+ <ogrid-status-bar
873
+ [totalCount]="sbConfig.totalCount"
874
+ [filteredCount]="sbConfig.filteredCount"
875
+ [selectedCount]="sbConfig.selectedCount ?? selectedRowIds().size"
876
+ [selectedCellCount]="selectionCellCount()"
877
+ [aggregation]="sbConfig.aggregation"
878
+ [suppressRowCount]="sbConfig.suppressRowCount"
879
+ [classNames]="statusBarClasses"
880
+ />
881
+ }
882
+
883
+ @if (isLoading()) {
884
+ <div class="ogrid-datagrid-loading-overlay">
885
+ <div class="ogrid-datagrid-loading-inner">
886
+ <div class="ogrid-datagrid-spinner"></div>
887
+ <span>{{ loadingMessage() }}</span>
888
+ </div>
889
+ </div>
890
+ }
891
+ </div>
892
+ `, styles: ["\n :host { display: block; }\n .ogrid-datagrid-root { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; }\n .ogrid-datagrid-wrapper {\n position: relative; width: 100%; max-width: 100%;\n overflow-x: hidden; overflow-y: auto; background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n will-change: scroll-position; outline: none;\n }\n .ogrid-datagrid-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-datagrid-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-datagrid-cell--active[data-drag-range] { outline: none; }\n .ogrid-datagrid-wrapper--fit { width: fit-content; }\n .ogrid-datagrid-wrapper--overflow-x { overflow-x: auto; }\n .ogrid-datagrid-wrapper--loading-empty { min-height: 200px; }\n .ogrid-datagrid-scroll-wrapper { display: flex; flex-direction: column; min-height: 100%; }\n .ogrid-datagrid-table-wrapper--loading { position: relative; opacity: 0.6; }\n .ogrid-datagrid-table {\n width: 100%; min-width: max-content; border-collapse: collapse; table-layout: fixed;\n }\n .ogrid-datagrid-table tr th:first-child,\n .ogrid-datagrid-table tr td:first-child { border-left: none; }\n .ogrid-datagrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-datagrid-thead {\n z-index: 8; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-datagrid-thead th { background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-header-row { background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-th {\n font-weight: 600; padding: 6px 10px; text-align: left;\n font-size: 14px; border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); z-index: 8;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-sticky-header .ogrid-datagrid-th { position: sticky; top: 0; }\n .ogrid-datagrid-th:focus-visible {\n outline: 2px solid var(--mat-sys-primary, #1976d2); outline-offset: -2px; z-index: 11;\n }\n .ogrid-datagrid-th--pinned-left {\n position: sticky; top: 0; left: 0; z-index: 10; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); will-change: transform;\n border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-th--pinned-right {\n position: sticky; top: 0; right: 0; z-index: 10; background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); will-change: transform;\n border-left: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-group-header {\n text-align: center; font-weight: 600; border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); padding: 6px;\n }\n .ogrid-datagrid-checkbox-col {\n width: 48px; min-width: 48px;\n max-width: 48px; text-align: center;\n }\n .ogrid-datagrid-checkbox-wrapper { display: flex; align-items: center; justify-content: center; }\n .ogrid-row-number-header, .ogrid-row-number-cell {\n text-align: center;\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)); font-weight: 600;\n font-variant-numeric: tabular-nums; color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n position: sticky; left: 0; z-index: 3;\n }\n .ogrid-row-number-header { z-index: 4; }\n .ogrid-row-number-header-content, .ogrid-row-number-cell-content {\n display: flex; align-items: center; justify-content: center;\n }\n .ogrid-datagrid-row { }\n .ogrid-datagrid-row:hover { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); }\n .ogrid-datagrid-row--selected { background: var(--ogrid-selected-row-bg, #e6f0fb); }\n .ogrid-datagrid-td { position: relative; padding: 0; height: 1px; border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.06)); }\n .ogrid-datagrid-td--pinned-left {\n position: sticky; left: 0; z-index: 6; background: var(--ogrid-bg, #ffffff); will-change: transform;\n border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-td--pinned-right {\n position: sticky; right: 0; z-index: 6; background: var(--ogrid-bg, #ffffff); will-change: transform;\n border-left: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n }\n .ogrid-datagrid-cell {\n width: 100%; height: 100%; display: flex; align-items: center; min-width: 0;\n padding: var(--ogrid-cell-padding, 6px 10px); box-sizing: border-box; overflow: hidden;\n text-overflow: ellipsis; white-space: nowrap; user-select: none; outline: none;\n font-size: 14px; color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-cell:focus-visible {\n outline: 2px solid var(--mat-sys-primary, #1976d2); outline-offset: -2px; z-index: 3;\n }\n .ogrid-datagrid-cell--numeric { justify-content: flex-end; text-align: right; }\n .ogrid-datagrid-cell--boolean { justify-content: flex-start; }\n .ogrid-datagrid-cell--editable { cursor: cell; }\n .ogrid-datagrid-cell--active {\n outline: 2px solid var(--ogrid-selection-color, #217346); outline-offset: -1px;\n z-index: 2; position: relative; overflow: visible;\n }\n .ogrid-datagrid-td:has(> .ogrid-datagrid-cell--active),\n .ogrid-datagrid-td:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-datagrid-cell--active-in-range { outline: none; background: var(--ogrid-bg, #fff); }\n .ogrid-datagrid-cell--in-range { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-datagrid-cell--in-cut-range { background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)); opacity: 0.7; }\n .ogrid-datagrid-cell--editing { padding: 0; }\n .ogrid-editing-cell {\n width: 100%; height: 100%; display: flex; align-items: center; box-sizing: border-box;\n outline: 2px solid var(--ogrid-selection-color, #217346); outline-offset: -1px;\n z-index: 2; position: relative; background: var(--ogrid-bg, #fff); overflow: hidden; padding: 0;\n }\n .ogrid-datagrid-editor-input {\n width: 100%; height: 100%; padding: 6px 10px; border: 2px solid var(--ogrid-selection-color, #217346);\n box-sizing: border-box; font-size: 14px; outline: none; font-family: inherit; line-height: inherit;\n background: var(--ogrid-bg, #ffffff); color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-cell--numeric .ogrid-datagrid-editor-input {\n text-align: right;\n }\n .ogrid-datagrid-editor-select {\n width: 100%; height: 100%; padding: 4px 8px; border: 2px solid var(--ogrid-selection-color, #217346);\n box-sizing: border-box; font-size: 14px;\n background: var(--ogrid-bg, #ffffff); color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-fill-handle {\n position: absolute; right: -3px; bottom: -3px; width: 7px; height: 7px;\n background: var(--ogrid-selection-color, #217346);\n border: 1px solid var(--ogrid-bg, #ffffff); border-radius: 1px;\n cursor: crosshair; pointer-events: auto; touch-action: none; z-index: 3;\n }\n @media (pointer: coarse) {\n .ogrid-datagrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-datagrid-resize-handle {\n position: absolute; top: 0; right: -3px; bottom: 0; width: 8px;\n cursor: col-resize; user-select: none; touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-datagrid-resize-handle { width: 16px; right: -8px; }\n }\n .ogrid-datagrid-resize-handle::after {\n content: ''; position: absolute; top: 4px; right: 3px; bottom: 4px; width: 2px;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 1px; transition: background 0.15s;\n }\n .ogrid-datagrid-resize-handle:hover::after { background: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.4)); }\n .ogrid-datagrid-resize-handle:active::after { background: var(--mat-sys-primary, #1976d2); }\n .ogrid-datagrid-empty {\n padding: 32px 16px; text-align: center; border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-datagrid-empty__title { font-size: 18px; font-weight: 600; margin-bottom: 8px; color: var(--ogrid-fg, rgba(0, 0, 0, 0.87)); }\n .ogrid-datagrid-empty__message { font-size: 14px; color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6)); }\n .ogrid-datagrid-empty__clear {\n background: none; border: none; color: var(--mat-sys-primary, #1976d2);\n cursor: pointer; font-size: inherit; text-decoration: underline; padding: 0;\n }\n .ogrid-status-bar {\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n min-height: 33px;\n padding: 6px 12px;\n box-sizing: border-box;\n font-size: 12px;\n line-height: 20px;\n color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n background: var(--ogrid-header-bg, rgba(0, 0, 0, 0.04));\n border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-status-bar-item {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n .ogrid-status-bar-item:not(:last-child)::after {\n content: '';\n width: 1px;\n height: 14px;\n margin-left: 12px;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-status-bar-label {\n color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));\n }\n .ogrid-status-bar-value {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-weight: 600;\n }\n .ogrid-datagrid-loading-overlay {\n position: absolute; inset: 0; z-index: 2;\n display: flex; align-items: center; justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n }\n .ogrid-datagrid-loading-inner {\n display: flex; flex-direction: column; align-items: center; gap: 8px;\n padding: 16px; background: var(--ogrid-bg, #ffffff); border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12)); border-radius: 4px;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-datagrid-spinner {\n width: 24px; height: 24px; border: 3px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-top-color: var(--mat-sys-primary, #1976d2);\n border-radius: 50%; animation: ogrid-spin 0.8s linear infinite;\n }\n @keyframes ogrid-spin { to { transform: rotate(360deg); } }\n .ogrid-datagrid-drop-indicator {\n position: absolute; top: 0; bottom: 0; width: 3px;\n background: var(--ogrid-selection-color, #217346);\n pointer-events: none; z-index: 100; transition: left 0.05s;\n }\n .ogrid-datagrid-context-menu-overlay {\n position: fixed; inset: 0; z-index: 1000;\n }\n .ogrid-column-letter-cell {\n text-align: center;\n font-size: 11px;\n font-weight: 500;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.4));\n padding: 2px 4px;\n background: var(--ogrid-column-letter-bg, var(--ogrid-header-bg, rgba(0, 0, 0, 0.04)));\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n user-select: none;\n font-variant-numeric: tabular-nums;\n }\n\n /* Reveal column menu trigger on header hover without layout shift.\n The button always takes up space (visibility: hidden); shown when column is hovered. */\n @media (hover: hover) {\n th:hover .column-header-menu-trigger { visibility: visible; }\n }\n\n /* Angular Material Menu popup dark mode overrides.\n Double-class selector (0,2,0) beats MUI's single-class (0,1,0) defaults. */\n .mat-mdc-menu-panel.mat-mdc-menu-panel {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item:hover:not([disabled]) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .mat-mdc-menu-item.mat-mdc-menu-item .mat-mdc-menu-item-text {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n "] }]
893
+ }], () => [], { propsInput: [{
894
+ type: Input,
895
+ args: [{ required: true, alias: 'props' }]
896
+ }], wrapperRef: [{
897
+ type: ViewChild,
898
+ args: ['wrapperEl']
899
+ }], tableContainerRef: [{
900
+ type: ViewChild,
901
+ args: ['tableContainerElRef']
902
+ }] }); })();
903
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataGridTableComponent, { className: "DataGridTableComponent", filePath: "datagrid-table/datagrid-table.component.ts", lineNumber: 645 }); })();