@alaarab/ogrid-angular-primeng 2.6.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -222,16 +222,8 @@ export class ColumnHeaderFilterComponent extends BaseColumnHeaderFilterComponent
222
222
  this.isFilterOpen.set(false);
223
223
  }
224
224
  };
225
- // Sync temp values when filter opens
226
225
  effect(() => {
227
226
  if (this.isFilterOpen()) {
228
- this.tempTextValue.set(this.textValue ?? '');
229
- this.searchText.set('');
230
- const sv = this.selectedValues;
231
- this.tempSelected.set(new Set(sv ?? []));
232
- const dv = this.dateValue;
233
- this.tempDateFrom.set(dv?.from ?? '');
234
- this.tempDateTo.set(dv?.to ?? '');
235
227
  document.addEventListener('mousedown', this.clickOutsideHandler, true);
236
228
  }
237
229
  else {
@@ -60,6 +60,7 @@ function DataGridTableComponent_For_11_Conditional_2_Template(rf, ctx) { if (rf
60
60
  function DataGridTableComponent_For_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
61
61
  const _r5 = i0.ɵɵgetCurrentView();
62
62
  i0.ɵɵelementStart(0, "th", 19);
63
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_For_11_Conditional_3_Template_th_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("mousedown", function DataGridTableComponent_For_11_Conditional_3_Template_th_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("selectstart", function DataGridTableComponent_For_11_Conditional_3_Template_th_selectstart_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onNonDataSurfaceSelectStart($event)); });
63
64
  i0.ɵɵtext(1, " # ");
64
65
  i0.ɵɵelementStart(2, "div", 20);
65
66
  i0.ɵɵlistener("pointerdown", function DataGridTableComponent_For_11_Conditional_3_Template_div_pointerdown_2_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_2_listener($event) { i0.ɵɵrestoreView(_r5); return i0.ɵɵresetView($event.stopPropagation()); });
@@ -105,7 +106,7 @@ function DataGridTableComponent_For_11_For_6_Conditional_1_Template(rf, ctx) { i
105
106
  const sortState_r13 = ctx_r2.getSortState(col_r10.columnId);
106
107
  const ariaSort_r14 = sortState_r13 === "asc" ? "ascending" : sortState_r13 === "desc" ? "descending" : null;
107
108
  i0.ɵɵadvance();
108
- i0.ɵɵstyleProp("min-width", ctx_r2.getEffectiveMinWidth(col_r10), "px")("width", ctx_r2.getColumnWidth(col_r10), "px")("max-width", ctx_r2.getColumnWidth(col_r10), "px")("left", pinned_r11 === "left" ? ctx_r2.getPinnedLeftOffset(col_r10.columnId) : null, "px")("right", pinned_r11 === "right" ? ctx_r2.getPinnedRightOffset(col_r10.columnId) : null, "px")("cursor", ctx_r2.columnReorderService.isDragging() ? "grabbing" : "grab");
109
+ i0.ɵɵstyleProp("min-width", ctx_r2.getEffectiveMinWidth(col_r10), "px")("width", col_r10.width ?? ctx_r2.getColumnWidth(col_r10) + "px")("max-width", col_r10.width ? null : ctx_r2.getColumnWidth(col_r10) + "px")("left", pinned_r11 === "left" ? ctx_r2.getPinnedLeftOffset(col_r10.columnId) : null, "px")("right", pinned_r11 === "right" ? ctx_r2.getPinnedRightOffset(col_r10.columnId) : null, "px")("cursor", ctx_r2.columnReorderService.isDragging() ? "grabbing" : "grab");
109
110
  i0.ɵɵclassProp("ogrid-th-pinned-left", pinned_r11 === "left")("ogrid-th-pinned-right", pinned_r11 === "right");
110
111
  i0.ɵɵattribute("data-column-id", col_r10.columnId)("aria-sort", ariaSort_r14)("rowSpan", ctx_r2.headerRows().length > 1 && ɵ$index_28_r9 < ctx_r2.headerRows().length - 1 ? ctx_r2.headerRows().length - ɵ$index_28_r9 : null);
111
112
  i0.ɵɵadvance(2);
@@ -168,7 +169,9 @@ function DataGridTableComponent_Conditional_12_For_3_Conditional_3_Template(rf,
168
169
  i0.ɵɵattribute("aria-label", "Select row " + (rowIndex_r20 + 1));
169
170
  } }
170
171
  function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
172
+ const _r22 = i0.ɵɵgetCurrentView();
171
173
  i0.ɵɵelementStart(0, "td", 37);
174
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template_td_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("mousedown", function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template_td_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("selectstart", function DataGridTableComponent_Conditional_12_For_3_Conditional_4_Template_td_selectstart_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfaceSelectStart($event)); });
172
175
  i0.ɵɵtext(1);
173
176
  i0.ɵɵelementEnd();
174
177
  } if (rf & 2) {
@@ -186,97 +189,99 @@ function DataGridTableComponent_Conditional_12_For_3_Conditional_5_Template(rf,
186
189
  i0.ɵɵstyleProp("width", ctx_r2.vsLeftSpacerWidth(), "px")("min-width", ctx_r2.vsLeftSpacerWidth(), "px")("max-width", ctx_r2.vsLeftSpacerWidth(), "px")("padding", "0");
187
190
  } }
188
191
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
189
- const _r22 = i0.ɵɵgetCurrentView();
192
+ const _r24 = i0.ɵɵgetCurrentView();
190
193
  i0.ɵɵelementStart(0, "div", 39)(1, "ogrid-primeng-inline-cell-editor", 42);
191
- i0.ɵɵlistener("commit", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template_ogrid_primeng_inline_cell_editor_commit_1_listener($event) { i0.ɵɵrestoreView(_r22); const col_r23 = i0.ɵɵnextContext().$implicit; const descriptor_r24 = i0.ɵɵreadContextLet(1); const item_r18 = i0.ɵɵnextContext().$implicit; const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.commitEdit(item_r18, col_r23.columnId, descriptor_r24.value, $event, rowIndex_r20, descriptor_r24.globalColIndex)); })("cancel", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template_ogrid_primeng_inline_cell_editor_cancel_1_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.cancelEdit()); });
194
+ i0.ɵɵlistener("commit", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template_ogrid_primeng_inline_cell_editor_commit_1_listener($event) { i0.ɵɵrestoreView(_r24); const col_r25 = i0.ɵɵnextContext().$implicit; const descriptor_r26 = i0.ɵɵreadContextLet(1); const item_r18 = i0.ɵɵnextContext().$implicit; const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.commitEdit(item_r18, col_r25.columnId, descriptor_r26.value, $event, rowIndex_r20, descriptor_r26.globalColIndex)); })("cancel", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template_ogrid_primeng_inline_cell_editor_cancel_1_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.cancelEdit()); });
192
195
  i0.ɵɵelementEnd()();
193
196
  } if (rf & 2) {
194
- const col_r23 = i0.ɵɵnextContext().$implicit;
195
- const descriptor_r24 = i0.ɵɵreadContextLet(1);
197
+ const col_r25 = i0.ɵɵnextContext().$implicit;
198
+ const descriptor_r26 = i0.ɵɵreadContextLet(1);
196
199
  const item_r18 = i0.ɵɵnextContext().$implicit;
197
200
  const rowIndex_r20 = i0.ɵɵreadContextLet(0);
198
201
  i0.ɵɵadvance();
199
- i0.ɵɵproperty("value", descriptor_r24.value)("item", item_r18)("column", col_r23)("rowIndex", rowIndex_r20)("editorType", descriptor_r24.editorType ?? "text");
202
+ i0.ɵɵproperty("value", descriptor_r26.value)("item", item_r18)("column", col_r25)("rowIndex", rowIndex_r20)("editorType", descriptor_r26.editorType ?? "text");
200
203
  } }
201
204
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
202
205
  i0.ɵɵelement(0, "ogrid-primeng-popover-cell-editor", 40);
203
206
  } if (rf & 2) {
204
- const col_r23 = i0.ɵɵnextContext().$implicit;
205
- const descriptor_r24 = i0.ɵɵreadContextLet(1);
207
+ const col_r25 = i0.ɵɵnextContext().$implicit;
208
+ const descriptor_r26 = i0.ɵɵreadContextLet(1);
206
209
  const item_r18 = i0.ɵɵnextContext().$implicit;
207
210
  const rowIndex_r20 = i0.ɵɵreadContextLet(0);
208
211
  const ctx_r2 = i0.ɵɵnextContext(2);
209
- const editorProps_r25 = ctx_r2.buildPopoverEditorProps(item_r18, col_r23, descriptor_r24);
210
- i0.ɵɵproperty("item", item_r18)("column", col_r23)("rowIndex", rowIndex_r20)("globalColIndex", descriptor_r24.globalColIndex)("displayValue", descriptor_r24.displayValue)("editorProps", editorProps_r25)("onCancel", ctx_r2.cancelEditHandler);
212
+ const editorProps_r27 = ctx_r2.buildPopoverEditorProps(item_r18, col_r25, descriptor_r26);
213
+ i0.ɵɵproperty("item", item_r18)("column", col_r25)("rowIndex", rowIndex_r20)("globalColIndex", descriptor_r26.globalColIndex)("displayValue", descriptor_r26.displayValue)("editorProps", editorProps_r27)("onCancel", ctx_r2.cancelEditHandler);
211
214
  } }
212
215
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
213
- const _r27 = i0.ɵɵgetCurrentView();
216
+ const _r29 = i0.ɵɵgetCurrentView();
214
217
  i0.ɵɵelementStart(0, "input", 47);
215
- i0.ɵɵlistener("change", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r27); const col_r23 = i0.ɵɵnextContext(2).$implicit; const descriptor_r24 = i0.ɵɵreadContextLet(1); const item_r18 = i0.ɵɵnextContext().$implicit; const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(descriptor_r24.canEditAny ? ctx_r2.commitBooleanEdit(item_r18, col_r23.columnId, !!descriptor_r24.displayValue, rowIndex_r20, descriptor_r24.globalColIndex) : null); })("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r27); i0.ɵɵnextContext(2); const descriptor_r24 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onBooleanCheckboxPointerDown($event, rowIndex_r20, descriptor_r24.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r27); return i0.ɵɵresetView($event.stopPropagation()); });
218
+ i0.ɵɵlistener("change", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r29); const col_r25 = i0.ɵɵnextContext(2).$implicit; const descriptor_r26 = i0.ɵɵreadContextLet(1); const item_r18 = i0.ɵɵnextContext().$implicit; const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(descriptor_r26.canEditAny ? ctx_r2.commitBooleanEdit(item_r18, col_r25.columnId, !!descriptor_r26.displayValue, rowIndex_r20, descriptor_r26.globalColIndex) : null); })("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r29); i0.ɵɵnextContext(2); const descriptor_r26 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onBooleanCheckboxPointerDown($event, rowIndex_r20, descriptor_r26.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r29); return i0.ɵɵresetView($event.stopPropagation()); });
216
219
  i0.ɵɵelementEnd();
217
220
  } if (rf & 2) {
218
221
  i0.ɵɵnextContext(2);
219
- const descriptor_r24 = i0.ɵɵreadContextLet(1);
220
- i0.ɵɵstyleProp("cursor", descriptor_r24.canEditAny ? "pointer" : "default");
221
- i0.ɵɵproperty("checked", !!descriptor_r24.displayValue)("disabled", !descriptor_r24.canEditAny);
222
- i0.ɵɵattribute("aria-label", descriptor_r24.displayValue ? "Checked" : "Unchecked");
222
+ const descriptor_r26 = i0.ɵɵreadContextLet(1);
223
+ i0.ɵɵstyleProp("cursor", descriptor_r26.canEditAny ? "pointer" : "default");
224
+ i0.ɵɵproperty("checked", !!descriptor_r26.displayValue)("disabled", !descriptor_r26.canEditAny);
225
+ i0.ɵɵattribute("aria-label", descriptor_r26.displayValue ? "Checked" : "Unchecked");
223
226
  } }
224
227
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
225
228
  i0.ɵɵelementStart(0, "span");
226
229
  i0.ɵɵtext(1);
227
230
  i0.ɵɵelementEnd();
228
231
  } if (rf & 2) {
229
- const col_r23 = i0.ɵɵnextContext(2).$implicit;
230
- const descriptor_r24 = i0.ɵɵreadContextLet(1);
232
+ const col_r25 = i0.ɵɵnextContext(2).$implicit;
233
+ const descriptor_r26 = i0.ɵɵreadContextLet(1);
231
234
  const item_r18 = i0.ɵɵnextContext().$implicit;
232
235
  const ctx_r2 = i0.ɵɵnextContext(2);
233
- i0.ɵɵstyleMap(ctx_r2.resolveCellStyleFn(col_r23, item_r18, descriptor_r24.displayValue));
236
+ i0.ɵɵstyleMap(ctx_r2.resolveCellStyleFn(col_r25, item_r18, descriptor_r26.displayValue));
234
237
  i0.ɵɵadvance();
235
- i0.ɵɵtextInterpolate(ctx_r2.resolveCellContent(col_r23, item_r18, descriptor_r24.displayValue));
238
+ i0.ɵɵtextInterpolate(ctx_r2.resolveCellContent(col_r25, item_r18, descriptor_r26.displayValue));
236
239
  } }
237
240
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
238
- const _r28 = i0.ɵɵgetCurrentView();
241
+ const _r30 = i0.ɵɵgetCurrentView();
239
242
  i0.ɵɵelementStart(0, "div", 48);
240
- i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_3_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onFillHandleMouseDown($event)); });
243
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_3_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onFillHandleMouseDown($event)); });
241
244
  i0.ɵɵelementEnd();
242
245
  } }
243
246
  function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
244
- const _r26 = i0.ɵɵgetCurrentView();
247
+ const _r28 = i0.ɵɵgetCurrentView();
245
248
  i0.ɵɵelementStart(0, "div", 43);
246
- i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r26); i0.ɵɵnextContext(); const descriptor_r24 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellMouseDown($event, rowIndex_r20, descriptor_r24.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r26); i0.ɵɵnextContext(); const descriptor_r24 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellClick(rowIndex_r20, descriptor_r24.globalColIndex)); })("dblclick", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_dblclick_0_listener() { i0.ɵɵrestoreView(_r26); const col_r23 = i0.ɵɵnextContext().$implicit; const descriptor_r24 = i0.ɵɵreadContextLet(1); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(descriptor_r24.canEditAny ? ctx_r2.onCellDblClick(descriptor_r24.rowId, col_r23.columnId) : null); })("contextmenu", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onCellContextMenu($event)); });
249
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r28); i0.ɵɵnextContext(); const descriptor_r26 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellMouseDown($event, rowIndex_r20, descriptor_r26.globalColIndex)); })("click", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r28); i0.ɵɵnextContext(); const descriptor_r26 = i0.ɵɵreadContextLet(1); i0.ɵɵnextContext(); const rowIndex_r20 = i0.ɵɵreadContextLet(0); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellClick(rowIndex_r20, descriptor_r26.globalColIndex)); })("dblclick", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_dblclick_0_listener() { i0.ɵɵrestoreView(_r28); const col_r25 = i0.ɵɵnextContext().$implicit; const descriptor_r26 = i0.ɵɵreadContextLet(1); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(descriptor_r26.canEditAny ? ctx_r2.onCellDblClick(descriptor_r26.rowId, col_r25.columnId) : null); })("contextmenu", function DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template_div_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onCellContextMenu($event)); });
247
250
  i0.ɵɵconditionalCreate(1, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_1_Template, 1, 5, "input", 44)(2, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_2_Template, 2, 3, "span", 45);
248
251
  i0.ɵɵconditionalCreate(3, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Conditional_3_Template, 1, 0, "div", 46);
249
252
  i0.ɵɵelementEnd();
250
253
  } if (rf & 2) {
251
- const col_r23 = i0.ɵɵnextContext().$implicit;
252
- const descriptor_r24 = i0.ɵɵreadContextLet(1);
254
+ const col_r25 = i0.ɵɵnextContext().$implicit;
255
+ const descriptor_r26 = i0.ɵɵreadContextLet(1);
253
256
  i0.ɵɵnextContext();
254
257
  const rowIndex_r20 = i0.ɵɵreadContextLet(0);
255
- i0.ɵɵstyleProp("cursor", descriptor_r24.canEditAny ? "cell" : "default")("background", descriptor_r24.isInRange && !descriptor_r24.isActive ? "var(--ogrid-range-bg, rgba(33, 115, 70, 0.08))" : descriptor_r24.isActive && descriptor_r24.isInRange ? "var(--ogrid-bg, #fff)" : null)("outline", descriptor_r24.isActive && !descriptor_r24.isInRange ? "2px solid var(--ogrid-selection, #217346)" : null)("outline-offset", descriptor_r24.isActive && !descriptor_r24.isInRange ? "-2px" : null);
256
- i0.ɵɵattribute("data-row-index", rowIndex_r20)("data-col-index", descriptor_r24.globalColIndex)("data-active-cell", descriptor_r24.isActive ? "true" : null)("data-in-range", descriptor_r24.isInRange ? "true" : null)("tabindex", descriptor_r24.isActive ? 0 : -1);
258
+ i0.ɵɵstyleProp("cursor", descriptor_r26.canEditAny ? "cell" : "default")("background", descriptor_r26.isInRange && !descriptor_r26.isActive ? "var(--ogrid-range-bg, rgba(33, 115, 70, 0.08))" : descriptor_r26.isActive && descriptor_r26.isInRange ? "var(--ogrid-bg, #fff)" : null)("outline", descriptor_r26.isActive && !descriptor_r26.isInRange ? "2px solid var(--ogrid-selection, #217346)" : null)("outline-offset", descriptor_r26.isActive && !descriptor_r26.isInRange ? "-2px" : null);
259
+ i0.ɵɵattribute("data-row-index", rowIndex_r20)("data-col-index", descriptor_r26.globalColIndex)("data-active-cell", descriptor_r26.isActive ? "true" : null)("data-in-range", descriptor_r26.isInRange ? "true" : null)("tabindex", descriptor_r26.isActive ? 0 : -1);
257
260
  i0.ɵɵadvance();
258
- i0.ɵɵconditional(col_r23.type === "boolean" ? 1 : 2);
261
+ i0.ɵɵconditional(col_r25.type === "boolean" ? 1 : 2);
259
262
  i0.ɵɵadvance(2);
260
- i0.ɵɵconditional(descriptor_r24.canEditAny && descriptor_r24.isSelectionEndCell ? 3 : -1);
263
+ i0.ɵɵconditional(descriptor_r26.canEditAny && descriptor_r26.isSelectionEndCell ? 3 : -1);
261
264
  } }
262
265
  function DataGridTableComponent_Conditional_12_For_3_For_7_Template(rf, ctx) { if (rf & 1) {
266
+ const _r23 = i0.ɵɵgetCurrentView();
263
267
  i0.ɵɵelementStart(0, "td", 38);
268
+ i0.ɵɵlistener("pointerdown", function DataGridTableComponent_Conditional_12_For_3_For_7_Template_td_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("mousedown", function DataGridTableComponent_Conditional_12_For_3_For_7_Template_td_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfacePointerDown($event)); })("selectstart", function DataGridTableComponent_Conditional_12_For_3_For_7_Template_td_selectstart_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onNonDataSurfaceSelectStart($event)); });
264
269
  i0.ɵɵdeclareLet(1);
265
270
  i0.ɵɵconditionalCreate(2, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_2_Template, 2, 5, "div", 39)(3, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_3_Template, 1, 7, "ogrid-primeng-popover-cell-editor", 40)(4, DataGridTableComponent_Conditional_12_For_3_For_7_Conditional_4_Template, 4, 15, "div", 41);
266
271
  i0.ɵɵelementEnd();
267
272
  } if (rf & 2) {
268
- const col_r23 = ctx.$implicit;
273
+ const col_r25 = ctx.$implicit;
269
274
  const item_r18 = i0.ɵɵnextContext().$implicit;
270
275
  const rowIndex_r20 = i0.ɵɵreadContextLet(0);
271
276
  const ctx_r2 = i0.ɵɵnextContext(2);
272
- const pinned_r29 = ctx_r2.isPinned(col_r23.columnId);
273
- i0.ɵɵstyleProp("min-width", ctx_r2.getEffectiveMinWidth(col_r23), "px")("width", ctx_r2.getColumnWidth(col_r23), "px")("max-width", ctx_r2.getColumnWidth(col_r23), "px")("left", pinned_r29 === "left" ? ctx_r2.getPinnedLeftOffset(col_r23.columnId) : null, "px")("right", pinned_r29 === "right" ? ctx_r2.getPinnedRightOffset(col_r23.columnId) : null, "px")("text-align", col_r23.type === "numeric" ? "right" : null);
274
- i0.ɵɵclassProp("ogrid-td-pinned-left", pinned_r29 === "left")("ogrid-td-pinned-right", pinned_r29 === "right");
275
- i0.ɵɵattribute("data-column-id", col_r23.columnId);
277
+ const pinned_r31 = ctx_r2.isPinned(col_r25.columnId);
278
+ i0.ɵɵstyleProp("min-width", ctx_r2.getEffectiveMinWidth(col_r25), "px")("width", col_r25.width ?? ctx_r2.getColumnWidth(col_r25) + "px")("max-width", col_r25.width ? null : ctx_r2.getColumnWidth(col_r25) + "px")("left", pinned_r31 === "left" ? ctx_r2.getPinnedLeftOffset(col_r25.columnId) : null, "px")("right", pinned_r31 === "right" ? ctx_r2.getPinnedRightOffset(col_r25.columnId) : null, "px")("text-align", col_r25.type === "numeric" ? "right" : null);
279
+ i0.ɵɵclassProp("ogrid-td-pinned-left", pinned_r31 === "left")("ogrid-td-pinned-right", pinned_r31 === "right");
280
+ i0.ɵɵattribute("data-column-id", col_r25.columnId);
276
281
  i0.ɵɵadvance();
277
- const descriptor_r30 = i0.ɵɵstoreLet(ctx_r2.getCellDescriptor(item_r18, col_r23, rowIndex_r20, ctx_r2.getGlobalColIndex(col_r23)));
282
+ const descriptor_r32 = i0.ɵɵstoreLet(ctx_r2.getCellDescriptor(item_r18, col_r25, rowIndex_r20, ctx_r2.getGlobalColIndex(col_r25)));
278
283
  i0.ɵɵadvance();
279
- i0.ɵɵconditional(descriptor_r30.mode === "editing-inline" ? 2 : descriptor_r30.mode === "editing-popover" ? 3 : 4);
284
+ i0.ɵɵconditional(descriptor_r32.mode === "editing-inline" ? 2 : descriptor_r32.mode === "editing-popover" ? 3 : 4);
280
285
  } }
281
286
  function DataGridTableComponent_Conditional_12_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
282
287
  i0.ɵɵelement(0, "td");
@@ -297,15 +302,15 @@ function DataGridTableComponent_Conditional_12_For_3_Template(rf, ctx) { if (rf
297
302
  i0.ɵɵelementEnd();
298
303
  } if (rf & 2) {
299
304
  const item_r18 = ctx.$implicit;
300
- const ɵ$index_76_r31 = ctx.$index;
305
+ const ɵ$index_76_r33 = ctx.$index;
301
306
  const ctx_r2 = i0.ɵɵnextContext(2);
302
- i0.ɵɵstoreLet(ctx_r2.vsStartIndex() + ɵ$index_76_r31);
303
- const rowId_r32 = ctx_r2.getRowIdInput(item_r18);
307
+ i0.ɵɵstoreLet(ctx_r2.vsStartIndex() + ɵ$index_76_r33);
308
+ const rowId_r34 = ctx_r2.getRowIdInput(item_r18);
304
309
  i0.ɵɵadvance();
305
- const isSelected_r33 = i0.ɵɵstoreLet(ctx_r2.selectedRowIds().has(rowId_r32));
310
+ const isSelected_r35 = i0.ɵɵstoreLet(ctx_r2.selectedRowIds().has(rowId_r34));
306
311
  i0.ɵɵadvance();
307
- i0.ɵɵstyleProp("background", isSelected_r33 ? "var(--ogrid-selected-bg, #e8f0fe)" : null);
308
- i0.ɵɵattribute("data-row-id", rowId_r32)("aria-selected", isSelected_r33 || null);
312
+ i0.ɵɵstyleProp("background", isSelected_r35 ? "var(--ogrid-selected-bg, #e8f0fe)" : null);
313
+ i0.ɵɵattribute("data-row-id", rowId_r34)("aria-selected", isSelected_r35 || null);
309
314
  i0.ɵɵadvance();
310
315
  i0.ɵɵconditional(ctx_r2.hasCheckboxCol() ? 3 : -1);
311
316
  i0.ɵɵadvance();
@@ -345,12 +350,12 @@ function DataGridTableComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
345
350
  i0.ɵɵproperty("containerEl", ctx_r2.tableContainerEl())("references", ctx_r2.formulaReferences())("colOffset", ctx_r2.colOffset());
346
351
  } }
347
352
  function DataGridTableComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
348
- const _r34 = i0.ɵɵgetCurrentView();
353
+ const _r36 = i0.ɵɵgetCurrentView();
349
354
  i0.ɵɵelementStart(0, "div", 9)(1, "div")(2, "div", 49);
350
355
  i0.ɵɵtext(3, "No results found");
351
356
  i0.ɵɵelementEnd();
352
357
  i0.ɵɵelementStart(4, "ogrid-empty-state", 50);
353
- i0.ɵɵlistener("clearAll", function DataGridTableComponent_Conditional_15_Template_ogrid_empty_state_clearAll_4_listener() { let tmp_5_0; i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_5_0 = ctx_r2.emptyState()) == null ? null : tmp_5_0.onClearAll()); });
358
+ i0.ɵɵlistener("clearAll", function DataGridTableComponent_Conditional_15_Template_ogrid_empty_state_clearAll_4_listener() { let tmp_5_0; i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_5_0 = ctx_r2.emptyState()) == null ? null : tmp_5_0.onClearAll()); });
354
359
  i0.ɵɵelementEnd()()();
355
360
  } if (rf & 2) {
356
361
  let tmp_4_0;
@@ -367,9 +372,9 @@ function DataGridTableComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
367
372
  i0.ɵɵstyleProp("left", ctx_r2.columnReorderService.dropIndicatorX(), "px");
368
373
  } }
369
374
  function DataGridTableComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
370
- const _r35 = i0.ɵɵgetCurrentView();
375
+ const _r37 = i0.ɵɵgetCurrentView();
371
376
  i0.ɵɵelementStart(0, "ogrid-context-menu", 52);
372
- i0.ɵɵlistener("copyAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_copyAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCopy()); })("cutAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_cutAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCut()); })("pasteAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_pasteAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handlePaste()); })("selectAllAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_selectAllAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSelectAllCells()); })("undoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_undoAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUndo()); })("redoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_redoAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRedo()); })("closeAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_closeAction_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
377
+ i0.ɵɵlistener("copyAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_copyAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCopy()); })("cutAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_cutAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleCut()); })("pasteAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_pasteAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handlePaste()); })("selectAllAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_selectAllAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.handleSelectAllCells()); })("undoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_undoAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUndo()); })("redoAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_redoAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRedo()); })("closeAction", function DataGridTableComponent_Conditional_17_Template_ogrid_context_menu_closeAction_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
373
378
  i0.ɵɵelementEnd();
374
379
  } if (rf & 2) {
375
380
  const ctx_r2 = i0.ɵɵnextContext();
@@ -379,8 +384,8 @@ function DataGridTableComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
379
384
  i0.ɵɵelement(0, "ogrid-status-bar", 12);
380
385
  } if (rf & 2) {
381
386
  const ctx_r2 = i0.ɵɵnextContext();
382
- const sbConfig_r36 = i0.ɵɵreadContextLet(18);
383
- i0.ɵɵproperty("totalCount", sbConfig_r36.totalCount)("filteredCount", sbConfig_r36.filteredCount)("selectedCount", sbConfig_r36.selectedCount ?? ctx_r2.selectedRowIds().size)("selectedCellCount", ctx_r2.selectionCellCount())("aggregation", sbConfig_r36.aggregation)("suppressRowCount", sbConfig_r36.suppressRowCount)("classNames", ctx_r2.statusBarClasses);
387
+ const sbConfig_r38 = i0.ɵɵreadContextLet(18);
388
+ i0.ɵɵproperty("totalCount", sbConfig_r38.totalCount)("filteredCount", sbConfig_r38.filteredCount)("selectedCount", sbConfig_r38.selectedCount ?? ctx_r2.selectedRowIds().size)("selectedCellCount", ctx_r2.selectionCellCount())("aggregation", sbConfig_r38.aggregation)("suppressRowCount", sbConfig_r38.suppressRowCount)("classNames", ctx_r2.statusBarClasses);
384
389
  } }
385
390
  function DataGridTableComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
386
391
  i0.ɵɵelementStart(0, "div", 13)(1, "div", 53)(2, "span", 54);
@@ -431,6 +436,16 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
431
436
  this.showColumnLettersInput = false;
432
437
  this.showNameBoxInput = false;
433
438
  this.onActiveCellChange = undefined;
439
+ this.formulas = undefined;
440
+ this.getFormulaValue = undefined;
441
+ this.hasFormula = undefined;
442
+ this.getFormula = undefined;
443
+ this.setFormula = undefined;
444
+ this.onFormulaCellChanged = undefined;
445
+ this.getPrecedents = undefined;
446
+ this.getDependents = undefined;
447
+ this.getAuditTrail = undefined;
448
+ this.formulaVersion = undefined;
434
449
  this.formulaReferencesInput = undefined;
435
450
  this.currentPageInput = 1;
436
451
  this.pageSizeInput = 25;
@@ -638,6 +653,16 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
638
653
  showColumnLetters: this.showColumnLettersInput,
639
654
  showNameBox: this.showNameBoxInput,
640
655
  onActiveCellChange: this.onActiveCellChange,
656
+ formulas: this.formulas,
657
+ getFormulaValue: this.getFormulaValue,
658
+ hasFormula: this.hasFormula,
659
+ getFormula: this.getFormula,
660
+ setFormula: this.setFormula,
661
+ onFormulaCellChanged: this.onFormulaCellChanged,
662
+ getPrecedents: this.getPrecedents,
663
+ getDependents: this.getDependents,
664
+ getAuditTrail: this.getAuditTrail,
665
+ formulaVersion: this.formulaVersion,
641
666
  currentPage: this.currentPageInput,
642
667
  pageSize: this.pageSizeInput,
643
668
  statusBar: this.statusBar,
@@ -665,7 +690,7 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
665
690
  let _t;
666
691
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.wrapperRef = _t.first);
667
692
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableContainerRefEl = _t.first);
668
- } }, inputs: { itemsInput: [0, "items", "itemsInput"], columns: "columns", getRowIdInput: [0, "getRowId", "getRowIdInput"], sortBy: "sortBy", sortDirection: "sortDirection", onColumnSort: "onColumnSort", visibleColumns: "visibleColumns", columnOrder: "columnOrder", onColumnOrderChange: "onColumnOrderChange", onColumnResized: "onColumnResized", onColumnPinned: "onColumnPinned", pinnedColumnsInput: [0, "pinnedColumns", "pinnedColumnsInput"], initialColumnWidths: "initialColumnWidths", layoutMode: "layoutMode", suppressHorizontalScroll: "suppressHorizontalScroll", stickyHeaderInput: "stickyHeaderInput", columnReorder: "columnReorder", isLoadingInput: [0, "isLoading", "isLoadingInput"], loadingMessageInput: [0, "loadingMessage", "loadingMessageInput"], editable: "editable", cellSelection: "cellSelection", onCellValueChanged: "onCellValueChanged", onUndoInput: [0, "onUndo", "onUndoInput"], onRedoInput: [0, "onRedo", "onRedoInput"], canUndoInput: [0, "canUndo", "canUndoInput"], canRedoInput: [0, "canRedo", "canRedoInput"], rowSelectionMode: [0, "rowSelection", "rowSelectionMode"], selectedRows: "selectedRows", onSelectionChange: "onSelectionChange", statusBar: "statusBar", filters: "filters", onFilterChange: "onFilterChange", filterOptions: "filterOptions", loadingFilterOptions: "loadingFilterOptions", peopleSearch: "peopleSearch", getUserByEmail: "getUserByEmail", emptyStateInput: [0, "emptyState", "emptyStateInput"], onCellError: "onCellError", ariaLabelInput: [0, "aria-label", "ariaLabelInput"], ariaLabelledByInput: [0, "aria-labelledby", "ariaLabelledByInput"], showRowNumbers: "showRowNumbers", showColumnLettersInput: [0, "showColumnLetters", "showColumnLettersInput"], showNameBoxInput: [0, "showNameBox", "showNameBoxInput"], onActiveCellChange: "onActiveCellChange", formulaReferencesInput: [0, "formulaReferences", "formulaReferencesInput"], currentPageInput: [0, "currentPage", "currentPageInput"], pageSizeInput: [0, "pageSize", "pageSizeInput"] }, features: [i0.ɵɵProvidersFeature([DataGridStateService, ColumnReorderService, VirtualScrollService]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 36, consts: [["wrapper", ""], ["tableContainer", ""], [1, "ogrid-root"], ["tabindex", "0", "role", "region", "data-ogrid-scroll-container", "", 1, "ogrid-scroll-wrapper", 3, "contextmenu", "keydown", "pointerdown", "scroll"], [1, "ogrid-table-wrapper"], ["role", "grid", 1, "ogrid-table"], [1, "ogrid-column-letter-row"], [3, "containerEl", "selectionRange", "copyRange", "cutRange", "colOffset", "columnSizingVersion", "items", "visibleColumns", "columnOrder"], [3, "containerEl", "references", "colOffset"], [1, "ogrid-empty-container"], [1, "ogrid-drop-indicator", 3, "left"], [3, "x", "y", "hasSelection", "canUndoProp", "canRedoProp", "classNames"], [3, "totalCount", "filteredCount", "selectedCount", "selectedCellCount", "aggregation", "suppressRowCount", "classNames"], ["aria-live", "polite", 1, "ogrid-loading-overlay"], [1, "ogrid-column-letter-cell"], ["scope", "col", "rowSpan", "1", 1, "ogrid-checkbox-header"], ["scope", "col", "rowSpan", "1", 1, "ogrid-row-number-header", 3, "width", "min-width", "max-width"], [1, "ogrid-row-number-spacer"], ["type", "checkbox", "aria-label", "Select all rows", 3, "change", "checked", "indeterminate"], ["scope", "col", "rowSpan", "1", 1, "ogrid-row-number-header"], ["role", "separator", "aria-label", "Resize row numbers", 1, "ogrid-resize-handle", 3, "pointerdown", "dblclick"], ["scope", "colgroup", 1, "ogrid-column-group-header"], ["scope", "col", 1, "ogrid-header-cell", 3, "ogrid-th-pinned-left", "ogrid-th-pinned-right", "min-width", "width", "max-width", "left", "right", "cursor"], ["scope", "col", 1, "ogrid-header-cell", 3, "pointerdown"], [1, "ogrid-header-content"], [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-resize-handle", 3, "pointerdown", "dblclick"], [3, "height"], [3, "background"], [3, "click"], [1, "ogrid-checkbox-cell"], [1, "ogrid-row-number-cell", 3, "width", "min-width", "max-width"], [3, "width", "minWidth", "maxWidth", "padding"], [1, "ogrid-data-cell", 3, "ogrid-td-pinned-left", "ogrid-td-pinned-right", "min-width", "width", "max-width", "left", "right", "text-align"], [1, "ogrid-checkbox-cell", 3, "click"], ["type", "checkbox", 3, "change", "checked"], [1, "ogrid-row-number-cell"], [1, "ogrid-data-cell"], [1, "ogrid-editing-cell"], [3, "item", "column", "rowIndex", "globalColIndex", "displayValue", "editorProps", "onCancel"], [1, "ogrid-cell-content", 3, "cursor", "background", "outline", "outline-offset"], [3, "commit", "cancel", "value", "item", "column", "rowIndex", "editorType"], [1, "ogrid-cell-content", 3, "pointerdown", "click", "dblclick", "contextmenu"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "checked", "disabled", "cursor"], [3, "style"], ["aria-label", "Fill handle", 1, "ogrid-fill-handle"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "change", "pointerdown", "click", "checked", "disabled"], ["aria-label", "Fill handle", 1, "ogrid-fill-handle", 3, "pointerdown"], [1, "ogrid-empty-title"], [3, "clearAll", "message", "hasActiveFilters", "render"], [1, "ogrid-drop-indicator"], [3, "copyAction", "cutAction", "pasteAction", "selectAllAction", "undoAction", "redoAction", "closeAction", "x", "y", "hasSelection", "canUndoProp", "canRedoProp", "classNames"], [1, "ogrid-loading-content"], [1, "ogrid-loading-text"]], template: function DataGridTableComponent_Template(rf, ctx) { if (rf & 1) {
693
+ } }, inputs: { itemsInput: [0, "items", "itemsInput"], columns: "columns", getRowIdInput: [0, "getRowId", "getRowIdInput"], sortBy: "sortBy", sortDirection: "sortDirection", onColumnSort: "onColumnSort", visibleColumns: "visibleColumns", columnOrder: "columnOrder", onColumnOrderChange: "onColumnOrderChange", onColumnResized: "onColumnResized", onColumnPinned: "onColumnPinned", pinnedColumnsInput: [0, "pinnedColumns", "pinnedColumnsInput"], initialColumnWidths: "initialColumnWidths", layoutMode: "layoutMode", suppressHorizontalScroll: "suppressHorizontalScroll", stickyHeaderInput: "stickyHeaderInput", columnReorder: "columnReorder", isLoadingInput: [0, "isLoading", "isLoadingInput"], loadingMessageInput: [0, "loadingMessage", "loadingMessageInput"], editable: "editable", cellSelection: "cellSelection", onCellValueChanged: "onCellValueChanged", onUndoInput: [0, "onUndo", "onUndoInput"], onRedoInput: [0, "onRedo", "onRedoInput"], canUndoInput: [0, "canUndo", "canUndoInput"], canRedoInput: [0, "canRedo", "canRedoInput"], rowSelectionMode: [0, "rowSelection", "rowSelectionMode"], selectedRows: "selectedRows", onSelectionChange: "onSelectionChange", statusBar: "statusBar", filters: "filters", onFilterChange: "onFilterChange", filterOptions: "filterOptions", loadingFilterOptions: "loadingFilterOptions", peopleSearch: "peopleSearch", getUserByEmail: "getUserByEmail", emptyStateInput: [0, "emptyState", "emptyStateInput"], onCellError: "onCellError", ariaLabelInput: [0, "aria-label", "ariaLabelInput"], ariaLabelledByInput: [0, "aria-labelledby", "ariaLabelledByInput"], showRowNumbers: "showRowNumbers", showColumnLettersInput: [0, "showColumnLetters", "showColumnLettersInput"], showNameBoxInput: [0, "showNameBox", "showNameBoxInput"], onActiveCellChange: "onActiveCellChange", formulas: "formulas", getFormulaValue: "getFormulaValue", hasFormula: "hasFormula", getFormula: "getFormula", setFormula: "setFormula", onFormulaCellChanged: "onFormulaCellChanged", getPrecedents: "getPrecedents", getDependents: "getDependents", getAuditTrail: "getAuditTrail", formulaVersion: "formulaVersion", formulaReferencesInput: [0, "formulaReferences", "formulaReferencesInput"], currentPageInput: [0, "currentPage", "currentPageInput"], pageSizeInput: [0, "pageSize", "pageSizeInput"] }, features: [i0.ɵɵProvidersFeature([DataGridStateService, ColumnReorderService, VirtualScrollService]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 36, consts: [["wrapper", ""], ["tableContainer", ""], [1, "ogrid-root"], ["tabindex", "0", "role", "region", "data-ogrid-scroll-container", "", 1, "ogrid-scroll-wrapper", 3, "contextmenu", "keydown", "pointerdown", "scroll"], [1, "ogrid-table-wrapper"], ["role", "grid", 1, "ogrid-table"], [1, "ogrid-column-letter-row"], [3, "containerEl", "selectionRange", "copyRange", "cutRange", "colOffset", "columnSizingVersion", "items", "visibleColumns", "columnOrder"], [3, "containerEl", "references", "colOffset"], [1, "ogrid-empty-container"], [1, "ogrid-drop-indicator", 3, "left"], [3, "x", "y", "hasSelection", "canUndoProp", "canRedoProp", "classNames"], [3, "totalCount", "filteredCount", "selectedCount", "selectedCellCount", "aggregation", "suppressRowCount", "classNames"], ["aria-live", "polite", 1, "ogrid-loading-overlay"], [1, "ogrid-column-letter-cell"], ["scope", "col", "rowSpan", "1", 1, "ogrid-checkbox-header"], ["scope", "col", "rowSpan", "1", 1, "ogrid-row-number-header", 3, "width", "min-width", "max-width"], [1, "ogrid-row-number-spacer"], ["type", "checkbox", "aria-label", "Select all rows", 3, "change", "checked", "indeterminate"], ["scope", "col", "rowSpan", "1", 1, "ogrid-row-number-header", 3, "pointerdown", "mousedown", "selectstart"], ["role", "separator", "aria-label", "Resize row numbers", 1, "ogrid-resize-handle", 3, "pointerdown", "dblclick"], ["scope", "colgroup", 1, "ogrid-column-group-header"], ["scope", "col", 1, "ogrid-header-cell", 3, "ogrid-th-pinned-left", "ogrid-th-pinned-right", "min-width", "width", "max-width", "left", "right", "cursor"], ["scope", "col", 1, "ogrid-header-cell", 3, "pointerdown"], [1, "ogrid-header-content"], [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-resize-handle", 3, "pointerdown", "dblclick"], [3, "height"], [3, "background"], [3, "click"], [1, "ogrid-checkbox-cell"], [1, "ogrid-row-number-cell", 2, "user-select", "none", "-webkit-user-select", "none", 3, "width", "min-width", "max-width"], [3, "width", "minWidth", "maxWidth", "padding"], [1, "ogrid-data-cell", 2, "user-select", "none", "-webkit-user-select", "none", 3, "ogrid-td-pinned-left", "ogrid-td-pinned-right", "min-width", "width", "max-width", "left", "right", "text-align"], [1, "ogrid-checkbox-cell", 3, "click"], ["type", "checkbox", 3, "change", "checked"], [1, "ogrid-row-number-cell", 2, "user-select", "none", "-webkit-user-select", "none", 3, "pointerdown", "mousedown", "selectstart"], [1, "ogrid-data-cell", 2, "user-select", "none", "-webkit-user-select", "none", 3, "pointerdown", "mousedown", "selectstart"], [1, "ogrid-editing-cell"], [3, "item", "column", "rowIndex", "globalColIndex", "displayValue", "editorProps", "onCancel"], [1, "ogrid-cell-content", 3, "cursor", "background", "outline", "outline-offset"], [3, "commit", "cancel", "value", "item", "column", "rowIndex", "editorType"], [1, "ogrid-cell-content", 3, "pointerdown", "click", "dblclick", "contextmenu"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "checked", "disabled", "cursor"], [3, "style"], ["aria-label", "Fill handle", 1, "ogrid-fill-handle"], ["type", "checkbox", 2, "margin", "0", "outline", "none", 3, "change", "pointerdown", "click", "checked", "disabled"], ["aria-label", "Fill handle", 1, "ogrid-fill-handle", 3, "pointerdown"], [1, "ogrid-empty-title"], [3, "clearAll", "message", "hasActiveFilters", "render"], [1, "ogrid-drop-indicator"], [3, "copyAction", "cutAction", "pasteAction", "selectAllAction", "undoAction", "redoAction", "closeAction", "x", "y", "hasSelection", "canUndoProp", "canRedoProp", "classNames"], [1, "ogrid-loading-content"], [1, "ogrid-loading-text"]], template: function DataGridTableComponent_Template(rf, ctx) { if (rf & 1) {
669
694
  const _r1 = i0.ɵɵgetCurrentView();
670
695
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3, 0);
671
696
  i0.ɵɵlistener("contextmenu", function DataGridTableComponent_Template_div_contextmenu_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.preventDefault()); })("keydown", function DataGridTableComponent_Template_div_keydown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onGridKeyDown($event)); })("pointerdown", function DataGridTableComponent_Template_div_pointerdown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onWrapperMouseDown($event)); })("scroll", function DataGridTableComponent_Template_div_scroll_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onWrapperScroll($event)); });
@@ -713,9 +738,9 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
713
738
  i0.ɵɵadvance();
714
739
  i0.ɵɵconditional(ctx.menuPosition() ? 17 : -1);
715
740
  i0.ɵɵadvance();
716
- const sbConfig_r37 = i0.ɵɵstoreLet(ctx.statusBarConfig());
741
+ const sbConfig_r39 = i0.ɵɵstoreLet(ctx.statusBarConfig());
717
742
  i0.ɵɵadvance();
718
- i0.ɵɵconditional(sbConfig_r37 ? 19 : -1);
743
+ i0.ɵɵconditional(sbConfig_r39 ? 19 : -1);
719
744
  i0.ɵɵadvance();
720
745
  i0.ɵɵconditional(ctx.isLoading() ? 20 : -1);
721
746
  } }, dependencies: [StatusBarComponent,
@@ -726,7 +751,7 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
726
751
  ColumnHeaderFilterComponent,
727
752
  ColumnHeaderMenuComponent,
728
753
  InlineCellEditorComponent,
729
- PopoverCellEditorComponent], styles: ["\n :host { display: block; }\n .ogrid-root {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .ogrid-scroll-wrapper {\n overflow: auto;\n position: relative;\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n outline: none;\n }\n .ogrid-scroll-wrapper:focus-visible { outline: none; }\n .ogrid-scroll-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-scroll-wrapper--loading-empty { min-height: 200px; }\n .ogrid-table-wrapper {\n position: relative;\n overflow-x: clip;\n }\n .ogrid-table {\n width: var(--data-table-width, 100%);\n min-width: var(--data-table-min-width, 100%);\n border-collapse: collapse;\n table-layout: fixed;\n }\n .ogrid-table tr th:first-child,\n .ogrid-table tr td:first-child { border-left: none; }\n .ogrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-thead {\n z-index: 3;\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-sticky-header { position: sticky; top: 0; }\n .ogrid-sticky-header .ogrid-checkbox-header,\n .ogrid-sticky-header .ogrid-row-number-header { position: sticky; top: 0; }\n .ogrid-checkbox-header {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n text-align: center;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n }\n .ogrid-row-number-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n position: relative;\n }\n .ogrid-row-number-spacer {\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-column-group-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 6px 10px;\n }\n .ogrid-header-cell {\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 0;\n position: relative;\n user-select: none;\n }\n .ogrid-header-content {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n }\n .ogrid-resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-resize-handle { width: 16px; right: -6px; }\n }\n .ogrid-checkbox-cell {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n padding: 6px 4px;\n text-align: center;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-row-number-cell {\n padding: 6px;\n text-align: center;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\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-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: sticky;\n left: 0;\n z-index: 3;\n }\n .ogrid-data-cell {\n padding: 0;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: relative;\n }\n .ogrid-data-cell:has(> [data-active-cell]),\n .ogrid-data-cell:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-cell-content {\n padding: var(--ogrid-cell-padding, 6px 10px);\n min-height: 20px;\n cursor: default;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\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-scroll-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-fill-handle {\n position: absolute;\n bottom: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n background: var(--ogrid-selection, #217346);\n cursor: crosshair;\n touch-action: none;\n z-index: 2;\n }\n @media (pointer: coarse) {\n .ogrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-empty-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n }\n .ogrid-empty-title {\n font-weight: 600;\n margin-bottom: 8px;\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, #f5f5f5);\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-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n z-index: 10;\n }\n .ogrid-loading-content {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--ogrid-fg, #242424);\n }\n .ogrid-loading-text {\n font-size: 14px;\n }\n .loading-dimmed {\n opacity: 0.5;\n pointer-events: none;\n }\n .ogrid-drop-indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--ogrid-primary, #217346);\n pointer-events: none;\n z-index: 100;\n transition: left 0.05s;\n }\n .ogrid-th-pinned-left {\n position: sticky;\n top: 0;\n left: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-th-pinned-right {\n position: sticky;\n top: 0;\n right: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-td-pinned-left {\n position: sticky;\n left: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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-td-pinned-right {\n position: sticky;\n right: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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 ::ng-deep th:focus-visible,\n ::ng-deep td:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: -2px;\n z-index: 11;\n }\n ::ng-deep .p-button:focus-visible,\n ::ng-deep button:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* Context menu */\n .ogrid-context-menu {\n position: fixed;\n z-index: 1000;\n min-width: 160px;\n padding: 4px 0;\n background: var(--ogrid-bg, #fff);\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n .ogrid-context-menu-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: none;\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-context-menu-item:hover:not(:disabled) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-context-menu-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .ogrid-context-menu-item-label {\n flex: 1;\n }\n .ogrid-context-menu-item-shortcut {\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n font-size: 0.85em;\n }\n .ogrid-context-menu-divider {\n height: 1px;\n margin: 4px 0;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n ::ng-deep .p-checkbox:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* PrimeNG Menu popup overrides.\n Double-class selectors (0,2,0) beat PrimeNG's single-class (0,1,0) defaults. */\n .p-menu.p-menu {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 4px;\n padding: 4px 0;\n }\n .p-menu-overlay.p-menu-overlay {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .p-menu-item-content.p-menu-item-content {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-item-link.p-menu-item-link {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n padding: 6px 12px;\n }\n .p-menu-item-label.p-menu-item-label {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-size: 0.875rem;\n }\n .p-menu-item:not(.p-disabled) .p-menu-item-content.p-menu-item-content:hover {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-separator.p-menu-separator {\n border-color: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n margin: 4px 0;\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, #f5f5f5));\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 /* 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 "], encapsulation: 2, changeDetection: 0 }); }
754
+ PopoverCellEditorComponent], styles: ["\n :host { display: block; }\n .ogrid-root {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .ogrid-scroll-wrapper {\n overflow: auto;\n position: relative;\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n outline: none;\n }\n .ogrid-scroll-wrapper:focus-visible { outline: none; }\n .ogrid-scroll-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-scroll-wrapper--loading-empty { min-height: 200px; }\n .ogrid-table-wrapper {\n position: relative;\n overflow-x: clip;\n }\n .ogrid-table {\n width: var(--data-table-width, 100%);\n min-width: var(--data-table-min-width, 100%);\n border-collapse: collapse;\n table-layout: fixed;\n }\n .ogrid-table tr th:first-child,\n .ogrid-table tr td:first-child { border-left: none; }\n .ogrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-thead {\n z-index: 3;\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-sticky-header { position: sticky; top: 0; }\n .ogrid-sticky-header .ogrid-checkbox-header,\n .ogrid-sticky-header .ogrid-row-number-header { position: sticky; top: 0; }\n .ogrid-checkbox-header {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n text-align: center;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n }\n .ogrid-row-number-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n position: relative;\n user-select: none;\n }\n .ogrid-row-number-spacer {\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-column-group-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 6px 10px;\n }\n .ogrid-header-cell {\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 0;\n position: relative;\n user-select: none;\n }\n .ogrid-header-content {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n }\n .ogrid-resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-resize-handle { width: 16px; right: -6px; }\n }\n .ogrid-checkbox-cell {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n padding: 6px 4px;\n text-align: center;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-row-number-cell {\n padding: 6px;\n text-align: center;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\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-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: sticky;\n left: 0;\n z-index: 3;\n user-select: none;\n }\n .ogrid-data-cell {\n padding: 0;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: relative;\n }\n .ogrid-data-cell:has(> [data-active-cell]),\n .ogrid-data-cell:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-cell-content {\n padding: var(--ogrid-cell-padding, 6px 10px);\n min-height: 20px;\n cursor: default;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n }\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-scroll-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-fill-handle {\n position: absolute;\n bottom: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n background: var(--ogrid-selection, #217346);\n cursor: crosshair;\n touch-action: none;\n z-index: 2;\n }\n @media (pointer: coarse) {\n .ogrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-empty-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n }\n .ogrid-empty-title {\n font-weight: 600;\n margin-bottom: 8px;\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, #f5f5f5);\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-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n z-index: 10;\n }\n .ogrid-loading-content {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--ogrid-fg, #242424);\n }\n .ogrid-loading-text {\n font-size: 14px;\n }\n .loading-dimmed {\n opacity: 0.5;\n pointer-events: none;\n }\n .ogrid-drop-indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--ogrid-primary, #217346);\n pointer-events: none;\n z-index: 100;\n transition: left 0.05s;\n }\n .ogrid-th-pinned-left {\n position: sticky;\n top: 0;\n left: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-th-pinned-right {\n position: sticky;\n top: 0;\n right: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-td-pinned-left {\n position: sticky;\n left: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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-td-pinned-right {\n position: sticky;\n right: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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 ::ng-deep th:focus-visible,\n ::ng-deep td:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: -2px;\n z-index: 11;\n }\n ::ng-deep .p-button:focus-visible,\n ::ng-deep button:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* Context menu */\n .ogrid-context-menu {\n position: fixed;\n z-index: 1000;\n min-width: 160px;\n padding: 4px 0;\n background: var(--ogrid-bg, #fff);\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n .ogrid-context-menu-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: none;\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-context-menu-item:hover:not(:disabled) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-context-menu-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .ogrid-context-menu-item-label {\n flex: 1;\n }\n .ogrid-context-menu-item-shortcut {\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n font-size: 0.85em;\n }\n .ogrid-context-menu-divider {\n height: 1px;\n margin: 4px 0;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n ::ng-deep .p-checkbox:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* PrimeNG Menu popup overrides.\n Double-class selectors (0,2,0) beat PrimeNG's single-class (0,1,0) defaults. */\n .p-menu.p-menu {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 4px;\n padding: 4px 0;\n }\n .p-menu-overlay.p-menu-overlay {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .p-menu-item-content.p-menu-item-content {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-item-link.p-menu-item-link {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n padding: 6px 12px;\n }\n .p-menu-item-label.p-menu-item-label {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-size: 0.875rem;\n }\n .p-menu-item:not(.p-disabled) .p-menu-item-content.p-menu-item-content:hover {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-separator.p-menu-separator {\n border-color: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n margin: 4px 0;\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, #f5f5f5));\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 /* 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 "], encapsulation: 2, changeDetection: 0 }); }
730
755
  }
731
756
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataGridTableComponent, [{
732
757
  type: Component,
@@ -804,6 +829,9 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
804
829
  [style.width.px]="getRowNumberWidth()"
805
830
  [style.min-width.px]="getRowNumberWidth()"
806
831
  [style.max-width.px]="getRowNumberWidth()"
832
+ (pointerdown)="onNonDataSurfacePointerDown($event)"
833
+ (mousedown)="onNonDataSurfacePointerDown($event)"
834
+ (selectstart)="onNonDataSurfaceSelectStart($event)"
807
835
  >
808
836
  #
809
837
  <div
@@ -842,8 +870,8 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
842
870
  [class.ogrid-th-pinned-left]="pinned === 'left'"
843
871
  [class.ogrid-th-pinned-right]="pinned === 'right'"
844
872
  [style.min-width.px]="getEffectiveMinWidth(col)"
845
- [style.width.px]="getColumnWidth(col)"
846
- [style.max-width.px]="getColumnWidth(col)"
873
+ [style.width]="col.width ?? (getColumnWidth(col) + 'px')"
874
+ [style.max-width]="col.width ? null : (getColumnWidth(col) + 'px')"
847
875
  [style.left.px]="pinned === 'left' ? getPinnedLeftOffset(col.columnId) : null"
848
876
  [style.right.px]="pinned === 'right' ? getPinnedRightOffset(col.columnId) : null"
849
877
  [style.cursor]="columnReorderService.isDragging() ? 'grabbing' : 'grab'"
@@ -927,9 +955,13 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
927
955
  }
928
956
  @if (hasRowNumbersCol()) {
929
957
  <td class="ogrid-row-number-cell"
958
+ style="user-select: none; -webkit-user-select: none;"
930
959
  [style.width.px]="getRowNumberWidth()"
931
960
  [style.min-width.px]="getRowNumberWidth()"
932
961
  [style.max-width.px]="getRowNumberWidth()"
962
+ (pointerdown)="onNonDataSurfacePointerDown($event)"
963
+ (mousedown)="onNonDataSurfacePointerDown($event)"
964
+ (selectstart)="onNonDataSurfaceSelectStart($event)"
933
965
  >
934
966
  {{ rowNumberOffset() + rowIndex + 1 }}
935
967
  </td>
@@ -944,12 +976,16 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
944
976
  [class.ogrid-td-pinned-left]="pinned === 'left'"
945
977
  [class.ogrid-td-pinned-right]="pinned === 'right'"
946
978
  class="ogrid-data-cell"
979
+ style="user-select: none; -webkit-user-select: none;"
947
980
  [style.min-width.px]="getEffectiveMinWidth(col)"
948
- [style.width.px]="getColumnWidth(col)"
949
- [style.max-width.px]="getColumnWidth(col)"
981
+ [style.width]="col.width ?? (getColumnWidth(col) + 'px')"
982
+ [style.max-width]="col.width ? null : (getColumnWidth(col) + 'px')"
950
983
  [style.left.px]="pinned === 'left' ? getPinnedLeftOffset(col.columnId) : null"
951
984
  [style.right.px]="pinned === 'right' ? getPinnedRightOffset(col.columnId) : null"
952
985
  [style.text-align]="col.type === 'numeric' ? 'right' : null"
986
+ (pointerdown)="onNonDataSurfacePointerDown($event)"
987
+ (mousedown)="onNonDataSurfacePointerDown($event)"
988
+ (selectstart)="onNonDataSurfaceSelectStart($event)"
953
989
  >
954
990
  @let descriptor = getCellDescriptor(item, col, rowIndex, getGlobalColIndex(col));
955
991
  @if (descriptor.mode === 'editing-inline') {
@@ -1101,7 +1137,7 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
1101
1137
  </div>
1102
1138
  }
1103
1139
  </div>
1104
- `, styles: ["\n :host { display: block; }\n .ogrid-root {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .ogrid-scroll-wrapper {\n overflow: auto;\n position: relative;\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n outline: none;\n }\n .ogrid-scroll-wrapper:focus-visible { outline: none; }\n .ogrid-scroll-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-scroll-wrapper--loading-empty { min-height: 200px; }\n .ogrid-table-wrapper {\n position: relative;\n overflow-x: clip;\n }\n .ogrid-table {\n width: var(--data-table-width, 100%);\n min-width: var(--data-table-min-width, 100%);\n border-collapse: collapse;\n table-layout: fixed;\n }\n .ogrid-table tr th:first-child,\n .ogrid-table tr td:first-child { border-left: none; }\n .ogrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-thead {\n z-index: 3;\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-sticky-header { position: sticky; top: 0; }\n .ogrid-sticky-header .ogrid-checkbox-header,\n .ogrid-sticky-header .ogrid-row-number-header { position: sticky; top: 0; }\n .ogrid-checkbox-header {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n text-align: center;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n }\n .ogrid-row-number-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n position: relative;\n }\n .ogrid-row-number-spacer {\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-column-group-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 6px 10px;\n }\n .ogrid-header-cell {\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 0;\n position: relative;\n user-select: none;\n }\n .ogrid-header-content {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n }\n .ogrid-resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-resize-handle { width: 16px; right: -6px; }\n }\n .ogrid-checkbox-cell {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n padding: 6px 4px;\n text-align: center;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-row-number-cell {\n padding: 6px;\n text-align: center;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\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-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: sticky;\n left: 0;\n z-index: 3;\n }\n .ogrid-data-cell {\n padding: 0;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: relative;\n }\n .ogrid-data-cell:has(> [data-active-cell]),\n .ogrid-data-cell:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-cell-content {\n padding: var(--ogrid-cell-padding, 6px 10px);\n min-height: 20px;\n cursor: default;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\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-scroll-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-fill-handle {\n position: absolute;\n bottom: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n background: var(--ogrid-selection, #217346);\n cursor: crosshair;\n touch-action: none;\n z-index: 2;\n }\n @media (pointer: coarse) {\n .ogrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-empty-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n }\n .ogrid-empty-title {\n font-weight: 600;\n margin-bottom: 8px;\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, #f5f5f5);\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-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n z-index: 10;\n }\n .ogrid-loading-content {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--ogrid-fg, #242424);\n }\n .ogrid-loading-text {\n font-size: 14px;\n }\n .loading-dimmed {\n opacity: 0.5;\n pointer-events: none;\n }\n .ogrid-drop-indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--ogrid-primary, #217346);\n pointer-events: none;\n z-index: 100;\n transition: left 0.05s;\n }\n .ogrid-th-pinned-left {\n position: sticky;\n top: 0;\n left: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-th-pinned-right {\n position: sticky;\n top: 0;\n right: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-td-pinned-left {\n position: sticky;\n left: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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-td-pinned-right {\n position: sticky;\n right: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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 ::ng-deep th:focus-visible,\n ::ng-deep td:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: -2px;\n z-index: 11;\n }\n ::ng-deep .p-button:focus-visible,\n ::ng-deep button:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* Context menu */\n .ogrid-context-menu {\n position: fixed;\n z-index: 1000;\n min-width: 160px;\n padding: 4px 0;\n background: var(--ogrid-bg, #fff);\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n .ogrid-context-menu-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: none;\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-context-menu-item:hover:not(:disabled) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-context-menu-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .ogrid-context-menu-item-label {\n flex: 1;\n }\n .ogrid-context-menu-item-shortcut {\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n font-size: 0.85em;\n }\n .ogrid-context-menu-divider {\n height: 1px;\n margin: 4px 0;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n ::ng-deep .p-checkbox:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* PrimeNG Menu popup overrides.\n Double-class selectors (0,2,0) beat PrimeNG's single-class (0,1,0) defaults. */\n .p-menu.p-menu {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 4px;\n padding: 4px 0;\n }\n .p-menu-overlay.p-menu-overlay {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .p-menu-item-content.p-menu-item-content {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-item-link.p-menu-item-link {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n padding: 6px 12px;\n }\n .p-menu-item-label.p-menu-item-label {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-size: 0.875rem;\n }\n .p-menu-item:not(.p-disabled) .p-menu-item-content.p-menu-item-content:hover {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-separator.p-menu-separator {\n border-color: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n margin: 4px 0;\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, #f5f5f5));\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 /* 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 "] }]
1140
+ `, styles: ["\n :host { display: block; }\n .ogrid-root {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .ogrid-scroll-wrapper {\n overflow: auto;\n position: relative;\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n outline: none;\n }\n .ogrid-scroll-wrapper:focus-visible { outline: none; }\n .ogrid-scroll-wrapper[data-virtual-scroll] { flex: 1; min-height: 0; }\n .ogrid-scroll-wrapper--loading-empty { min-height: 200px; }\n .ogrid-table-wrapper {\n position: relative;\n overflow-x: clip;\n }\n .ogrid-table {\n width: var(--data-table-width, 100%);\n min-width: var(--data-table-min-width, 100%);\n border-collapse: collapse;\n table-layout: fixed;\n }\n .ogrid-table tr th:first-child,\n .ogrid-table tr td:first-child { border-left: none; }\n .ogrid-table tbody tr { height: var(--ogrid-row-height, auto); }\n .ogrid-thead {\n z-index: 3;\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-sticky-header { position: sticky; top: 0; }\n .ogrid-sticky-header .ogrid-checkbox-header,\n .ogrid-sticky-header .ogrid-row-number-header { position: sticky; top: 0; }\n .ogrid-checkbox-header {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n text-align: center;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n }\n .ogrid-row-number-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n z-index: 3;\n position: relative;\n user-select: none;\n }\n .ogrid-row-number-spacer {\n background: var(--ogrid-header-bg, #f5f5f5);\n }\n .ogrid-column-group-header {\n text-align: center;\n font-weight: 600;\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 6px 10px;\n }\n .ogrid-header-cell {\n background: var(--ogrid-header-bg, #f5f5f5);\n border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n padding: 0;\n position: relative;\n user-select: none;\n }\n .ogrid-header-content {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n }\n .ogrid-resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n touch-action: none;\n }\n @media (pointer: coarse) {\n .ogrid-resize-handle { width: 16px; right: -6px; }\n }\n .ogrid-checkbox-cell {\n width: 48px;\n min-width: 48px;\n max-width: 48px;\n padding: 6px 4px;\n text-align: center;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .ogrid-row-number-cell {\n padding: 6px;\n text-align: center;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\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-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: sticky;\n left: 0;\n z-index: 3;\n user-select: none;\n }\n .ogrid-data-cell {\n padding: 0;\n border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n position: relative;\n }\n .ogrid-data-cell:has(> [data-active-cell]),\n .ogrid-data-cell:has(> .ogrid-editing-cell) { z-index: 2; }\n .ogrid-cell-content {\n padding: var(--ogrid-cell-padding, 6px 10px);\n min-height: 20px;\n cursor: default;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n }\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-scroll-wrapper [data-drag-range] { background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)); }\n .ogrid-fill-handle {\n position: absolute;\n bottom: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n background: var(--ogrid-selection, #217346);\n cursor: crosshair;\n touch-action: none;\n z-index: 2;\n }\n @media (pointer: coarse) {\n .ogrid-fill-handle { width: 14px; height: 14px; right: -7px; bottom: -7px; border-radius: 2px; }\n }\n .ogrid-empty-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n text-align: center;\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n }\n .ogrid-empty-title {\n font-weight: 600;\n margin-bottom: 8px;\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, #f5f5f5);\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-loading-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));\n z-index: 10;\n }\n .ogrid-loading-content {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--ogrid-fg, #242424);\n }\n .ogrid-loading-text {\n font-size: 14px;\n }\n .loading-dimmed {\n opacity: 0.5;\n pointer-events: none;\n }\n .ogrid-drop-indicator {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 3px;\n background: var(--ogrid-primary, #217346);\n pointer-events: none;\n z-index: 100;\n transition: left 0.05s;\n }\n .ogrid-th-pinned-left {\n position: sticky;\n top: 0;\n left: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-th-pinned-right {\n position: sticky;\n top: 0;\n right: 0;\n z-index: 10;\n background: var(--ogrid-header-bg, #f5f5f5);\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-td-pinned-left {\n position: sticky;\n left: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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-td-pinned-right {\n position: sticky;\n right: 0;\n z-index: 5;\n background: var(--ogrid-bg, #fff);\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 ::ng-deep th:focus-visible,\n ::ng-deep td:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: -2px;\n z-index: 11;\n }\n ::ng-deep .p-button:focus-visible,\n ::ng-deep button:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* Context menu */\n .ogrid-context-menu {\n position: fixed;\n z-index: 1000;\n min-width: 160px;\n padding: 4px 0;\n background: var(--ogrid-bg, #fff);\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n .ogrid-context-menu-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: none;\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .ogrid-context-menu-item:hover:not(:disabled) {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n }\n .ogrid-context-menu-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .ogrid-context-menu-item-label {\n flex: 1;\n }\n .ogrid-context-menu-item-shortcut {\n color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));\n font-size: 0.85em;\n }\n .ogrid-context-menu-divider {\n height: 1px;\n margin: 4px 0;\n background: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n ::ng-deep .p-checkbox:focus-visible {\n outline: 2px solid var(--primary-color, #6366f1);\n outline-offset: 2px;\n }\n\n /* PrimeNG Menu popup overrides.\n Double-class selectors (0,2,0) beat PrimeNG's single-class (0,1,0) defaults. */\n .p-menu.p-menu {\n background: var(--ogrid-bg, #ffffff);\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));\n border-radius: 4px;\n padding: 4px 0;\n }\n .p-menu-overlay.p-menu-overlay {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--ogrid-border, rgba(0, 0, 0, 0.12));\n }\n .p-menu-item-content.p-menu-item-content {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-item-link.p-menu-item-link {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n padding: 6px 12px;\n }\n .p-menu-item-label.p-menu-item-label {\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n font-size: 0.875rem;\n }\n .p-menu-item:not(.p-disabled) .p-menu-item-content.p-menu-item-content:hover {\n background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));\n }\n .p-menu-separator.p-menu-separator {\n border-color: var(--ogrid-border, rgba(0, 0, 0, 0.12));\n margin: 4px 0;\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, #f5f5f5));\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 /* 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 "] }]
1105
1141
  }], () => [], { wrapperRef: [{
1106
1142
  type: ViewChild,
1107
1143
  args: ['wrapper']
@@ -1216,6 +1252,26 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
1216
1252
  args: [{ alias: 'showNameBox' }]
1217
1253
  }], onActiveCellChange: [{
1218
1254
  type: Input
1255
+ }], formulas: [{
1256
+ type: Input
1257
+ }], getFormulaValue: [{
1258
+ type: Input
1259
+ }], hasFormula: [{
1260
+ type: Input
1261
+ }], getFormula: [{
1262
+ type: Input
1263
+ }], setFormula: [{
1264
+ type: Input
1265
+ }], onFormulaCellChanged: [{
1266
+ type: Input
1267
+ }], getPrecedents: [{
1268
+ type: Input
1269
+ }], getDependents: [{
1270
+ type: Input
1271
+ }], getAuditTrail: [{
1272
+ type: Input
1273
+ }], formulaVersion: [{
1274
+ type: Input
1219
1275
  }], formulaReferencesInput: [{
1220
1276
  type: Input,
1221
1277
  args: [{ alias: 'formulaReferences' }]
@@ -1226,4 +1282,4 @@ export class DataGridTableComponent extends BaseDataGridTableComponent {
1226
1282
  type: Input,
1227
1283
  args: [{ alias: 'pageSize' }]
1228
1284
  }] }); })();
1229
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataGridTableComponent, { className: "DataGridTableComponent", filePath: "datagrid-table/datagrid-table.component.ts", lineNumber: 788 }); })();
1285
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataGridTableComponent, { className: "DataGridTableComponent", filePath: "datagrid-table/datagrid-table.component.ts", lineNumber: 802 }); })();
@@ -51,7 +51,7 @@ export class OGridComponent {
51
51
  this.service.setPageSize(size);
52
52
  }
53
53
  static { this.ɵfac = function OGridComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OGridComponent)(); }; }
54
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OGridComponent, selectors: [["ogrid-primeng"]], inputs: { props: "props" }, features: [i0.ɵɵProvidersFeature([OGridService])], ngContentSelectors: _c1, decls: 7, vars: 60, consts: [[3, "className", "hasToolbar", "hasToolbarBelow", "hasPagination", "sideBar", "fullScreen", "showNameBox", "activeCellRef", "formulaBar", "sheetDefs", "activeSheet", "onSheetChange", "onSheetAdd"], ["toolbarEnd", ""], [3, "columns", "visibleColumns"], [3, "items", "columns", "getRowId", "sortBy", "sortDirection", "onColumnSort", "visibleColumns", "columnOrder", "onColumnOrderChange", "onColumnResized", "onColumnPinned", "editable", "cellSelection", "onCellValueChanged", "onUndo", "onRedo", "canUndo", "canRedo", "rowSelection", "selectedRows", "onSelectionChange", "statusBar", "isLoading", "filters", "onFilterChange", "filterOptions", "loadingFilterOptions", "peopleSearch", "getUserByEmail", "layoutMode", "suppressHorizontalScroll", "stickyHeaderInput", "columnReorder", "aria-label", "aria-labelledby", "emptyState", "showRowNumbers", "showColumnLetters", "showNameBox", "onActiveCellChange", "formulaReferences"], ["pagination", ""], [3, "pageChange", "pageSizeChange", "currentPage", "pageSize", "totalCount", "pageSizeOptions", "entityLabelPlural"], [3, "visibilityChange", "columns", "visibleColumns"]], template: function OGridComponent_Template(rf, ctx) { if (rf & 1) {
54
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OGridComponent, selectors: [["ogrid-primeng"]], inputs: { props: "props" }, features: [i0.ɵɵProvidersFeature([OGridService])], ngContentSelectors: _c1, decls: 7, vars: 71, consts: [[3, "className", "hasToolbar", "hasToolbarBelow", "hasPagination", "sideBar", "fullScreen", "showNameBox", "activeCellRef", "formulaBar", "sheetDefs", "activeSheet", "onSheetChange", "onSheetAdd"], ["toolbarEnd", ""], [3, "columns", "visibleColumns"], [3, "items", "columns", "getRowId", "sortBy", "sortDirection", "onColumnSort", "visibleColumns", "columnOrder", "onColumnOrderChange", "onColumnResized", "onColumnPinned", "pinnedColumns", "editable", "cellSelection", "onCellValueChanged", "onUndo", "onRedo", "canUndo", "canRedo", "rowSelection", "selectedRows", "onSelectionChange", "statusBar", "isLoading", "filters", "onFilterChange", "filterOptions", "loadingFilterOptions", "peopleSearch", "getUserByEmail", "layoutMode", "suppressHorizontalScroll", "stickyHeaderInput", "columnReorder", "aria-label", "aria-labelledby", "emptyState", "showRowNumbers", "showColumnLetters", "showNameBox", "onActiveCellChange", "formulas", "getFormulaValue", "hasFormula", "getFormula", "setFormula", "onFormulaCellChanged", "getPrecedents", "getDependents", "getAuditTrail", "formulaVersion", "formulaReferences"], ["pagination", ""], [3, "pageChange", "pageSizeChange", "currentPage", "pageSize", "totalCount", "pageSizeOptions", "entityLabelPlural"], [3, "visibilityChange", "columns", "visibleColumns"]], template: function OGridComponent_Template(rf, ctx) { if (rf & 1) {
55
55
  i0.ɵɵprojectionDef(_c0);
56
56
  i0.ɵɵelementStart(0, "ogrid-layout", 0);
57
57
  i0.ɵɵprojection(1, 0, ["toolbar", ""]);
@@ -63,15 +63,15 @@ export class OGridComponent {
63
63
  i0.ɵɵlistener("pageChange", function OGridComponent_Template_ogrid_primeng_pagination_controls_pageChange_6_listener($event) { return ctx.service.setPage($event); })("pageSizeChange", function OGridComponent_Template_ogrid_primeng_pagination_controls_pageSizeChange_6_listener($event) { return ctx.onPageSizeChange($event); });
64
64
  i0.ɵɵelementEnd()()();
65
65
  } if (rf & 2) {
66
- let tmp_41_0;
67
66
  let tmp_42_0;
67
+ let tmp_43_0;
68
68
  i0.ɵɵproperty("className", ctx.service.className())("hasToolbar", ctx.showToolbar)("hasToolbarBelow", false)("hasPagination", true)("sideBar", ctx.service.sideBarProps())("fullScreen", ctx.service.fullScreen())("showNameBox", !!(ctx.service.cellReferences() && !ctx.service.formulasEnabled()))("activeCellRef", ctx.service.activeCellRef())("formulaBar", ctx.service.formulasEnabled() ? ctx.service.formulaBarState() : null)("sheetDefs", ctx.service.sheetDefs())("activeSheet", ctx.service.activeSheet())("onSheetChange", ctx.service.onSheetChange())("onSheetAdd", ctx.service.onSheetAdd());
69
69
  i0.ɵɵadvance(3);
70
70
  i0.ɵɵconditional(ctx.service.columnChooserPlacement() === "toolbar" ? 3 : -1);
71
71
  i0.ɵɵadvance();
72
- i0.ɵɵproperty("items", ctx.service.displayItems())("columns", ctx.service.columnsProp())("getRowId", ctx.service.getRowId())("sortBy", ctx.service.sort().field)("sortDirection", ctx.service.sort().direction)("onColumnSort", ctx.onColumnSortFn)("visibleColumns", ctx.service.visibleColumns())("columnOrder", ctx.service.columnOrder())("onColumnOrderChange", ctx.service.onColumnOrderChange())("onColumnResized", ctx.onColumnResizedFn)("onColumnPinned", ctx.onColumnPinnedFn)("editable", ctx.service.editable())("cellSelection", ctx.service.cellSelection())("onCellValueChanged", ctx.service.onCellValueChanged())("onUndo", ctx.service.onUndo())("onRedo", ctx.service.onRedo())("canUndo", ctx.service.canUndo())("canRedo", ctx.service.canRedo())("rowSelection", ctx.service.rowSelection())("selectedRows", ctx.service.effectiveSelectedRows())("onSelectionChange", ctx.onSelectionChangeFn)("statusBar", ctx.service.statusBarConfig())("isLoading", ctx.service.isLoadingResolved())("filters", ctx.service.filters())("onFilterChange", ctx.onFilterChangeFn)("filterOptions", ctx.service.clientFilterOptions())("loadingFilterOptions", ctx.service.loadingFilterOptions())("peopleSearch", (tmp_41_0 = ctx.service.dataSource()) == null ? null : tmp_41_0.searchPeople == null ? null : tmp_41_0.searchPeople.bind(ctx.service.dataSource()))("getUserByEmail", (tmp_42_0 = ctx.service.dataSource()) == null ? null : tmp_42_0.getUserByEmail == null ? null : tmp_42_0.getUserByEmail.bind(ctx.service.dataSource()))("layoutMode", ctx.service.layoutMode())("suppressHorizontalScroll", ctx.service.suppressHorizontalScroll())("stickyHeaderInput", ctx.service.stickyHeader())("columnReorder", ctx.service.columnReorder());
72
+ i0.ɵɵproperty("items", ctx.service.displayItems())("columns", ctx.service.columnsProp())("getRowId", ctx.service.getRowId())("sortBy", ctx.service.sort().field)("sortDirection", ctx.service.sort().direction)("onColumnSort", ctx.onColumnSortFn)("visibleColumns", ctx.service.visibleColumns())("columnOrder", ctx.service.columnOrder())("onColumnOrderChange", ctx.service.onColumnOrderChange())("onColumnResized", ctx.onColumnResizedFn)("onColumnPinned", ctx.onColumnPinnedFn)("pinnedColumns", ctx.service.dataGridProps().pinnedColumns)("editable", ctx.service.editable())("cellSelection", ctx.service.cellSelection())("onCellValueChanged", ctx.service.onCellValueChanged())("onUndo", ctx.service.onUndo())("onRedo", ctx.service.onRedo())("canUndo", ctx.service.canUndo())("canRedo", ctx.service.canRedo())("rowSelection", ctx.service.rowSelection())("selectedRows", ctx.service.effectiveSelectedRows())("onSelectionChange", ctx.onSelectionChangeFn)("statusBar", ctx.service.statusBarConfig())("isLoading", ctx.service.isLoadingResolved())("filters", ctx.service.filters())("onFilterChange", ctx.onFilterChangeFn)("filterOptions", ctx.service.clientFilterOptions())("loadingFilterOptions", ctx.service.loadingFilterOptions())("peopleSearch", (tmp_42_0 = ctx.service.dataSource()) == null ? null : tmp_42_0.searchPeople == null ? null : tmp_42_0.searchPeople.bind(ctx.service.dataSource()))("getUserByEmail", (tmp_43_0 = ctx.service.dataSource()) == null ? null : tmp_43_0.getUserByEmail == null ? null : tmp_43_0.getUserByEmail.bind(ctx.service.dataSource()))("layoutMode", ctx.service.layoutMode())("suppressHorizontalScroll", ctx.service.suppressHorizontalScroll())("stickyHeaderInput", ctx.service.stickyHeader())("columnReorder", ctx.service.columnReorder());
73
73
  i0.ɵɵariaProperty("aria-label", ctx.service.ariaLabel())("aria-labelledby", ctx.service.ariaLabelledBy());
74
- i0.ɵɵproperty("emptyState", ctx.emptyStateObj)("showRowNumbers", ctx.service.dataGridProps().showRowNumbers ?? false)("showColumnLetters", ctx.service.dataGridProps().showColumnLetters ?? false)("showNameBox", ctx.service.dataGridProps().showNameBox ?? false)("onActiveCellChange", ctx.service.dataGridProps().onActiveCellChange)("formulaReferences", ctx.service.dataGridProps().formulaReferences);
74
+ i0.ɵɵproperty("emptyState", ctx.emptyStateObj)("showRowNumbers", ctx.service.dataGridProps().showRowNumbers ?? false)("showColumnLetters", ctx.service.dataGridProps().showColumnLetters ?? false)("showNameBox", ctx.service.dataGridProps().showNameBox ?? false)("onActiveCellChange", ctx.service.dataGridProps().onActiveCellChange)("formulas", ctx.service.dataGridProps().formulas)("getFormulaValue", ctx.service.dataGridProps().getFormulaValue)("hasFormula", ctx.service.dataGridProps().hasFormula)("getFormula", ctx.service.dataGridProps().getFormula)("setFormula", ctx.service.dataGridProps().setFormula)("onFormulaCellChanged", ctx.service.dataGridProps().onFormulaCellChanged)("getPrecedents", ctx.service.dataGridProps().getPrecedents)("getDependents", ctx.service.dataGridProps().getDependents)("getAuditTrail", ctx.service.dataGridProps().getAuditTrail)("formulaVersion", ctx.service.dataGridProps().formulaVersion)("formulaReferences", ctx.service.dataGridProps().formulaReferences);
75
75
  i0.ɵɵadvance(2);
76
76
  i0.ɵɵproperty("currentPage", ctx.service.pagination().page)("pageSize", ctx.service.pagination().pageSize)("totalCount", ctx.service.pagination().displayTotalCount)("pageSizeOptions", ctx.service.pageSizeOptions())("entityLabelPlural", ctx.service.entityLabelPlural());
77
77
  } }, dependencies: [OGridLayoutComponent,
@@ -126,6 +126,7 @@ export class OGridComponent {
126
126
  [onColumnOrderChange]="service.onColumnOrderChange()"
127
127
  [onColumnResized]="onColumnResizedFn"
128
128
  [onColumnPinned]="onColumnPinnedFn"
129
+ [pinnedColumns]="service.dataGridProps().pinnedColumns"
129
130
  [editable]="service.editable()"
130
131
  [cellSelection]="service.cellSelection()"
131
132
  [onCellValueChanged]="service.onCellValueChanged()"
@@ -155,6 +156,16 @@ export class OGridComponent {
155
156
  [showColumnLetters]="service.dataGridProps().showColumnLetters ?? false"
156
157
  [showNameBox]="service.dataGridProps().showNameBox ?? false"
157
158
  [onActiveCellChange]="service.dataGridProps().onActiveCellChange"
159
+ [formulas]="service.dataGridProps().formulas"
160
+ [getFormulaValue]="service.dataGridProps().getFormulaValue"
161
+ [hasFormula]="service.dataGridProps().hasFormula"
162
+ [getFormula]="service.dataGridProps().getFormula"
163
+ [setFormula]="service.dataGridProps().setFormula"
164
+ [onFormulaCellChanged]="service.dataGridProps().onFormulaCellChanged"
165
+ [getPrecedents]="service.dataGridProps().getPrecedents"
166
+ [getDependents]="service.dataGridProps().getDependents"
167
+ [getAuditTrail]="service.dataGridProps().getAuditTrail"
168
+ [formulaVersion]="service.dataGridProps().formulaVersion"
158
169
  [formulaReferences]="service.dataGridProps().formulaReferences"
159
170
  ></ogrid-primeng-datagrid-table>
160
171
 
@@ -175,4 +186,4 @@ export class OGridComponent {
175
186
  type: Input,
176
187
  args: [{ required: true }]
177
188
  }] }); })();
178
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OGridComponent, { className: "OGridComponent", filePath: "ogrid/ogrid.component.ts", lineNumber: 109 }); })();
189
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OGridComponent, { className: "OGridComponent", filePath: "ogrid/ogrid.component.ts", lineNumber: 120 }); })();
@@ -63,6 +63,16 @@ export declare class DataGridTableComponent<T = unknown> extends BaseDataGridTab
63
63
  showColumnLettersInput: boolean;
64
64
  showNameBoxInput: boolean;
65
65
  onActiveCellChange: ((ref: string | null) => void) | undefined;
66
+ formulas: boolean | undefined;
67
+ getFormulaValue: ((col: number, row: number) => unknown) | undefined;
68
+ hasFormula: ((col: number, row: number) => boolean) | undefined;
69
+ getFormula: ((col: number, row: number) => string | undefined) | undefined;
70
+ setFormula: ((col: number, row: number, formula: string | null) => void) | undefined;
71
+ onFormulaCellChanged: ((col: number, row: number) => void) | undefined;
72
+ getPrecedents: ((col: number, row: number) => import('@alaarab/ogrid-core').IAuditEntry[]) | undefined;
73
+ getDependents: ((col: number, row: number) => import('@alaarab/ogrid-core').IAuditEntry[]) | undefined;
74
+ getAuditTrail: ((col: number, row: number) => import('@alaarab/ogrid-core').IAuditTrail | null) | undefined;
75
+ formulaVersion: number | undefined;
66
76
  formulaReferencesInput: import('@alaarab/ogrid-core').FormulaReference[] | undefined;
67
77
  currentPageInput: number;
68
78
  pageSizeInput: number;
@@ -109,5 +119,5 @@ export declare class DataGridTableComponent<T = unknown> extends BaseDataGridTab
109
119
  private buildProps;
110
120
  getColumnLetter(colIdx: number): string;
111
121
  static ɵfac: i0.ɵɵFactoryDeclaration<DataGridTableComponent<any>, never>;
112
- static ɵcmp: i0.ɵɵComponentDeclaration<DataGridTableComponent<any>, "ogrid-primeng-datagrid-table", never, { "itemsInput": { "alias": "items"; "required": true; }; "columns": { "alias": "columns"; "required": true; }; "getRowIdInput": { "alias": "getRowId"; "required": true; }; "sortBy": { "alias": "sortBy"; "required": false; }; "sortDirection": { "alias": "sortDirection"; "required": false; }; "onColumnSort": { "alias": "onColumnSort"; "required": true; }; "visibleColumns": { "alias": "visibleColumns"; "required": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; }; "onColumnOrderChange": { "alias": "onColumnOrderChange"; "required": false; }; "onColumnResized": { "alias": "onColumnResized"; "required": false; }; "onColumnPinned": { "alias": "onColumnPinned"; "required": false; }; "pinnedColumnsInput": { "alias": "pinnedColumns"; "required": false; }; "initialColumnWidths": { "alias": "initialColumnWidths"; "required": false; }; "layoutMode": { "alias": "layoutMode"; "required": false; }; "suppressHorizontalScroll": { "alias": "suppressHorizontalScroll"; "required": false; }; "stickyHeaderInput": { "alias": "stickyHeaderInput"; "required": false; }; "columnReorder": { "alias": "columnReorder"; "required": false; }; "isLoadingInput": { "alias": "isLoading"; "required": false; }; "loadingMessageInput": { "alias": "loadingMessage"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "cellSelection": { "alias": "cellSelection"; "required": false; }; "onCellValueChanged": { "alias": "onCellValueChanged"; "required": false; }; "onUndoInput": { "alias": "onUndo"; "required": false; }; "onRedoInput": { "alias": "onRedo"; "required": false; }; "canUndoInput": { "alias": "canUndo"; "required": false; }; "canRedoInput": { "alias": "canRedo"; "required": false; }; "rowSelectionMode": { "alias": "rowSelection"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "statusBar": { "alias": "statusBar"; "required": false; }; "filters": { "alias": "filters"; "required": true; }; "onFilterChange": { "alias": "onFilterChange"; "required": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; }; "loadingFilterOptions": { "alias": "loadingFilterOptions"; "required": false; }; "peopleSearch": { "alias": "peopleSearch"; "required": false; }; "getUserByEmail": { "alias": "getUserByEmail"; "required": false; }; "emptyStateInput": { "alias": "emptyState"; "required": false; }; "onCellError": { "alias": "onCellError"; "required": false; }; "ariaLabelInput": { "alias": "aria-label"; "required": false; }; "ariaLabelledByInput": { "alias": "aria-labelledby"; "required": false; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; }; "showColumnLettersInput": { "alias": "showColumnLetters"; "required": false; }; "showNameBoxInput": { "alias": "showNameBox"; "required": false; }; "onActiveCellChange": { "alias": "onActiveCellChange"; "required": false; }; "formulaReferencesInput": { "alias": "formulaReferences"; "required": false; }; "currentPageInput": { "alias": "currentPage"; "required": false; }; "pageSizeInput": { "alias": "pageSize"; "required": false; }; }, {}, never, never, true, never>;
122
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataGridTableComponent<any>, "ogrid-primeng-datagrid-table", never, { "itemsInput": { "alias": "items"; "required": true; }; "columns": { "alias": "columns"; "required": true; }; "getRowIdInput": { "alias": "getRowId"; "required": true; }; "sortBy": { "alias": "sortBy"; "required": false; }; "sortDirection": { "alias": "sortDirection"; "required": false; }; "onColumnSort": { "alias": "onColumnSort"; "required": true; }; "visibleColumns": { "alias": "visibleColumns"; "required": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; }; "onColumnOrderChange": { "alias": "onColumnOrderChange"; "required": false; }; "onColumnResized": { "alias": "onColumnResized"; "required": false; }; "onColumnPinned": { "alias": "onColumnPinned"; "required": false; }; "pinnedColumnsInput": { "alias": "pinnedColumns"; "required": false; }; "initialColumnWidths": { "alias": "initialColumnWidths"; "required": false; }; "layoutMode": { "alias": "layoutMode"; "required": false; }; "suppressHorizontalScroll": { "alias": "suppressHorizontalScroll"; "required": false; }; "stickyHeaderInput": { "alias": "stickyHeaderInput"; "required": false; }; "columnReorder": { "alias": "columnReorder"; "required": false; }; "isLoadingInput": { "alias": "isLoading"; "required": false; }; "loadingMessageInput": { "alias": "loadingMessage"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "cellSelection": { "alias": "cellSelection"; "required": false; }; "onCellValueChanged": { "alias": "onCellValueChanged"; "required": false; }; "onUndoInput": { "alias": "onUndo"; "required": false; }; "onRedoInput": { "alias": "onRedo"; "required": false; }; "canUndoInput": { "alias": "canUndo"; "required": false; }; "canRedoInput": { "alias": "canRedo"; "required": false; }; "rowSelectionMode": { "alias": "rowSelection"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "statusBar": { "alias": "statusBar"; "required": false; }; "filters": { "alias": "filters"; "required": true; }; "onFilterChange": { "alias": "onFilterChange"; "required": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; }; "loadingFilterOptions": { "alias": "loadingFilterOptions"; "required": false; }; "peopleSearch": { "alias": "peopleSearch"; "required": false; }; "getUserByEmail": { "alias": "getUserByEmail"; "required": false; }; "emptyStateInput": { "alias": "emptyState"; "required": false; }; "onCellError": { "alias": "onCellError"; "required": false; }; "ariaLabelInput": { "alias": "aria-label"; "required": false; }; "ariaLabelledByInput": { "alias": "aria-labelledby"; "required": false; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; }; "showColumnLettersInput": { "alias": "showColumnLetters"; "required": false; }; "showNameBoxInput": { "alias": "showNameBox"; "required": false; }; "onActiveCellChange": { "alias": "onActiveCellChange"; "required": false; }; "formulas": { "alias": "formulas"; "required": false; }; "getFormulaValue": { "alias": "getFormulaValue"; "required": false; }; "hasFormula": { "alias": "hasFormula"; "required": false; }; "getFormula": { "alias": "getFormula"; "required": false; }; "setFormula": { "alias": "setFormula"; "required": false; }; "onFormulaCellChanged": { "alias": "onFormulaCellChanged"; "required": false; }; "getPrecedents": { "alias": "getPrecedents"; "required": false; }; "getDependents": { "alias": "getDependents"; "required": false; }; "getAuditTrail": { "alias": "getAuditTrail"; "required": false; }; "formulaVersion": { "alias": "formulaVersion"; "required": false; }; "formulaReferencesInput": { "alias": "formulaReferences"; "required": false; }; "currentPageInput": { "alias": "currentPage"; "required": false; }; "pageSizeInput": { "alias": "pageSize"; "required": false; }; }, {}, never, never, true, never>;
113
123
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alaarab/ogrid-angular-primeng",
3
- "version": "2.6.1",
3
+ "version": "2.7.0",
4
4
  "description": "OGrid PrimeNG – PrimeNG Table-based data grid with sorting, filtering, pagination, column chooser, and CSV export.",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -37,7 +37,7 @@
37
37
  "node": ">=18"
38
38
  },
39
39
  "dependencies": {
40
- "@alaarab/ogrid-angular": "2.6.1"
40
+ "@alaarab/ogrid-angular": "2.7.0"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@angular/core": "^21.0.0",