@agility-workbench/angular-grid 1.10.1 → 1.12.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.
package/README.md CHANGED
@@ -77,6 +77,21 @@ are not overwritten), `[pivotColumnMoveMode]` is live, `[pivotResultColumnDef]`
77
77
  `[sheets]` renders the footer tab strip with the same app-owned persistence contract as
78
78
  `[savedViews]`. See the core README for what pivot mode and sheets do.
79
79
 
80
+ Most inputs are live. The ones the grid reads only at creation (`rowHeight`, `getRowId`,
81
+ `rowIdKey`, `rowModelType`, `defaultColDef`, `groupColumnDef`, `pivotResultColumnDef`,
82
+ `initialSort`, … — the core's `CREATION_ONLY_OPTION_KEYS`, minus the bridged inputs) ignore later
83
+ changes; in development mode (`isDevMode()`) the grid logs one `console.warn` naming the input when
84
+ that happens. Re-create the `<awb-grid>` (for example under an `@if`, or a keyed `@for`) to apply
85
+ such a change. The Angular page of the documentation site has the full live-vs-creation table.
86
+
87
+ Outputs: `(gridReady)`, `(cellClicked)`, `(rowClicked)`, `(cellDoubleClicked)`,
88
+ `(rowDoubleClicked)`, `(cellValueChanged)`, `(selectionChanged)`, `(sortChanged)`,
89
+ `(filterChanged)`, `(quickFilterFindChanged)`, `(historyChanged)`, `(columnsChanged)`,
90
+ `(paginationChanged)` and `(gridError)` (the core `error` event — not `(error)`, which Angular
91
+ would also bind as a native DOM listener on the host). `(columnsChanged)` and `(sortChanged)`
92
+ carry `source: "user" | "api"`; persist column state on `"user"` so restoring it never echoes
93
+ back. Anything else: `api.on(eventName, handler)`.
94
+
80
95
  ## Styling
81
96
 
82
97
  Nothing to do — the grid delivers its own stylesheet when it attaches, once per document, and
@@ -91,8 +106,11 @@ copies do not fight in the cascade.
91
106
  ## Angular components in the grid
92
107
 
93
108
  Column definitions accept Angular component classes wherever the core accepts a class component —
94
- `cellRenderer`, `cellEditor`, `tooltipComponent`, `headerTooltip`, and `actionFrameComponent`.
95
- A component receives its params either through an input named `params` or by implementing
109
+ `cellRenderer`, `cellEditor`, `tooltipComponent`, `headerTooltip`, `actionFrameComponent`, the
110
+ set-filter components in `filterParams`, and the header components `headerComponent` (header
111
+ content) and `headerCellComponent` (the whole header cell; contract `IHeaderNgComp`). The same slots
112
+ are adapted in `[defaultColDef]`, `[groupColumnDef]`, and `[pivotResultColumnDef]`. A component
113
+ receives its params either through an input named `params` or by implementing
96
114
  `awbInit(params)` (plus optional `awbRefresh(params)`):
97
115
 
98
116
  ```ts
@@ -1,7 +1,7 @@
1
- import { isClassRenderer, isClassTooltipComponent, isClassActionFrameComponent, isClassSetFilterComponent, createGrid } from '@agility-workbench/grid';
1
+ import { isClassRenderer, isClassTooltipComponent, isClassActionFrameComponent, isClassHeaderComponent, isClassSetFilterComponent, CREATION_ONLY_OPTION_KEYS, createGrid } from '@agility-workbench/grid';
2
2
  export * from '@agility-workbench/grid';
3
3
  import * as i0 from '@angular/core';
4
- import { reflectComponentType, createComponent, input, output, inject, ElementRef, NgZone, Injector, ApplicationRef, EnvironmentInjector, afterNextRender, untracked, effect, ChangeDetectionStrategy, Component } from '@angular/core';
4
+ import { reflectComponentType, createComponent, input, output, inject, ElementRef, NgZone, Injector, ApplicationRef, EnvironmentInjector, afterNextRender, isDevMode, untracked, isSignal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
5
5
 
6
6
  /** True when `value` is a compiled Angular component class (vs a core class or plain function). */
7
7
  function isNgComponent(value) {
@@ -40,6 +40,7 @@ class NgAdapters {
40
40
  this.actionFrameCache = new WeakMap();
41
41
  this.editorCache = new WeakMap();
42
42
  this.setFilterComponentCache = new WeakMap();
43
+ this.headerComponentCache = new WeakMap();
43
44
  }
44
45
  /**
45
46
  * Create `component` with `hostElement` as its host, deliver params, attach it to the app for
@@ -78,7 +79,6 @@ class NgAdapters {
78
79
  };
79
80
  });
80
81
  }
81
- // --- cell renderers -------------------------------------------------------------------------
82
82
  adaptCellRenderer(renderer) {
83
83
  if (!renderer)
84
84
  return undefined;
@@ -225,6 +225,57 @@ class NgAdapters {
225
225
  }
226
226
  };
227
227
  }
228
+ // --- header components -----------------------------------------------------------------------
229
+ /**
230
+ * Adapt a `headerComponent` / `headerCellComponent`. Core class components and the core function
231
+ * form pass through; an Angular component is mounted into the header slot.
232
+ */
233
+ adaptHeaderComponent(comp) {
234
+ if (!comp)
235
+ return undefined;
236
+ if (typeof comp === "function" && isClassHeaderComponent(comp)) {
237
+ return comp;
238
+ }
239
+ if (!isNgComponent(comp))
240
+ return comp;
241
+ const cached = this.headerComponentCache.get(comp);
242
+ if (cached)
243
+ return cached;
244
+ const adapted = this.createHeaderComponentClass(comp);
245
+ this.headerComponentCache.set(comp, adapted);
246
+ return adapted;
247
+ }
248
+ createHeaderComponentClass(component) {
249
+ const adapters = this;
250
+ return class NgHeaderComponentAdapter {
251
+ constructor() {
252
+ this.el = document.createElement("div");
253
+ this.mounted = null;
254
+ }
255
+ init(params) {
256
+ // Same box the core gives its function form, so an Angular header lays out like a native one.
257
+ this.el.className = "pte-hcell-custom-root";
258
+ this.el.style.display = "flex";
259
+ this.el.style.alignItems = "center";
260
+ this.el.style.width = "100%";
261
+ this.el.style.height = "100%";
262
+ this.el.style.overflow = "hidden";
263
+ // One component instance per header cell; sort/filter refreshes re-deliver params (an
264
+ // awbRefresh returning false asks the grid to recreate it). Header rebuilds destroy it.
265
+ this.mounted = adapters.mount(component, params, this.el, "headerComponent");
266
+ }
267
+ getGui() {
268
+ return this.el;
269
+ }
270
+ refresh(params) {
271
+ return this.mounted?.refresh(params) ?? false;
272
+ }
273
+ destroy() {
274
+ this.mounted?.destroy();
275
+ this.mounted = null;
276
+ }
277
+ };
278
+ }
228
279
  // --- cell editors ----------------------------------------------------------------------------
229
280
  adaptCellEditor(editor) {
230
281
  if (editor == null)
@@ -345,6 +396,8 @@ class NgAdapters {
345
396
  headerTooltip: this.adaptHeaderTooltip(colDef.headerTooltip),
346
397
  actionFrameComponent: this.adaptActionFrame(colDef.actionFrameComponent),
347
398
  filterParams: this.adaptFilterParams(colDef.filterParams),
399
+ headerComponent: this.adaptHeaderComponent(colDef.headerComponent),
400
+ headerCellComponent: this.adaptHeaderComponent(colDef.headerCellComponent),
348
401
  children: colDef.children ? (this.adaptColumnDefs(colDef.children) ?? undefined) : undefined,
349
402
  };
350
403
  }
@@ -361,20 +414,37 @@ class NgAdapters {
361
414
  adaptDefaultColDef(defaultColDef) {
362
415
  if (defaultColDef == null)
363
416
  return undefined;
364
- const next = { ...defaultColDef };
365
- if ("cellRenderer" in defaultColDef)
366
- next.cellRenderer = this.adaptCellRenderer(defaultColDef.cellRenderer);
367
- if ("cellEditor" in defaultColDef)
368
- next.cellEditor = this.adaptCellEditor(defaultColDef.cellEditor);
369
- if ("tooltipComponent" in defaultColDef)
370
- next.tooltipComponent = this.adaptTooltip(defaultColDef.tooltipComponent);
371
- if ("headerTooltip" in defaultColDef)
372
- next.headerTooltip = this.adaptHeaderTooltip(defaultColDef.headerTooltip);
373
- if ("actionFrameComponent" in defaultColDef) {
374
- next.actionFrameComponent = this.adaptActionFrame(defaultColDef.actionFrameComponent);
417
+ return this.adaptPartial(defaultColDef);
418
+ }
419
+ /**
420
+ * Adapt `groupColumnDef` / `pivotResultColumnDef`, the partial defs the grid layers over its
421
+ * synthesized columns. Present-fields-only, like {@link adaptDefaultColDef}: the core layers these
422
+ * with object spread, where an explicit `undefined` would clobber the layer beneath.
423
+ */
424
+ adaptPartialColDef(def) {
425
+ if (def == null)
426
+ return undefined;
427
+ return this.adaptPartial(def);
428
+ }
429
+ adaptPartial(def) {
430
+ const next = { ...def };
431
+ if ("cellRenderer" in def)
432
+ next.cellRenderer = this.adaptCellRenderer(def.cellRenderer);
433
+ if ("cellEditor" in def)
434
+ next.cellEditor = this.adaptCellEditor(def.cellEditor);
435
+ if ("tooltipComponent" in def)
436
+ next.tooltipComponent = this.adaptTooltip(def.tooltipComponent);
437
+ if ("headerTooltip" in def)
438
+ next.headerTooltip = this.adaptHeaderTooltip(def.headerTooltip);
439
+ if ("actionFrameComponent" in def)
440
+ next.actionFrameComponent = this.adaptActionFrame(def.actionFrameComponent);
441
+ if ("filterParams" in def)
442
+ next.filterParams = this.adaptFilterParams(def.filterParams);
443
+ if ("headerComponent" in def)
444
+ next.headerComponent = this.adaptHeaderComponent(def.headerComponent);
445
+ if ("headerCellComponent" in def) {
446
+ next.headerCellComponent = this.adaptHeaderComponent(def.headerCellComponent);
375
447
  }
376
- if ("filterParams" in defaultColDef)
377
- next.filterParams = this.adaptFilterParams(defaultColDef.filterParams);
378
448
  return next;
379
449
  }
380
450
  }
@@ -404,6 +474,56 @@ function getActionFrameProps(params) {
404
474
  return { ...params, ...extraParams };
405
475
  }
406
476
 
477
+ /**
478
+ * Core creation-only options the Angular binding keeps live anyway: the value-returning hooks and
479
+ * `multiColumnMenu` are read through their input signals on every call. (The event callbacks are
480
+ * outputs, not inputs, so they never reach this list.) Everything else in core's
481
+ * {@link CREATION_ONLY_OPTION_KEYS} that `<awb-grid>` declares as an input is fixed once the grid
482
+ * exists.
483
+ */
484
+ const BRIDGED_INPUTS = new Set([
485
+ "onBeforeCellCommit",
486
+ "fillOperation",
487
+ "multiColumnMenu",
488
+ ]);
489
+ /** Core creation-only option names minus the inputs the binding bridges (derived from core). */
490
+ const CREATION_ONLY_INPUT_CANDIDATES = CREATION_ONLY_OPTION_KEYS.filter((key) => !BRIDGED_INPUTS.has(key));
491
+ /** The `treeData` members the binding reconciles live (via setTreeDataKeyboardNavigationOptions). */
492
+ const LIVE_TREE_DATA_KEYS = ["keyboardNavigationMode", "enableKeyboardNavigationModeSwitch"];
493
+ const UNCOMPARABLE = Symbol("uncomparable");
494
+ /**
495
+ * A structural fingerprint of an input value, so a template literal object or a function re-created
496
+ * with the same contents does not count as a change. Functions (and component classes) compare by
497
+ * source text; `treeData` ignores the members that are live. Values that cannot be serialized
498
+ * (cycles) compare by identity.
499
+ */
500
+ function inputFingerprint(key, value) {
501
+ let subject = value;
502
+ if (key === "treeData" && value != null && typeof value === "object") {
503
+ const rest = { ...value };
504
+ for (const live of LIVE_TREE_DATA_KEYS)
505
+ delete rest[live];
506
+ subject = rest;
507
+ }
508
+ try {
509
+ return JSON.stringify(subject, (_k, v) => {
510
+ if (typeof v === "function")
511
+ return `ƒ ${String(v)}`;
512
+ if (v === undefined)
513
+ return "∅undefined";
514
+ return v;
515
+ }) ?? "∅undefined";
516
+ }
517
+ catch {
518
+ return UNCOMPARABLE;
519
+ }
520
+ }
521
+ function creationOnlyWarning(key) {
522
+ return (`[agility-workbench] <awb-grid> input "${key}" changed after the grid was created. It is read ` +
523
+ `only at creation, so the change is ignored. Re-create the grid to apply it (for example, ` +
524
+ `render it under an @if or a keyed @for so Angular destroys and creates a new <awb-grid>).`);
525
+ }
526
+
407
527
  function setIfDefined(options, key, value) {
408
528
  if (value != null)
409
529
  options[key] = value;
@@ -430,7 +550,6 @@ function getGridOptions(grid, adapters) {
430
550
  setIfDefined(options, "maxColumnWidth", grid.maxColumnWidth());
431
551
  setIfDefined(options, "pivotMode", grid.pivotMode());
432
552
  setIfDefined(options, "pivotColumns", grid.pivotColumns());
433
- setIfDefined(options, "pivotResultColumnDef", grid.pivotResultColumnDef());
434
553
  setIfDefined(options, "maxPivotColumns", grid.maxPivotColumns());
435
554
  setIfDefined(options, "pivotColumnMoveMode", grid.pivotColumnMoveMode());
436
555
  setIfDefined(options, "autosizeColumnsOnDataChange", grid.autosizeColumnsOnDataChange());
@@ -463,9 +582,13 @@ function getGridOptions(grid, adapters) {
463
582
  setIfDefined(options, "pageSize", grid.pageSize());
464
583
  setIfDefined(options, "pageSizes", grid.pageSizes());
465
584
  setIfDefined(options, "serverSideBlockSize", grid.serverSideBlockSize());
585
+ setIfDefined(options, "serverSideMaxBlocks", grid.serverSideMaxBlocks());
466
586
  setIfDefined(options, "rowModelType", grid.rowModelType());
467
587
  setIfDefined(options, "getGroupChildCount", grid.getGroupChildCount());
468
588
  setIfDefined(options, "groupChildCount", grid.groupChildCount());
589
+ setIfDefined(options, "groupTotalRow", grid.groupTotalRow());
590
+ setIfDefined(options, "grandTotalRow", grid.grandTotalRow());
591
+ setIfDefined(options, "groupTotalRowLabel", grid.groupTotalRowLabel());
469
592
  setIfDefined(options, "paginationUnknownTotalTooltip", grid.paginationUnknownTotalTooltip());
470
593
  setIfDefined(options, "undoLimit", grid.undoLimit());
471
594
  setIfDefined(options, "editTrigger", grid.editTrigger());
@@ -481,11 +604,12 @@ function getGridOptions(grid, adapters) {
481
604
  setIfDefined(options, "commitOnBlur", grid.commitOnBlur());
482
605
  setIfDefined(options, "reevaluateOnEdit", grid.reevaluateOnEdit());
483
606
  setIfDefined(options, "groupDisplayType", grid.groupDisplayType());
484
- setIfDefined(options, "groupColumnDef", grid.groupColumnDef());
485
607
  setIfDefined(options, "groupDefaultExpanded", grid.groupDefaultExpanded());
486
608
  setIfDefined(options, "groupSortMode", grid.groupSortMode());
487
609
  setIfDefined(options, "treeData", grid.treeData());
488
610
  setIfDefined(options, "groupRowsSelectable", grid.groupRowsSelectable());
611
+ setIfDefined(options, "groupSelectsChildren", grid.groupSelectsChildren());
612
+ setIfDefined(options, "aggFuncs", grid.aggFuncs());
489
613
  setIfDefined(options, "isRowSelectable", grid.isRowSelectable());
490
614
  setIfDefined(options, "isRowPinned", grid.isRowPinned());
491
615
  setIfDefined(options, "groupRowsSticky", grid.groupRowsSticky());
@@ -514,6 +638,14 @@ function getGridOptions(grid, adapters) {
514
638
  const defaultColDef = grid.defaultColDef();
515
639
  if (defaultColDef != null)
516
640
  options.defaultColDef = adapters.adaptDefaultColDef(defaultColDef);
641
+ // The partial defs the grid layers over its synthesized columns carry component fields too.
642
+ const groupColumnDef = grid.groupColumnDef();
643
+ if (groupColumnDef != null)
644
+ options.groupColumnDef = adapters.adaptPartialColDef(groupColumnDef);
645
+ const pivotResultColumnDef = grid.pivotResultColumnDef();
646
+ if (pivotResultColumnDef != null) {
647
+ options.pivotResultColumnDef = adapters.adaptPartialColDef(pivotResultColumnDef);
648
+ }
517
649
  // Forward only the boolean intent to core: false disables the menu (native menu shows);
518
650
  // everything else (true / omitted / a function) leaves core at its "show menu" default and lets
519
651
  // the body-menu adapter apply the function arm (so TemplateRef slots are handled). This avoids
@@ -749,9 +881,14 @@ class AwbGrid {
749
881
  this.groupDefaultExpanded = input(...(ngDevMode ? [undefined, { debugName: "groupDefaultExpanded" }] : []));
750
882
  this.groupSortMode = input(...(ngDevMode ? [undefined, { debugName: "groupSortMode" }] : []));
751
883
  this.groupRowsSelectable = input(...(ngDevMode ? [undefined, { debugName: "groupRowsSelectable" }] : []));
884
+ this.groupSelectsChildren = input(...(ngDevMode ? [undefined, { debugName: "groupSelectsChildren" }] : []));
885
+ this.aggFuncs = input(...(ngDevMode ? [undefined, { debugName: "aggFuncs" }] : []));
752
886
  this.groupRowsSticky = input(...(ngDevMode ? [undefined, { debugName: "groupRowsSticky" }] : []));
753
887
  this.getGroupChildCount = input(...(ngDevMode ? [undefined, { debugName: "getGroupChildCount" }] : []));
754
888
  this.groupChildCount = input(...(ngDevMode ? [undefined, { debugName: "groupChildCount" }] : []));
889
+ this.groupTotalRow = input(...(ngDevMode ? [undefined, { debugName: "groupTotalRow" }] : []));
890
+ this.grandTotalRow = input(...(ngDevMode ? [undefined, { debugName: "grandTotalRow" }] : []));
891
+ this.groupTotalRowLabel = input(...(ngDevMode ? [undefined, { debugName: "groupTotalRowLabel" }] : []));
755
892
  this.treeData = input(...(ngDevMode ? [undefined, { debugName: "treeData" }] : []));
756
893
  // --- pinned rows ---
757
894
  this.pinnedTopRowData = input(...(ngDevMode ? [undefined, { debugName: "pinnedTopRowData" }] : []));
@@ -774,6 +911,7 @@ class AwbGrid {
774
911
  this.serverSideDataSource = input(...(ngDevMode ? [undefined, { debugName: "serverSideDataSource" }] : []));
775
912
  this.serverSideAggregationSource = input(...(ngDevMode ? [undefined, { debugName: "serverSideAggregationSource" }] : []));
776
913
  this.serverSideBlockSize = input(...(ngDevMode ? [undefined, { debugName: "serverSideBlockSize" }] : []));
914
+ this.serverSideMaxBlocks = input(...(ngDevMode ? [undefined, { debugName: "serverSideMaxBlocks" }] : []));
777
915
  // --- widgets / chrome ---
778
916
  this.tooltip = input(...(ngDevMode ? [undefined, { debugName: "tooltip" }] : []));
779
917
  this.columnPanel = input(...(ngDevMode ? [undefined, { debugName: "columnPanel" }] : []));
@@ -824,6 +962,16 @@ class AwbGrid {
824
962
  this.cellValueChanged = output();
825
963
  this.selectionChanged = output();
826
964
  this.sortChanged = output();
965
+ /** Every column layout/model change (core `columnsChanged`); `source` tells UI from API changes. */
966
+ this.columnsChanged = output();
967
+ /** Page, page size or total changes (core `paginationChanged`), with `getPaginationInfo()`. */
968
+ this.paginationChanged = output();
969
+ /**
970
+ * A failed row-model request (core `error`). Not named `error`: Angular binds `(error)` on the
971
+ * host as a native DOM listener as well as to the output, so any `error` event dispatched on
972
+ * `<awb-grid>` would reach the handler too, as a plain `Event`.
973
+ */
974
+ this.gridError = output();
827
975
  this.filterChanged = output();
828
976
  this.quickFilterFindChanged = output();
829
977
  this.historyChanged = output();
@@ -855,6 +1003,9 @@ class AwbGrid {
855
1003
  options.onCellValueChanged = (ev) => this.zone.run(() => this.cellValueChanged.emit(ev));
856
1004
  options.onSelectionChanged = (ev) => this.zone.run(() => this.selectionChanged.emit(ev));
857
1005
  options.onSortChanged = (ev) => this.zone.run(() => this.sortChanged.emit(ev));
1006
+ options.onColumnsChanged = (ev) => this.zone.run(() => this.columnsChanged.emit(ev));
1007
+ options.onPaginationChanged = (ev) => this.zone.run(() => this.paginationChanged.emit(ev));
1008
+ options.onError = (ev) => this.zone.run(() => this.gridError.emit(ev));
858
1009
  options.onFilterChanged = (ev) => this.zone.run(() => this.filterChanged.emit(ev));
859
1010
  options.onQuickFilterFindChanged = (ev) => this.zone.run(() => this.quickFilterFindChanged.emit(ev));
860
1011
  options.onHistoryChanged = (ev) => this.zone.run(() => this.historyChanged.emit(ev));
@@ -894,6 +1045,8 @@ class AwbGrid {
894
1045
  return created;
895
1046
  });
896
1047
  this.instance = instance;
1048
+ if (isDevMode())
1049
+ this.startCreationOnlyWarnings();
897
1050
  this.startSyncEffects(instance);
898
1051
  this.gridReady.emit(instance.api);
899
1052
  }
@@ -942,6 +1095,16 @@ class AwbGrid {
942
1095
  const v = this.groupChildCount();
943
1096
  return () => api.updateGridOptions({ groupChildCount: v });
944
1097
  });
1098
+ // Both footer options are restated together: the core rebuilds the group tree once.
1099
+ this.syncEffect(() => {
1100
+ const groupTotalRow = this.groupTotalRow();
1101
+ const grandTotalRow = this.grandTotalRow();
1102
+ return () => api.updateGridOptions({ groupTotalRow, grandTotalRow });
1103
+ });
1104
+ this.syncEffect(() => {
1105
+ const v = this.groupTotalRowLabel();
1106
+ return () => api.updateGridOptions({ groupTotalRowLabel: v });
1107
+ });
945
1108
  // Header heights resolve against each other (an unset level height follows headerHeight), so
946
1109
  // all three are restated together; an undefined input falls back. Unchanged heights are a no-op.
947
1110
  this.syncEffect(() => {
@@ -1080,6 +1243,39 @@ class AwbGrid {
1080
1243
  return () => api.updateGridOptions({ theme, icons: { ...theme?.getIcons(), ...icons } });
1081
1244
  });
1082
1245
  }
1246
+ /**
1247
+ * Development only. Creation-only inputs are read once, by createGrid; a later change to one is
1248
+ * ignored. Instead of letting that change vanish silently, warn once per input (per grid
1249
+ * instance), comparing against the value the grid was created with. The input list is core's
1250
+ * creation-only key list, intersected with the inputs this component declares.
1251
+ */
1252
+ startCreationOnlyWarnings() {
1253
+ const self = this;
1254
+ const inputs = CREATION_ONLY_INPUT_CANDIDATES.flatMap((key) => {
1255
+ const candidate = self[key];
1256
+ return isSignal(candidate) ? [{ key, read: candidate }] : [];
1257
+ });
1258
+ const created = new Map(inputs.map(({ key, read }) => {
1259
+ const value = untracked(read);
1260
+ return [key, { value, fingerprint: inputFingerprint(key, value) }];
1261
+ }));
1262
+ const warned = new Set();
1263
+ effect(() => {
1264
+ for (const { key, read } of inputs) {
1265
+ const value = read();
1266
+ if (warned.has(key))
1267
+ continue;
1268
+ const initial = created.get(key);
1269
+ if (Object.is(value, initial.value))
1270
+ continue;
1271
+ const fingerprint = inputFingerprint(key, value);
1272
+ if (fingerprint !== UNCOMPARABLE && fingerprint === initial.fingerprint)
1273
+ continue;
1274
+ warned.add(key);
1275
+ console.warn(creationOnlyWarning(key));
1276
+ }
1277
+ }, { injector: this.injector });
1278
+ }
1083
1279
  /**
1084
1280
  * Effect helper: `read` runs tracked (signal reads register dependencies) and returns the core
1085
1281
  * call to make, or null to skip; the call itself runs outside the Angular zone so core-side
@@ -1112,12 +1308,12 @@ class AwbGrid {
1112
1308
  }, { injector: this.injector });
1113
1309
  }
1114
1310
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AwbGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.27", type: AwbGrid, isStandalone: true, selector: "awb-grid", inputs: { rowData: { classPropertyName: "rowData", publicName: "rowData", isSignal: true, isRequired: false, transformFunction: null }, columnDefs: { classPropertyName: "columnDefs", publicName: "columnDefs", isSignal: true, isRequired: false, transformFunction: null }, defaultColDef: { classPropertyName: "defaultColDef", publicName: "defaultColDef", isSignal: true, isRequired: false, transformFunction: null }, headerHeight: { classPropertyName: "headerHeight", publicName: "headerHeight", isSignal: true, isRequired: false, transformFunction: null }, leafHeaderHeight: { classPropertyName: "leafHeaderHeight", publicName: "leafHeaderHeight", isSignal: true, isRequired: false, transformFunction: null }, parentHeaderHeight: { classPropertyName: "parentHeaderHeight", publicName: "parentHeaderHeight", isSignal: true, isRequired: false, transformFunction: null }, rowHeight: { classPropertyName: "rowHeight", publicName: "rowHeight", isSignal: true, isRequired: false, transformFunction: null }, overscanRowCount: { classPropertyName: "overscanRowCount", publicName: "overscanRowCount", isSignal: true, isRequired: false, transformFunction: null }, minResizeWidth: { classPropertyName: "minResizeWidth", publicName: "minResizeWidth", isSignal: true, isRequired: false, transformFunction: null }, maxColumnWidth: { classPropertyName: "maxColumnWidth", publicName: "maxColumnWidth", isSignal: true, isRequired: false, transformFunction: null }, pivotMode: { classPropertyName: "pivotMode", publicName: "pivotMode", isSignal: true, isRequired: false, transformFunction: null }, pivotColumns: { classPropertyName: "pivotColumns", publicName: "pivotColumns", isSignal: true, isRequired: false, transformFunction: null }, pivotResultColumnDef: { classPropertyName: "pivotResultColumnDef", publicName: "pivotResultColumnDef", isSignal: true, isRequired: false, transformFunction: null }, maxPivotColumns: { classPropertyName: "maxPivotColumns", publicName: "maxPivotColumns", isSignal: true, isRequired: false, transformFunction: null }, pivotColumnMoveMode: { classPropertyName: "pivotColumnMoveMode", publicName: "pivotColumnMoveMode", isSignal: true, isRequired: false, transformFunction: null }, autosizeColumnsOnDataChange: { classPropertyName: "autosizeColumnsOnDataChange", publicName: "autosizeColumnsOnDataChange", isSignal: true, isRequired: false, transformFunction: null }, getRowId: { classPropertyName: "getRowId", publicName: "getRowId", isSignal: true, isRequired: false, transformFunction: null }, rowIdKey: { classPropertyName: "rowIdKey", publicName: "rowIdKey", isSignal: true, isRequired: false, transformFunction: null }, rowDataMode: { classPropertyName: "rowDataMode", publicName: "rowDataMode", isSignal: true, isRequired: false, transformFunction: null }, asyncTransactionWaitMs: { classPropertyName: "asyncTransactionWaitMs", publicName: "asyncTransactionWaitMs", isSignal: true, isRequired: false, transformFunction: null }, rowHover: { classPropertyName: "rowHover", publicName: "rowHover", isSignal: true, isRequired: false, transformFunction: null }, columnHover: { classPropertyName: "columnHover", publicName: "columnHover", isSignal: true, isRequired: false, transformFunction: null }, zebraRows: { classPropertyName: "zebraRows", publicName: "zebraRows", isSignal: true, isRequired: false, transformFunction: null }, getRowClass: { classPropertyName: "getRowClass", publicName: "getRowClass", isSignal: true, isRequired: false, transformFunction: null }, getRowStyle: { classPropertyName: "getRowStyle", publicName: "getRowStyle", isSignal: true, isRequired: false, transformFunction: null }, getRowPresentation: { classPropertyName: "getRowPresentation", publicName: "getRowPresentation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null }, highlightActiveCell: { classPropertyName: "highlightActiveCell", publicName: "highlightActiveCell", isSignal: true, isRequired: false, transformFunction: null }, rowNumbers: { classPropertyName: "rowNumbers", publicName: "rowNumbers", isSignal: true, isRequired: false, transformFunction: null }, showColumnButtonsOnHover: { classPropertyName: "showColumnButtonsOnHover", publicName: "showColumnButtonsOnHover", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, icons: { classPropertyName: "icons", publicName: "icons", isSignal: true, isRequired: false, transformFunction: null }, suppressStyleInjection: { classPropertyName: "suppressStyleInjection", publicName: "suppressStyleInjection", isSignal: true, isRequired: false, transformFunction: null }, styleNonce: { classPropertyName: "styleNonce", publicName: "styleNonce", isSignal: true, isRequired: false, transformFunction: null }, rowSelection: { classPropertyName: "rowSelection", publicName: "rowSelection", isSignal: true, isRequired: false, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, cellSelection: { classPropertyName: "cellSelection", publicName: "cellSelection", isSignal: true, isRequired: false, transformFunction: null }, rangeSelection: { classPropertyName: "rangeSelection", publicName: "rangeSelection", isSignal: true, isRequired: false, transformFunction: null }, fillHandle: { classPropertyName: "fillHandle", publicName: "fillHandle", isSignal: true, isRequired: false, transformFunction: null }, columnSelection: { classPropertyName: "columnSelection", publicName: "columnSelection", isSignal: true, isRequired: false, transformFunction: null }, headerKeyboardNavigation: { classPropertyName: "headerKeyboardNavigation", publicName: "headerKeyboardNavigation", isSignal: true, isRequired: false, transformFunction: null }, selectAllRowsOnHeaderClick: { classPropertyName: "selectAllRowsOnHeaderClick", publicName: "selectAllRowsOnHeaderClick", isSignal: true, isRequired: false, transformFunction: null }, selectAllScope: { classPropertyName: "selectAllScope", publicName: "selectAllScope", isSignal: true, isRequired: false, transformFunction: null }, selectionPersistence: { classPropertyName: "selectionPersistence", publicName: "selectionPersistence", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionOnBodyClick: { classPropertyName: "clearSelectionOnBodyClick", publicName: "clearSelectionOnBodyClick", isSignal: true, isRequired: false, transformFunction: null }, editTrigger: { classPropertyName: "editTrigger", publicName: "editTrigger", isSignal: true, isRequired: false, transformFunction: null }, onBeforeCellCommit: { classPropertyName: "onBeforeCellCommit", publicName: "onBeforeCellCommit", isSignal: true, isRequired: false, transformFunction: null }, fillOperation: { classPropertyName: "fillOperation", publicName: "fillOperation", isSignal: true, isRequired: false, transformFunction: null }, readOnlyEdit: { classPropertyName: "readOnlyEdit", publicName: "readOnlyEdit", isSignal: true, isRequired: false, transformFunction: null }, pinnedRowsEditable: { classPropertyName: "pinnedRowsEditable", publicName: "pinnedRowsEditable", isSignal: true, isRequired: false, transformFunction: null }, suppressKeyboardEdit: { classPropertyName: "suppressKeyboardEdit", publicName: "suppressKeyboardEdit", isSignal: true, isRequired: false, transformFunction: null }, suppressTypeToEdit: { classPropertyName: "suppressTypeToEdit", publicName: "suppressTypeToEdit", isSignal: true, isRequired: false, transformFunction: null }, moveAfterEdit: { classPropertyName: "moveAfterEdit", publicName: "moveAfterEdit", isSignal: true, isRequired: false, transformFunction: null }, commitOnBlur: { classPropertyName: "commitOnBlur", publicName: "commitOnBlur", isSignal: true, isRequired: false, transformFunction: null }, reevaluateOnEdit: { classPropertyName: "reevaluateOnEdit", publicName: "reevaluateOnEdit", isSignal: true, isRequired: false, transformFunction: null }, undoLimit: { classPropertyName: "undoLimit", publicName: "undoLimit", isSignal: true, isRequired: false, transformFunction: null }, initialSort: { classPropertyName: "initialSort", publicName: "initialSort", isSignal: true, isRequired: false, transformFunction: null }, showSortPriority: { classPropertyName: "showSortPriority", publicName: "showSortPriority", isSignal: true, isRequired: false, transformFunction: null }, quickFilter: { classPropertyName: "quickFilter", publicName: "quickFilter", isSignal: true, isRequired: false, transformFunction: null }, filterDebounceMs: { classPropertyName: "filterDebounceMs", publicName: "filterDebounceMs", isSignal: true, isRequired: false, transformFunction: null }, groupDisplayType: { classPropertyName: "groupDisplayType", publicName: "groupDisplayType", isSignal: true, isRequired: false, transformFunction: null }, groupColumnDef: { classPropertyName: "groupColumnDef", publicName: "groupColumnDef", isSignal: true, isRequired: false, transformFunction: null }, groupDefaultExpanded: { classPropertyName: "groupDefaultExpanded", publicName: "groupDefaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, groupSortMode: { classPropertyName: "groupSortMode", publicName: "groupSortMode", isSignal: true, isRequired: false, transformFunction: null }, groupRowsSelectable: { classPropertyName: "groupRowsSelectable", publicName: "groupRowsSelectable", isSignal: true, isRequired: false, transformFunction: null }, groupRowsSticky: { classPropertyName: "groupRowsSticky", publicName: "groupRowsSticky", isSignal: true, isRequired: false, transformFunction: null }, getGroupChildCount: { classPropertyName: "getGroupChildCount", publicName: "getGroupChildCount", isSignal: true, isRequired: false, transformFunction: null }, groupChildCount: { classPropertyName: "groupChildCount", publicName: "groupChildCount", isSignal: true, isRequired: false, transformFunction: null }, treeData: { classPropertyName: "treeData", publicName: "treeData", isSignal: true, isRequired: false, transformFunction: null }, pinnedTopRowData: { classPropertyName: "pinnedTopRowData", publicName: "pinnedTopRowData", isSignal: true, isRequired: false, transformFunction: null }, pinnedBottomRowData: { classPropertyName: "pinnedBottomRowData", publicName: "pinnedBottomRowData", isSignal: true, isRequired: false, transformFunction: null }, isRowPinned: { classPropertyName: "isRowPinned", publicName: "isRowPinned", isSignal: true, isRequired: false, transformFunction: null }, rowPinningMenu: { classPropertyName: "rowPinningMenu", publicName: "rowPinningMenu", isSignal: true, isRequired: false, transformFunction: null }, rowInsertionMenu: { classPropertyName: "rowInsertionMenu", publicName: "rowInsertionMenu", isSignal: true, isRequired: false, transformFunction: null }, isFullWidthRow: { classPropertyName: "isFullWidthRow", publicName: "isFullWidthRow", isSignal: true, isRequired: false, transformFunction: null }, fullWidthCellRenderer: { classPropertyName: "fullWidthCellRenderer", publicName: "fullWidthCellRenderer", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, paginationControls: { classPropertyName: "paginationControls", publicName: "paginationControls", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizes: { classPropertyName: "pageSizes", publicName: "pageSizes", isSignal: true, isRequired: false, transformFunction: null }, resetPageOn: { classPropertyName: "resetPageOn", publicName: "resetPageOn", isSignal: true, isRequired: false, transformFunction: null }, paginationUnknownTotalTooltip: { classPropertyName: "paginationUnknownTotalTooltip", publicName: "paginationUnknownTotalTooltip", isSignal: true, isRequired: false, transformFunction: null }, rowModelType: { classPropertyName: "rowModelType", publicName: "rowModelType", isSignal: true, isRequired: false, transformFunction: null }, serverSideDataSource: { classPropertyName: "serverSideDataSource", publicName: "serverSideDataSource", isSignal: true, isRequired: false, transformFunction: null }, serverSideAggregationSource: { classPropertyName: "serverSideAggregationSource", publicName: "serverSideAggregationSource", isSignal: true, isRequired: false, transformFunction: null }, serverSideBlockSize: { classPropertyName: "serverSideBlockSize", publicName: "serverSideBlockSize", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, columnPanel: { classPropertyName: "columnPanel", publicName: "columnPanel", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, savedViews: { classPropertyName: "savedViews", publicName: "savedViews", isSignal: true, isRequired: false, transformFunction: null }, sheets: { classPropertyName: "sheets", publicName: "sheets", isSignal: true, isRequired: false, transformFunction: null }, allowExportAsCSV: { classPropertyName: "allowExportAsCSV", publicName: "allowExportAsCSV", isSignal: true, isRequired: false, transformFunction: null }, allowExportAsExcel: { classPropertyName: "allowExportAsExcel", publicName: "allowExportAsExcel", isSignal: true, isRequired: false, transformFunction: null }, cellFlashDuration: { classPropertyName: "cellFlashDuration", publicName: "cellFlashDuration", isSignal: true, isRequired: false, transformFunction: null }, cellFadeDuration: { classPropertyName: "cellFadeDuration", publicName: "cellFadeDuration", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingMessage: { classPropertyName: "loadingMessage", publicName: "loadingMessage", isSignal: true, isRequired: false, transformFunction: null }, noRowsMessage: { classPropertyName: "noRowsMessage", publicName: "noRowsMessage", isSignal: true, isRequired: false, transformFunction: null }, pivotNoValuesMessage: { classPropertyName: "pivotNoValuesMessage", publicName: "pivotNoValuesMessage", isSignal: true, isRequired: false, transformFunction: null }, pivotEmptyMessage: { classPropertyName: "pivotEmptyMessage", publicName: "pivotEmptyMessage", isSignal: true, isRequired: false, transformFunction: null }, getColumnMenuItems: { classPropertyName: "getColumnMenuItems", publicName: "getColumnMenuItems", isSignal: true, isRequired: false, transformFunction: null }, bodyContextMenu: { classPropertyName: "bodyContextMenu", publicName: "bodyContextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiColumnMenu: { classPropertyName: "multiColumnMenu", publicName: "multiColumnMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridReady: "gridReady", cellClicked: "cellClicked", rowClicked: "rowClicked", cellDoubleClicked: "cellDoubleClicked", rowDoubleClicked: "rowDoubleClicked", cellValueChanged: "cellValueChanged", selectionChanged: "selectionChanged", sortChanged: "sortChanged", filterChanged: "filterChanged", quickFilterFindChanged: "quickFilterFindChanged", historyChanged: "historyChanged" }, exportAs: ["awbGrid"], ngImport: i0, template: "", isInline: true, styles: [":host{position:relative;display:block;width:100%;height:100%;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1311
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.27", type: AwbGrid, isStandalone: true, selector: "awb-grid", inputs: { rowData: { classPropertyName: "rowData", publicName: "rowData", isSignal: true, isRequired: false, transformFunction: null }, columnDefs: { classPropertyName: "columnDefs", publicName: "columnDefs", isSignal: true, isRequired: false, transformFunction: null }, defaultColDef: { classPropertyName: "defaultColDef", publicName: "defaultColDef", isSignal: true, isRequired: false, transformFunction: null }, headerHeight: { classPropertyName: "headerHeight", publicName: "headerHeight", isSignal: true, isRequired: false, transformFunction: null }, leafHeaderHeight: { classPropertyName: "leafHeaderHeight", publicName: "leafHeaderHeight", isSignal: true, isRequired: false, transformFunction: null }, parentHeaderHeight: { classPropertyName: "parentHeaderHeight", publicName: "parentHeaderHeight", isSignal: true, isRequired: false, transformFunction: null }, rowHeight: { classPropertyName: "rowHeight", publicName: "rowHeight", isSignal: true, isRequired: false, transformFunction: null }, overscanRowCount: { classPropertyName: "overscanRowCount", publicName: "overscanRowCount", isSignal: true, isRequired: false, transformFunction: null }, minResizeWidth: { classPropertyName: "minResizeWidth", publicName: "minResizeWidth", isSignal: true, isRequired: false, transformFunction: null }, maxColumnWidth: { classPropertyName: "maxColumnWidth", publicName: "maxColumnWidth", isSignal: true, isRequired: false, transformFunction: null }, pivotMode: { classPropertyName: "pivotMode", publicName: "pivotMode", isSignal: true, isRequired: false, transformFunction: null }, pivotColumns: { classPropertyName: "pivotColumns", publicName: "pivotColumns", isSignal: true, isRequired: false, transformFunction: null }, pivotResultColumnDef: { classPropertyName: "pivotResultColumnDef", publicName: "pivotResultColumnDef", isSignal: true, isRequired: false, transformFunction: null }, maxPivotColumns: { classPropertyName: "maxPivotColumns", publicName: "maxPivotColumns", isSignal: true, isRequired: false, transformFunction: null }, pivotColumnMoveMode: { classPropertyName: "pivotColumnMoveMode", publicName: "pivotColumnMoveMode", isSignal: true, isRequired: false, transformFunction: null }, autosizeColumnsOnDataChange: { classPropertyName: "autosizeColumnsOnDataChange", publicName: "autosizeColumnsOnDataChange", isSignal: true, isRequired: false, transformFunction: null }, getRowId: { classPropertyName: "getRowId", publicName: "getRowId", isSignal: true, isRequired: false, transformFunction: null }, rowIdKey: { classPropertyName: "rowIdKey", publicName: "rowIdKey", isSignal: true, isRequired: false, transformFunction: null }, rowDataMode: { classPropertyName: "rowDataMode", publicName: "rowDataMode", isSignal: true, isRequired: false, transformFunction: null }, asyncTransactionWaitMs: { classPropertyName: "asyncTransactionWaitMs", publicName: "asyncTransactionWaitMs", isSignal: true, isRequired: false, transformFunction: null }, rowHover: { classPropertyName: "rowHover", publicName: "rowHover", isSignal: true, isRequired: false, transformFunction: null }, columnHover: { classPropertyName: "columnHover", publicName: "columnHover", isSignal: true, isRequired: false, transformFunction: null }, zebraRows: { classPropertyName: "zebraRows", publicName: "zebraRows", isSignal: true, isRequired: false, transformFunction: null }, getRowClass: { classPropertyName: "getRowClass", publicName: "getRowClass", isSignal: true, isRequired: false, transformFunction: null }, getRowStyle: { classPropertyName: "getRowStyle", publicName: "getRowStyle", isSignal: true, isRequired: false, transformFunction: null }, getRowPresentation: { classPropertyName: "getRowPresentation", publicName: "getRowPresentation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null }, highlightActiveCell: { classPropertyName: "highlightActiveCell", publicName: "highlightActiveCell", isSignal: true, isRequired: false, transformFunction: null }, rowNumbers: { classPropertyName: "rowNumbers", publicName: "rowNumbers", isSignal: true, isRequired: false, transformFunction: null }, showColumnButtonsOnHover: { classPropertyName: "showColumnButtonsOnHover", publicName: "showColumnButtonsOnHover", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, icons: { classPropertyName: "icons", publicName: "icons", isSignal: true, isRequired: false, transformFunction: null }, suppressStyleInjection: { classPropertyName: "suppressStyleInjection", publicName: "suppressStyleInjection", isSignal: true, isRequired: false, transformFunction: null }, styleNonce: { classPropertyName: "styleNonce", publicName: "styleNonce", isSignal: true, isRequired: false, transformFunction: null }, rowSelection: { classPropertyName: "rowSelection", publicName: "rowSelection", isSignal: true, isRequired: false, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, cellSelection: { classPropertyName: "cellSelection", publicName: "cellSelection", isSignal: true, isRequired: false, transformFunction: null }, rangeSelection: { classPropertyName: "rangeSelection", publicName: "rangeSelection", isSignal: true, isRequired: false, transformFunction: null }, fillHandle: { classPropertyName: "fillHandle", publicName: "fillHandle", isSignal: true, isRequired: false, transformFunction: null }, columnSelection: { classPropertyName: "columnSelection", publicName: "columnSelection", isSignal: true, isRequired: false, transformFunction: null }, headerKeyboardNavigation: { classPropertyName: "headerKeyboardNavigation", publicName: "headerKeyboardNavigation", isSignal: true, isRequired: false, transformFunction: null }, selectAllRowsOnHeaderClick: { classPropertyName: "selectAllRowsOnHeaderClick", publicName: "selectAllRowsOnHeaderClick", isSignal: true, isRequired: false, transformFunction: null }, selectAllScope: { classPropertyName: "selectAllScope", publicName: "selectAllScope", isSignal: true, isRequired: false, transformFunction: null }, selectionPersistence: { classPropertyName: "selectionPersistence", publicName: "selectionPersistence", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionOnBodyClick: { classPropertyName: "clearSelectionOnBodyClick", publicName: "clearSelectionOnBodyClick", isSignal: true, isRequired: false, transformFunction: null }, editTrigger: { classPropertyName: "editTrigger", publicName: "editTrigger", isSignal: true, isRequired: false, transformFunction: null }, onBeforeCellCommit: { classPropertyName: "onBeforeCellCommit", publicName: "onBeforeCellCommit", isSignal: true, isRequired: false, transformFunction: null }, fillOperation: { classPropertyName: "fillOperation", publicName: "fillOperation", isSignal: true, isRequired: false, transformFunction: null }, readOnlyEdit: { classPropertyName: "readOnlyEdit", publicName: "readOnlyEdit", isSignal: true, isRequired: false, transformFunction: null }, pinnedRowsEditable: { classPropertyName: "pinnedRowsEditable", publicName: "pinnedRowsEditable", isSignal: true, isRequired: false, transformFunction: null }, suppressKeyboardEdit: { classPropertyName: "suppressKeyboardEdit", publicName: "suppressKeyboardEdit", isSignal: true, isRequired: false, transformFunction: null }, suppressTypeToEdit: { classPropertyName: "suppressTypeToEdit", publicName: "suppressTypeToEdit", isSignal: true, isRequired: false, transformFunction: null }, moveAfterEdit: { classPropertyName: "moveAfterEdit", publicName: "moveAfterEdit", isSignal: true, isRequired: false, transformFunction: null }, commitOnBlur: { classPropertyName: "commitOnBlur", publicName: "commitOnBlur", isSignal: true, isRequired: false, transformFunction: null }, reevaluateOnEdit: { classPropertyName: "reevaluateOnEdit", publicName: "reevaluateOnEdit", isSignal: true, isRequired: false, transformFunction: null }, undoLimit: { classPropertyName: "undoLimit", publicName: "undoLimit", isSignal: true, isRequired: false, transformFunction: null }, initialSort: { classPropertyName: "initialSort", publicName: "initialSort", isSignal: true, isRequired: false, transformFunction: null }, showSortPriority: { classPropertyName: "showSortPriority", publicName: "showSortPriority", isSignal: true, isRequired: false, transformFunction: null }, quickFilter: { classPropertyName: "quickFilter", publicName: "quickFilter", isSignal: true, isRequired: false, transformFunction: null }, filterDebounceMs: { classPropertyName: "filterDebounceMs", publicName: "filterDebounceMs", isSignal: true, isRequired: false, transformFunction: null }, groupDisplayType: { classPropertyName: "groupDisplayType", publicName: "groupDisplayType", isSignal: true, isRequired: false, transformFunction: null }, groupColumnDef: { classPropertyName: "groupColumnDef", publicName: "groupColumnDef", isSignal: true, isRequired: false, transformFunction: null }, groupDefaultExpanded: { classPropertyName: "groupDefaultExpanded", publicName: "groupDefaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, groupSortMode: { classPropertyName: "groupSortMode", publicName: "groupSortMode", isSignal: true, isRequired: false, transformFunction: null }, groupRowsSelectable: { classPropertyName: "groupRowsSelectable", publicName: "groupRowsSelectable", isSignal: true, isRequired: false, transformFunction: null }, groupSelectsChildren: { classPropertyName: "groupSelectsChildren", publicName: "groupSelectsChildren", isSignal: true, isRequired: false, transformFunction: null }, aggFuncs: { classPropertyName: "aggFuncs", publicName: "aggFuncs", isSignal: true, isRequired: false, transformFunction: null }, groupRowsSticky: { classPropertyName: "groupRowsSticky", publicName: "groupRowsSticky", isSignal: true, isRequired: false, transformFunction: null }, getGroupChildCount: { classPropertyName: "getGroupChildCount", publicName: "getGroupChildCount", isSignal: true, isRequired: false, transformFunction: null }, groupChildCount: { classPropertyName: "groupChildCount", publicName: "groupChildCount", isSignal: true, isRequired: false, transformFunction: null }, groupTotalRow: { classPropertyName: "groupTotalRow", publicName: "groupTotalRow", isSignal: true, isRequired: false, transformFunction: null }, grandTotalRow: { classPropertyName: "grandTotalRow", publicName: "grandTotalRow", isSignal: true, isRequired: false, transformFunction: null }, groupTotalRowLabel: { classPropertyName: "groupTotalRowLabel", publicName: "groupTotalRowLabel", isSignal: true, isRequired: false, transformFunction: null }, treeData: { classPropertyName: "treeData", publicName: "treeData", isSignal: true, isRequired: false, transformFunction: null }, pinnedTopRowData: { classPropertyName: "pinnedTopRowData", publicName: "pinnedTopRowData", isSignal: true, isRequired: false, transformFunction: null }, pinnedBottomRowData: { classPropertyName: "pinnedBottomRowData", publicName: "pinnedBottomRowData", isSignal: true, isRequired: false, transformFunction: null }, isRowPinned: { classPropertyName: "isRowPinned", publicName: "isRowPinned", isSignal: true, isRequired: false, transformFunction: null }, rowPinningMenu: { classPropertyName: "rowPinningMenu", publicName: "rowPinningMenu", isSignal: true, isRequired: false, transformFunction: null }, rowInsertionMenu: { classPropertyName: "rowInsertionMenu", publicName: "rowInsertionMenu", isSignal: true, isRequired: false, transformFunction: null }, isFullWidthRow: { classPropertyName: "isFullWidthRow", publicName: "isFullWidthRow", isSignal: true, isRequired: false, transformFunction: null }, fullWidthCellRenderer: { classPropertyName: "fullWidthCellRenderer", publicName: "fullWidthCellRenderer", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, paginationControls: { classPropertyName: "paginationControls", publicName: "paginationControls", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizes: { classPropertyName: "pageSizes", publicName: "pageSizes", isSignal: true, isRequired: false, transformFunction: null }, resetPageOn: { classPropertyName: "resetPageOn", publicName: "resetPageOn", isSignal: true, isRequired: false, transformFunction: null }, paginationUnknownTotalTooltip: { classPropertyName: "paginationUnknownTotalTooltip", publicName: "paginationUnknownTotalTooltip", isSignal: true, isRequired: false, transformFunction: null }, rowModelType: { classPropertyName: "rowModelType", publicName: "rowModelType", isSignal: true, isRequired: false, transformFunction: null }, serverSideDataSource: { classPropertyName: "serverSideDataSource", publicName: "serverSideDataSource", isSignal: true, isRequired: false, transformFunction: null }, serverSideAggregationSource: { classPropertyName: "serverSideAggregationSource", publicName: "serverSideAggregationSource", isSignal: true, isRequired: false, transformFunction: null }, serverSideBlockSize: { classPropertyName: "serverSideBlockSize", publicName: "serverSideBlockSize", isSignal: true, isRequired: false, transformFunction: null }, serverSideMaxBlocks: { classPropertyName: "serverSideMaxBlocks", publicName: "serverSideMaxBlocks", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, columnPanel: { classPropertyName: "columnPanel", publicName: "columnPanel", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, savedViews: { classPropertyName: "savedViews", publicName: "savedViews", isSignal: true, isRequired: false, transformFunction: null }, sheets: { classPropertyName: "sheets", publicName: "sheets", isSignal: true, isRequired: false, transformFunction: null }, allowExportAsCSV: { classPropertyName: "allowExportAsCSV", publicName: "allowExportAsCSV", isSignal: true, isRequired: false, transformFunction: null }, allowExportAsExcel: { classPropertyName: "allowExportAsExcel", publicName: "allowExportAsExcel", isSignal: true, isRequired: false, transformFunction: null }, cellFlashDuration: { classPropertyName: "cellFlashDuration", publicName: "cellFlashDuration", isSignal: true, isRequired: false, transformFunction: null }, cellFadeDuration: { classPropertyName: "cellFadeDuration", publicName: "cellFadeDuration", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingMessage: { classPropertyName: "loadingMessage", publicName: "loadingMessage", isSignal: true, isRequired: false, transformFunction: null }, noRowsMessage: { classPropertyName: "noRowsMessage", publicName: "noRowsMessage", isSignal: true, isRequired: false, transformFunction: null }, pivotNoValuesMessage: { classPropertyName: "pivotNoValuesMessage", publicName: "pivotNoValuesMessage", isSignal: true, isRequired: false, transformFunction: null }, pivotEmptyMessage: { classPropertyName: "pivotEmptyMessage", publicName: "pivotEmptyMessage", isSignal: true, isRequired: false, transformFunction: null }, getColumnMenuItems: { classPropertyName: "getColumnMenuItems", publicName: "getColumnMenuItems", isSignal: true, isRequired: false, transformFunction: null }, bodyContextMenu: { classPropertyName: "bodyContextMenu", publicName: "bodyContextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiColumnMenu: { classPropertyName: "multiColumnMenu", publicName: "multiColumnMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { gridReady: "gridReady", cellClicked: "cellClicked", rowClicked: "rowClicked", cellDoubleClicked: "cellDoubleClicked", rowDoubleClicked: "rowDoubleClicked", cellValueChanged: "cellValueChanged", selectionChanged: "selectionChanged", sortChanged: "sortChanged", columnsChanged: "columnsChanged", paginationChanged: "paginationChanged", gridError: "gridError", filterChanged: "filterChanged", quickFilterFindChanged: "quickFilterFindChanged", historyChanged: "historyChanged" }, exportAs: ["awbGrid"], ngImport: i0, template: "", isInline: true, styles: [":host{position:relative;display:block;width:100%;height:100%;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1116
1312
  }
1117
1313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AwbGrid, decorators: [{
1118
1314
  type: Component,
1119
1315
  args: [{ selector: "awb-grid", standalone: true, exportAs: "awbGrid", template: "", changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:relative;display:block;width:100%;height:100%;overflow:hidden}\n"] }]
1120
- }], ctorParameters: () => [], propDecorators: { rowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowData", required: false }] }], columnDefs: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnDefs", required: false }] }], defaultColDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultColDef", required: false }] }], headerHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerHeight", required: false }] }], leafHeaderHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "leafHeaderHeight", required: false }] }], parentHeaderHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentHeaderHeight", required: false }] }], rowHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHeight", required: false }] }], overscanRowCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "overscanRowCount", required: false }] }], minResizeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minResizeWidth", required: false }] }], maxColumnWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxColumnWidth", required: false }] }], pivotMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotMode", required: false }] }], pivotColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotColumns", required: false }] }], pivotResultColumnDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotResultColumnDef", required: false }] }], maxPivotColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxPivotColumns", required: false }] }], pivotColumnMoveMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotColumnMoveMode", required: false }] }], autosizeColumnsOnDataChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosizeColumnsOnDataChange", required: false }] }], getRowId: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowId", required: false }] }], rowIdKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowIdKey", required: false }] }], rowDataMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowDataMode", required: false }] }], asyncTransactionWaitMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "asyncTransactionWaitMs", required: false }] }], rowHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHover", required: false }] }], columnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnHover", required: false }] }], zebraRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "zebraRows", required: false }] }], getRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowClass", required: false }] }], getRowStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowStyle", required: false }] }], getRowPresentation: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowPresentation", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], highlightActiveCell: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightActiveCell", required: false }] }], rowNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowNumbers", required: false }] }], showColumnButtonsOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "showColumnButtonsOnHover", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], icons: [{ type: i0.Input, args: [{ isSignal: true, alias: "icons", required: false }] }], suppressStyleInjection: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressStyleInjection", required: false }] }], styleNonce: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleNonce", required: false }] }], rowSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowSelection", required: false }] }], isRowSelectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRowSelectable", required: false }] }], cellSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellSelection", required: false }] }], rangeSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeSelection", required: false }] }], fillHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillHandle", required: false }] }], columnSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnSelection", required: false }] }], headerKeyboardNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerKeyboardNavigation", required: false }] }], selectAllRowsOnHeaderClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllRowsOnHeaderClick", required: false }] }], selectAllScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllScope", required: false }] }], selectionPersistence: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionPersistence", required: false }] }], clearSelectionOnBodyClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSelectionOnBodyClick", required: false }] }], editTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "editTrigger", required: false }] }], onBeforeCellCommit: [{ type: i0.Input, args: [{ isSignal: true, alias: "onBeforeCellCommit", required: false }] }], fillOperation: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillOperation", required: false }] }], readOnlyEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnlyEdit", required: false }] }], pinnedRowsEditable: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRowsEditable", required: false }] }], suppressKeyboardEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressKeyboardEdit", required: false }] }], suppressTypeToEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressTypeToEdit", required: false }] }], moveAfterEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "moveAfterEdit", required: false }] }], commitOnBlur: [{ type: i0.Input, args: [{ isSignal: true, alias: "commitOnBlur", required: false }] }], reevaluateOnEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "reevaluateOnEdit", required: false }] }], undoLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoLimit", required: false }] }], initialSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSort", required: false }] }], showSortPriority: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSortPriority", required: false }] }], quickFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "quickFilter", required: false }] }], filterDebounceMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterDebounceMs", required: false }] }], groupDisplayType: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupDisplayType", required: false }] }], groupColumnDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupColumnDef", required: false }] }], groupDefaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupDefaultExpanded", required: false }] }], groupSortMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupSortMode", required: false }] }], groupRowsSelectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupRowsSelectable", required: false }] }], groupRowsSticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupRowsSticky", required: false }] }], getGroupChildCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "getGroupChildCount", required: false }] }], groupChildCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupChildCount", required: false }] }], treeData: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeData", required: false }] }], pinnedTopRowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedTopRowData", required: false }] }], pinnedBottomRowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedBottomRowData", required: false }] }], isRowPinned: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRowPinned", required: false }] }], rowPinningMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowPinningMenu", required: false }] }], rowInsertionMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowInsertionMenu", required: false }] }], isFullWidthRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullWidthRow", required: false }] }], fullWidthCellRenderer: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidthCellRenderer", required: false }] }], pagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagination", required: false }] }], paginationControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginationControls", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pageSizes: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizes", required: false }] }], resetPageOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetPageOn", required: false }] }], paginationUnknownTotalTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginationUnknownTotalTooltip", required: false }] }], rowModelType: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowModelType", required: false }] }], serverSideDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideDataSource", required: false }] }], serverSideAggregationSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideAggregationSource", required: false }] }], serverSideBlockSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideBlockSize", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], columnPanel: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnPanel", required: false }] }], toolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolbar", required: false }] }], savedViews: [{ type: i0.Input, args: [{ isSignal: true, alias: "savedViews", required: false }] }], sheets: [{ type: i0.Input, args: [{ isSignal: true, alias: "sheets", required: false }] }], allowExportAsCSV: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowExportAsCSV", required: false }] }], allowExportAsExcel: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowExportAsExcel", required: false }] }], cellFlashDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellFlashDuration", required: false }] }], cellFadeDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellFadeDuration", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingMessage", required: false }] }], noRowsMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noRowsMessage", required: false }] }], pivotNoValuesMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotNoValuesMessage", required: false }] }], pivotEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotEmptyMessage", required: false }] }], getColumnMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "getColumnMenuItems", required: false }] }], bodyContextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyContextMenu", required: false }] }], multiColumnMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiColumnMenu", required: false }] }], gridReady: [{ type: i0.Output, args: ["gridReady"] }], cellClicked: [{ type: i0.Output, args: ["cellClicked"] }], rowClicked: [{ type: i0.Output, args: ["rowClicked"] }], cellDoubleClicked: [{ type: i0.Output, args: ["cellDoubleClicked"] }], rowDoubleClicked: [{ type: i0.Output, args: ["rowDoubleClicked"] }], cellValueChanged: [{ type: i0.Output, args: ["cellValueChanged"] }], selectionChanged: [{ type: i0.Output, args: ["selectionChanged"] }], sortChanged: [{ type: i0.Output, args: ["sortChanged"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], quickFilterFindChanged: [{ type: i0.Output, args: ["quickFilterFindChanged"] }], historyChanged: [{ type: i0.Output, args: ["historyChanged"] }] } });
1316
+ }], ctorParameters: () => [], propDecorators: { rowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowData", required: false }] }], columnDefs: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnDefs", required: false }] }], defaultColDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultColDef", required: false }] }], headerHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerHeight", required: false }] }], leafHeaderHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "leafHeaderHeight", required: false }] }], parentHeaderHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentHeaderHeight", required: false }] }], rowHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHeight", required: false }] }], overscanRowCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "overscanRowCount", required: false }] }], minResizeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minResizeWidth", required: false }] }], maxColumnWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxColumnWidth", required: false }] }], pivotMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotMode", required: false }] }], pivotColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotColumns", required: false }] }], pivotResultColumnDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotResultColumnDef", required: false }] }], maxPivotColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxPivotColumns", required: false }] }], pivotColumnMoveMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotColumnMoveMode", required: false }] }], autosizeColumnsOnDataChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "autosizeColumnsOnDataChange", required: false }] }], getRowId: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowId", required: false }] }], rowIdKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowIdKey", required: false }] }], rowDataMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowDataMode", required: false }] }], asyncTransactionWaitMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "asyncTransactionWaitMs", required: false }] }], rowHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHover", required: false }] }], columnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnHover", required: false }] }], zebraRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "zebraRows", required: false }] }], getRowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowClass", required: false }] }], getRowStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowStyle", required: false }] }], getRowPresentation: [{ type: i0.Input, args: [{ isSignal: true, alias: "getRowPresentation", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], highlightActiveCell: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightActiveCell", required: false }] }], rowNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowNumbers", required: false }] }], showColumnButtonsOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "showColumnButtonsOnHover", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], icons: [{ type: i0.Input, args: [{ isSignal: true, alias: "icons", required: false }] }], suppressStyleInjection: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressStyleInjection", required: false }] }], styleNonce: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleNonce", required: false }] }], rowSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowSelection", required: false }] }], isRowSelectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRowSelectable", required: false }] }], cellSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellSelection", required: false }] }], rangeSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeSelection", required: false }] }], fillHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillHandle", required: false }] }], columnSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnSelection", required: false }] }], headerKeyboardNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerKeyboardNavigation", required: false }] }], selectAllRowsOnHeaderClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllRowsOnHeaderClick", required: false }] }], selectAllScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllScope", required: false }] }], selectionPersistence: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionPersistence", required: false }] }], clearSelectionOnBodyClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSelectionOnBodyClick", required: false }] }], editTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "editTrigger", required: false }] }], onBeforeCellCommit: [{ type: i0.Input, args: [{ isSignal: true, alias: "onBeforeCellCommit", required: false }] }], fillOperation: [{ type: i0.Input, args: [{ isSignal: true, alias: "fillOperation", required: false }] }], readOnlyEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnlyEdit", required: false }] }], pinnedRowsEditable: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRowsEditable", required: false }] }], suppressKeyboardEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressKeyboardEdit", required: false }] }], suppressTypeToEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressTypeToEdit", required: false }] }], moveAfterEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "moveAfterEdit", required: false }] }], commitOnBlur: [{ type: i0.Input, args: [{ isSignal: true, alias: "commitOnBlur", required: false }] }], reevaluateOnEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "reevaluateOnEdit", required: false }] }], undoLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoLimit", required: false }] }], initialSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSort", required: false }] }], showSortPriority: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSortPriority", required: false }] }], quickFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "quickFilter", required: false }] }], filterDebounceMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterDebounceMs", required: false }] }], groupDisplayType: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupDisplayType", required: false }] }], groupColumnDef: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupColumnDef", required: false }] }], groupDefaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupDefaultExpanded", required: false }] }], groupSortMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupSortMode", required: false }] }], groupRowsSelectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupRowsSelectable", required: false }] }], groupSelectsChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupSelectsChildren", required: false }] }], aggFuncs: [{ type: i0.Input, args: [{ isSignal: true, alias: "aggFuncs", required: false }] }], groupRowsSticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupRowsSticky", required: false }] }], getGroupChildCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "getGroupChildCount", required: false }] }], groupChildCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupChildCount", required: false }] }], groupTotalRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupTotalRow", required: false }] }], grandTotalRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "grandTotalRow", required: false }] }], groupTotalRowLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupTotalRowLabel", required: false }] }], treeData: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeData", required: false }] }], pinnedTopRowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedTopRowData", required: false }] }], pinnedBottomRowData: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedBottomRowData", required: false }] }], isRowPinned: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRowPinned", required: false }] }], rowPinningMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowPinningMenu", required: false }] }], rowInsertionMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowInsertionMenu", required: false }] }], isFullWidthRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullWidthRow", required: false }] }], fullWidthCellRenderer: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidthCellRenderer", required: false }] }], pagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagination", required: false }] }], paginationControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginationControls", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pageSizes: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizes", required: false }] }], resetPageOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetPageOn", required: false }] }], paginationUnknownTotalTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginationUnknownTotalTooltip", required: false }] }], rowModelType: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowModelType", required: false }] }], serverSideDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideDataSource", required: false }] }], serverSideAggregationSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideAggregationSource", required: false }] }], serverSideBlockSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideBlockSize", required: false }] }], serverSideMaxBlocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSideMaxBlocks", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], columnPanel: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnPanel", required: false }] }], toolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolbar", required: false }] }], savedViews: [{ type: i0.Input, args: [{ isSignal: true, alias: "savedViews", required: false }] }], sheets: [{ type: i0.Input, args: [{ isSignal: true, alias: "sheets", required: false }] }], allowExportAsCSV: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowExportAsCSV", required: false }] }], allowExportAsExcel: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowExportAsExcel", required: false }] }], cellFlashDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellFlashDuration", required: false }] }], cellFadeDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellFadeDuration", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingMessage", required: false }] }], noRowsMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noRowsMessage", required: false }] }], pivotNoValuesMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotNoValuesMessage", required: false }] }], pivotEmptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivotEmptyMessage", required: false }] }], getColumnMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "getColumnMenuItems", required: false }] }], bodyContextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyContextMenu", required: false }] }], multiColumnMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiColumnMenu", required: false }] }], gridReady: [{ type: i0.Output, args: ["gridReady"] }], cellClicked: [{ type: i0.Output, args: ["cellClicked"] }], rowClicked: [{ type: i0.Output, args: ["rowClicked"] }], cellDoubleClicked: [{ type: i0.Output, args: ["cellDoubleClicked"] }], rowDoubleClicked: [{ type: i0.Output, args: ["rowDoubleClicked"] }], cellValueChanged: [{ type: i0.Output, args: ["cellValueChanged"] }], selectionChanged: [{ type: i0.Output, args: ["selectionChanged"] }], sortChanged: [{ type: i0.Output, args: ["sortChanged"] }], columnsChanged: [{ type: i0.Output, args: ["columnsChanged"] }], paginationChanged: [{ type: i0.Output, args: ["paginationChanged"] }], gridError: [{ type: i0.Output, args: ["gridError"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], quickFilterFindChanged: [{ type: i0.Output, args: ["quickFilterFindChanged"] }], historyChanged: [{ type: i0.Output, args: ["historyChanged"] }] } });
1121
1317
 
1122
1318
  // Re-export the full framework-agnostic core surface so consumers can import everything they need
1123
1319
  // (ColDef, GridOptions, themes, types, …) from the Angular entry alone:
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _agility_workbench_grid from '@agility-workbench/grid';
2
- import { ColDef, CellRenderer, CellEditor, TooltipComponent, ActionFrameComponent, FilterParams, SetFilterValueComponent, SetFilterSpecialValueComponent, SetFilterGroupComponent, NON_DEFAULTABLE_COLDEF_KEYS, RowPresentationParams, RowPresentation, RowTooltipPresentation, ActionFrameComponentParams, ICellEditorParams, CellRendererParams, SetFilterGroupComponentParams, SetFilterSpecialValueComponentParams, SetFilterValueComponentParams, TooltipComponentParams, MenuItem, ColumnMenuContext, BodyMenuContext, Column, IGridAPI, GridEventCellClickedParams, GridEventRowClickedParams, CellValueChangedParams, GridEventSelectionChangedParams, SortChangedParams, GridEventFilterChangedParams, GridEventQuickFilterFindChangedParams, GridEventHistoryChangedParams } from '@agility-workbench/grid';
2
+ import { ColDef, CellRenderer, CellRendererAlias, CellEditor, TooltipComponent, ActionFrameComponent, FilterParams, SetFilterValueComponent, SetFilterSpecialValueComponent, SetFilterGroupComponent, HeaderComponent, NON_DEFAULTABLE_COLDEF_KEYS, RowPresentationParams, RowPresentation, RowTooltipPresentation, ActionFrameComponentParams, ICellEditorParams, CellRendererParams, HeaderComponentParams, SetFilterGroupComponentParams, SetFilterSpecialValueComponentParams, SetFilterValueComponentParams, TooltipComponentParams, MenuItem, ColumnMenuContext, BodyMenuContext, Column, IGridAPI, GridEventCellClickedParams, GridEventRowClickedParams, CellValueChangedParams, GridEventSelectionChangedParams, SortChangedParams, GridEventColumnsChangedParams, GridEventPaginationChangedParams, GridEventErrorParams, GridEventFilterChangedParams, GridEventQuickFilterFindChangedParams, GridEventHistoryChangedParams } from '@agility-workbench/grid';
3
3
  export * from '@agility-workbench/grid';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { Type, TemplateRef, OnDestroy } from '@angular/core';
@@ -25,6 +25,15 @@ interface IActionFrameNgComp<P extends ActionFrameComponentParams = ActionFrameC
25
25
  awbInit(params: P): void;
26
26
  awbRefresh?(params: P): boolean;
27
27
  }
28
+ /**
29
+ * Same contract as {@link ICellRendererNgComp}, for `headerComponent` / `headerCellComponent`.
30
+ * `awbRefresh` runs when the header's sort/filter state changes; without it the params are simply
31
+ * re-delivered.
32
+ */
33
+ interface IHeaderNgComp<P extends HeaderComponentParams = HeaderComponentParams> {
34
+ awbInit(params: P): void;
35
+ awbRefresh?(params: P): boolean;
36
+ }
28
37
  /** Angular component contract for a regular set-filter value label. */
29
38
  interface ISetFilterValueNgComp<P extends SetFilterValueComponentParams = SetFilterValueComponentParams> {
30
39
  awbInit(params: P): void;
@@ -57,7 +66,7 @@ interface ICellEditorNgComp<P extends ICellEditorParams = ICellEditorParams> {
57
66
  /** Return true to abort opening the editor. */
58
67
  isCancelBeforeStart?(): boolean;
59
68
  }
60
- /** An Angular component class usable as a cell renderer / tooltip / ActionFrame / editor. */
69
+ /** An Angular component class usable as a cell renderer / tooltip / ActionFrame / editor / header. */
61
70
  type NgComponent = Type<unknown>;
62
71
  type NgFilterParams = Omit<FilterParams, "valueComponent" | "selectAllComponent" | "blanksComponent" | "groupComponent"> & {
63
72
  valueComponent?: SetFilterValueComponent | NgComponent;
@@ -74,17 +83,20 @@ type NgRowPresentation = Omit<RowPresentation, "tooltip"> & {
74
83
  type NgGetRowPresentation = (params: RowPresentationParams) => NgRowPresentation | null | undefined;
75
84
  /**
76
85
  * Angular-aware column definition: identical to the core {@link ColDef}, but every component slot
77
- * (cellRenderer, cellEditor, tooltipComponent, headerTooltip, actionFrameComponent) may also be an
86
+ * (cellRenderer, cellEditor, tooltipComponent, headerTooltip, actionFrameComponent, headerComponent,
87
+ * headerCellComponent, and the set-filter components in filterParams) may also be an
78
88
  * Angular component class. Angular components are wrapped in core adapter classes; core renderer
79
89
  * classes and string aliases pass through unchanged.
80
90
  */
81
- type NgColDef = Omit<ColDef, "cellRenderer" | "cellEditor" | "children" | "tooltipComponent" | "headerTooltip" | "actionFrameComponent" | "filterParams"> & {
82
- cellRenderer?: CellRenderer | NgComponent;
91
+ type NgColDef = Omit<ColDef, "cellRenderer" | "cellEditor" | "children" | "tooltipComponent" | "headerTooltip" | "actionFrameComponent" | "filterParams" | "headerComponent" | "headerCellComponent"> & {
92
+ cellRenderer?: CellRenderer | CellRendererAlias | NgComponent;
83
93
  cellEditor?: CellEditor | NgComponent;
84
94
  tooltipComponent?: TooltipComponent | NgComponent;
85
95
  headerTooltip?: string | TooltipComponent | NgComponent;
86
96
  actionFrameComponent?: ActionFrameComponent | NgComponent;
87
97
  filterParams?: NgFilterParams;
98
+ headerComponent?: HeaderComponent | NgComponent;
99
+ headerCellComponent?: HeaderComponent | NgComponent;
88
100
  children?: NgColDef[];
89
101
  };
90
102
  /**
@@ -93,6 +105,12 @@ type NgColDef = Omit<ColDef, "cellRenderer" | "cellEditor" | "children" | "toolt
93
105
  * `DefaultColDef`, but its component fields may be Angular components.
94
106
  */
95
107
  type NgDefaultColDef = Omit<NgColDef, (typeof NON_DEFAULTABLE_COLDEF_KEYS)[number]>;
108
+ /**
109
+ * Angular-aware shape of the partial column defs the grid layers over a synthesized column
110
+ * (`groupColumnDef`, `pivotResultColumnDef`): a `Partial<NgColDef>`, so component fields may be
111
+ * Angular components.
112
+ */
113
+ type NgPartialColDef = Partial<Omit<NgColDef, "children">>;
96
114
 
97
115
  /**
98
116
  * A menu-item slot in the Angular wrapper: a plain string, a ready-made element, or an
@@ -128,7 +146,7 @@ declare class AwbGrid implements OnDestroy {
128
146
  readonly maxColumnWidth: _angular_core.InputSignal<number | undefined>;
129
147
  readonly pivotMode: _angular_core.InputSignal<boolean | undefined>;
130
148
  readonly pivotColumns: _angular_core.InputSignal<string[] | undefined>;
131
- readonly pivotResultColumnDef: _angular_core.InputSignal<Partial<ColDef> | undefined>;
149
+ readonly pivotResultColumnDef: _angular_core.InputSignal<Partial<Omit<NgColDef, "children">> | undefined>;
132
150
  readonly maxPivotColumns: _angular_core.InputSignal<number | undefined>;
133
151
  readonly pivotColumnMoveMode: _angular_core.InputSignal<"measures" | "free" | undefined>;
134
152
  readonly autosizeColumnsOnDataChange: _angular_core.InputSignal<boolean | undefined>;
@@ -178,13 +196,18 @@ declare class AwbGrid implements OnDestroy {
178
196
  readonly quickFilter: _angular_core.InputSignal<boolean | _agility_workbench_grid.QuickFilterOptions | undefined>;
179
197
  readonly filterDebounceMs: _angular_core.InputSignal<number | undefined>;
180
198
  readonly groupDisplayType: _angular_core.InputSignal<_agility_workbench_grid.GroupDisplayType | undefined>;
181
- readonly groupColumnDef: _angular_core.InputSignal<Partial<ColDef> | undefined>;
199
+ readonly groupColumnDef: _angular_core.InputSignal<Partial<Omit<NgColDef, "children">> | undefined>;
182
200
  readonly groupDefaultExpanded: _angular_core.InputSignal<number | undefined>;
183
201
  readonly groupSortMode: _angular_core.InputSignal<_agility_workbench_grid.GroupSortMode | undefined>;
184
202
  readonly groupRowsSelectable: _angular_core.InputSignal<boolean | undefined>;
203
+ readonly groupSelectsChildren: _angular_core.InputSignal<boolean | undefined>;
204
+ readonly aggFuncs: _angular_core.InputSignal<Record<string, _agility_workbench_grid.AggregateFunction> | undefined>;
185
205
  readonly groupRowsSticky: _angular_core.InputSignal<boolean | undefined>;
186
206
  readonly getGroupChildCount: _angular_core.InputSignal<((row: any) => number | null | undefined) | undefined>;
187
207
  readonly groupChildCount: _angular_core.InputSignal<boolean | _agility_workbench_grid.GroupChildCountGetter | undefined>;
208
+ readonly groupTotalRow: _angular_core.InputSignal<_agility_workbench_grid.GroupTotalRowPosition | undefined>;
209
+ readonly grandTotalRow: _angular_core.InputSignal<_agility_workbench_grid.GroupTotalRowPosition | undefined>;
210
+ readonly groupTotalRowLabel: _angular_core.InputSignal<((params: _agility_workbench_grid.GroupTotalRowLabelParams) => string) | undefined>;
188
211
  readonly treeData: _angular_core.InputSignal<_agility_workbench_grid.TreeDataOptions<any> | undefined>;
189
212
  readonly pinnedTopRowData: _angular_core.InputSignal<any[] | undefined>;
190
213
  readonly pinnedBottomRowData: _angular_core.InputSignal<any[] | undefined>;
@@ -203,6 +226,7 @@ declare class AwbGrid implements OnDestroy {
203
226
  readonly serverSideDataSource: _angular_core.InputSignal<_agility_workbench_grid.IServerSideDataSource | undefined>;
204
227
  readonly serverSideAggregationSource: _angular_core.InputSignal<((request: _agility_workbench_grid.IServerSideAggregationParams) => void | _agility_workbench_grid.IServerSideAggregationResult | Promise<void | _agility_workbench_grid.IServerSideAggregationResult>) | undefined>;
205
228
  readonly serverSideBlockSize: _angular_core.InputSignal<number | undefined>;
229
+ readonly serverSideMaxBlocks: _angular_core.InputSignal<number | undefined>;
206
230
  readonly tooltip: _angular_core.InputSignal<boolean | _agility_workbench_grid.TooltipOptions | undefined>;
207
231
  readonly columnPanel: _angular_core.InputSignal<boolean | _agility_workbench_grid.ColumnPanelOptions | undefined>;
208
232
  readonly toolbar: _angular_core.InputSignal<_agility_workbench_grid.GridToolbarOptions | undefined>;
@@ -258,6 +282,16 @@ declare class AwbGrid implements OnDestroy {
258
282
  readonly cellValueChanged: _angular_core.OutputEmitterRef<CellValueChangedParams>;
259
283
  readonly selectionChanged: _angular_core.OutputEmitterRef<GridEventSelectionChangedParams>;
260
284
  readonly sortChanged: _angular_core.OutputEmitterRef<SortChangedParams>;
285
+ /** Every column layout/model change (core `columnsChanged`); `source` tells UI from API changes. */
286
+ readonly columnsChanged: _angular_core.OutputEmitterRef<GridEventColumnsChangedParams>;
287
+ /** Page, page size or total changes (core `paginationChanged`), with `getPaginationInfo()`. */
288
+ readonly paginationChanged: _angular_core.OutputEmitterRef<GridEventPaginationChangedParams>;
289
+ /**
290
+ * A failed row-model request (core `error`). Not named `error`: Angular binds `(error)` on the
291
+ * host as a native DOM listener as well as to the output, so any `error` event dispatched on
292
+ * `<awb-grid>` would reach the handler too, as a plain `Event`.
293
+ */
294
+ readonly gridError: _angular_core.OutputEmitterRef<GridEventErrorParams>;
261
295
  readonly filterChanged: _angular_core.OutputEmitterRef<GridEventFilterChangedParams>;
262
296
  readonly quickFilterFindChanged: _angular_core.OutputEmitterRef<GridEventQuickFilterFindChangedParams>;
263
297
  readonly historyChanged: _angular_core.OutputEmitterRef<GridEventHistoryChangedParams>;
@@ -280,6 +314,13 @@ declare class AwbGrid implements OnDestroy {
280
314
  * rebuild UI on re-application skip their first run via `keyedEffect`.
281
315
  */
282
316
  private startSyncEffects;
317
+ /**
318
+ * Development only. Creation-only inputs are read once, by createGrid; a later change to one is
319
+ * ignored. Instead of letting that change vanish silently, warn once per input (per grid
320
+ * instance), comparing against the value the grid was created with. The input list is core's
321
+ * creation-only key list, intersected with the inputs this component declares.
322
+ */
323
+ private startCreationOnlyWarnings;
283
324
  /**
284
325
  * Effect helper: `read` runs tracked (signal reads register dependencies) and returns the core
285
326
  * call to make, or null to skip; the call itself runs outside the Angular zone so core-side
@@ -295,8 +336,8 @@ declare class AwbGrid implements OnDestroy {
295
336
  */
296
337
  private keyedEffect;
297
338
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AwbGrid, never>;
298
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AwbGrid, "awb-grid", ["awbGrid"], { "rowData": { "alias": "rowData"; "required": false; "isSignal": true; }; "columnDefs": { "alias": "columnDefs"; "required": false; "isSignal": true; }; "defaultColDef": { "alias": "defaultColDef"; "required": false; "isSignal": true; }; "headerHeight": { "alias": "headerHeight"; "required": false; "isSignal": true; }; "leafHeaderHeight": { "alias": "leafHeaderHeight"; "required": false; "isSignal": true; }; "parentHeaderHeight": { "alias": "parentHeaderHeight"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "overscanRowCount": { "alias": "overscanRowCount"; "required": false; "isSignal": true; }; "minResizeWidth": { "alias": "minResizeWidth"; "required": false; "isSignal": true; }; "maxColumnWidth": { "alias": "maxColumnWidth"; "required": false; "isSignal": true; }; "pivotMode": { "alias": "pivotMode"; "required": false; "isSignal": true; }; "pivotColumns": { "alias": "pivotColumns"; "required": false; "isSignal": true; }; "pivotResultColumnDef": { "alias": "pivotResultColumnDef"; "required": false; "isSignal": true; }; "maxPivotColumns": { "alias": "maxPivotColumns"; "required": false; "isSignal": true; }; "pivotColumnMoveMode": { "alias": "pivotColumnMoveMode"; "required": false; "isSignal": true; }; "autosizeColumnsOnDataChange": { "alias": "autosizeColumnsOnDataChange"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "rowIdKey": { "alias": "rowIdKey"; "required": false; "isSignal": true; }; "rowDataMode": { "alias": "rowDataMode"; "required": false; "isSignal": true; }; "asyncTransactionWaitMs": { "alias": "asyncTransactionWaitMs"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "columnHover": { "alias": "columnHover"; "required": false; "isSignal": true; }; "zebraRows": { "alias": "zebraRows"; "required": false; "isSignal": true; }; "getRowClass": { "alias": "getRowClass"; "required": false; "isSignal": true; }; "getRowStyle": { "alias": "getRowStyle"; "required": false; "isSignal": true; }; "getRowPresentation": { "alias": "getRowPresentation"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "highlightActiveCell": { "alias": "highlightActiveCell"; "required": false; "isSignal": true; }; "rowNumbers": { "alias": "rowNumbers"; "required": false; "isSignal": true; }; "showColumnButtonsOnHover": { "alias": "showColumnButtonsOnHover"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "icons": { "alias": "icons"; "required": false; "isSignal": true; }; "suppressStyleInjection": { "alias": "suppressStyleInjection"; "required": false; "isSignal": true; }; "styleNonce": { "alias": "styleNonce"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "isRowSelectable": { "alias": "isRowSelectable"; "required": false; "isSignal": true; }; "cellSelection": { "alias": "cellSelection"; "required": false; "isSignal": true; }; "rangeSelection": { "alias": "rangeSelection"; "required": false; "isSignal": true; }; "fillHandle": { "alias": "fillHandle"; "required": false; "isSignal": true; }; "columnSelection": { "alias": "columnSelection"; "required": false; "isSignal": true; }; "headerKeyboardNavigation": { "alias": "headerKeyboardNavigation"; "required": false; "isSignal": true; }; "selectAllRowsOnHeaderClick": { "alias": "selectAllRowsOnHeaderClick"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "selectionPersistence": { "alias": "selectionPersistence"; "required": false; "isSignal": true; }; "clearSelectionOnBodyClick": { "alias": "clearSelectionOnBodyClick"; "required": false; "isSignal": true; }; "editTrigger": { "alias": "editTrigger"; "required": false; "isSignal": true; }; "onBeforeCellCommit": { "alias": "onBeforeCellCommit"; "required": false; "isSignal": true; }; "fillOperation": { "alias": "fillOperation"; "required": false; "isSignal": true; }; "readOnlyEdit": { "alias": "readOnlyEdit"; "required": false; "isSignal": true; }; "pinnedRowsEditable": { "alias": "pinnedRowsEditable"; "required": false; "isSignal": true; }; "suppressKeyboardEdit": { "alias": "suppressKeyboardEdit"; "required": false; "isSignal": true; }; "suppressTypeToEdit": { "alias": "suppressTypeToEdit"; "required": false; "isSignal": true; }; "moveAfterEdit": { "alias": "moveAfterEdit"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "reevaluateOnEdit": { "alias": "reevaluateOnEdit"; "required": false; "isSignal": true; }; "undoLimit": { "alias": "undoLimit"; "required": false; "isSignal": true; }; "initialSort": { "alias": "initialSort"; "required": false; "isSignal": true; }; "showSortPriority": { "alias": "showSortPriority"; "required": false; "isSignal": true; }; "quickFilter": { "alias": "quickFilter"; "required": false; "isSignal": true; }; "filterDebounceMs": { "alias": "filterDebounceMs"; "required": false; "isSignal": true; }; "groupDisplayType": { "alias": "groupDisplayType"; "required": false; "isSignal": true; }; "groupColumnDef": { "alias": "groupColumnDef"; "required": false; "isSignal": true; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; "isSignal": true; }; "groupSortMode": { "alias": "groupSortMode"; "required": false; "isSignal": true; }; "groupRowsSelectable": { "alias": "groupRowsSelectable"; "required": false; "isSignal": true; }; "groupRowsSticky": { "alias": "groupRowsSticky"; "required": false; "isSignal": true; }; "getGroupChildCount": { "alias": "getGroupChildCount"; "required": false; "isSignal": true; }; "groupChildCount": { "alias": "groupChildCount"; "required": false; "isSignal": true; }; "treeData": { "alias": "treeData"; "required": false; "isSignal": true; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; "isSignal": true; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; "isSignal": true; }; "isRowPinned": { "alias": "isRowPinned"; "required": false; "isSignal": true; }; "rowPinningMenu": { "alias": "rowPinningMenu"; "required": false; "isSignal": true; }; "rowInsertionMenu": { "alias": "rowInsertionMenu"; "required": false; "isSignal": true; }; "isFullWidthRow": { "alias": "isFullWidthRow"; "required": false; "isSignal": true; }; "fullWidthCellRenderer": { "alias": "fullWidthCellRenderer"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationControls": { "alias": "paginationControls"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizes": { "alias": "pageSizes"; "required": false; "isSignal": true; }; "resetPageOn": { "alias": "resetPageOn"; "required": false; "isSignal": true; }; "paginationUnknownTotalTooltip": { "alias": "paginationUnknownTotalTooltip"; "required": false; "isSignal": true; }; "rowModelType": { "alias": "rowModelType"; "required": false; "isSignal": true; }; "serverSideDataSource": { "alias": "serverSideDataSource"; "required": false; "isSignal": true; }; "serverSideAggregationSource": { "alias": "serverSideAggregationSource"; "required": false; "isSignal": true; }; "serverSideBlockSize": { "alias": "serverSideBlockSize"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "columnPanel": { "alias": "columnPanel"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "savedViews": { "alias": "savedViews"; "required": false; "isSignal": true; }; "sheets": { "alias": "sheets"; "required": false; "isSignal": true; }; "allowExportAsCSV": { "alias": "allowExportAsCSV"; "required": false; "isSignal": true; }; "allowExportAsExcel": { "alias": "allowExportAsExcel"; "required": false; "isSignal": true; }; "cellFlashDuration": { "alias": "cellFlashDuration"; "required": false; "isSignal": true; }; "cellFadeDuration": { "alias": "cellFadeDuration"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; "isSignal": true; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; "isSignal": true; }; "pivotNoValuesMessage": { "alias": "pivotNoValuesMessage"; "required": false; "isSignal": true; }; "pivotEmptyMessage": { "alias": "pivotEmptyMessage"; "required": false; "isSignal": true; }; "getColumnMenuItems": { "alias": "getColumnMenuItems"; "required": false; "isSignal": true; }; "bodyContextMenu": { "alias": "bodyContextMenu"; "required": false; "isSignal": true; }; "multiColumnMenu": { "alias": "multiColumnMenu"; "required": false; "isSignal": true; }; }, { "gridReady": "gridReady"; "cellClicked": "cellClicked"; "rowClicked": "rowClicked"; "cellDoubleClicked": "cellDoubleClicked"; "rowDoubleClicked": "rowDoubleClicked"; "cellValueChanged": "cellValueChanged"; "selectionChanged": "selectionChanged"; "sortChanged": "sortChanged"; "filterChanged": "filterChanged"; "quickFilterFindChanged": "quickFilterFindChanged"; "historyChanged": "historyChanged"; }, never, never, true, never>;
339
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AwbGrid, "awb-grid", ["awbGrid"], { "rowData": { "alias": "rowData"; "required": false; "isSignal": true; }; "columnDefs": { "alias": "columnDefs"; "required": false; "isSignal": true; }; "defaultColDef": { "alias": "defaultColDef"; "required": false; "isSignal": true; }; "headerHeight": { "alias": "headerHeight"; "required": false; "isSignal": true; }; "leafHeaderHeight": { "alias": "leafHeaderHeight"; "required": false; "isSignal": true; }; "parentHeaderHeight": { "alias": "parentHeaderHeight"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "overscanRowCount": { "alias": "overscanRowCount"; "required": false; "isSignal": true; }; "minResizeWidth": { "alias": "minResizeWidth"; "required": false; "isSignal": true; }; "maxColumnWidth": { "alias": "maxColumnWidth"; "required": false; "isSignal": true; }; "pivotMode": { "alias": "pivotMode"; "required": false; "isSignal": true; }; "pivotColumns": { "alias": "pivotColumns"; "required": false; "isSignal": true; }; "pivotResultColumnDef": { "alias": "pivotResultColumnDef"; "required": false; "isSignal": true; }; "maxPivotColumns": { "alias": "maxPivotColumns"; "required": false; "isSignal": true; }; "pivotColumnMoveMode": { "alias": "pivotColumnMoveMode"; "required": false; "isSignal": true; }; "autosizeColumnsOnDataChange": { "alias": "autosizeColumnsOnDataChange"; "required": false; "isSignal": true; }; "getRowId": { "alias": "getRowId"; "required": false; "isSignal": true; }; "rowIdKey": { "alias": "rowIdKey"; "required": false; "isSignal": true; }; "rowDataMode": { "alias": "rowDataMode"; "required": false; "isSignal": true; }; "asyncTransactionWaitMs": { "alias": "asyncTransactionWaitMs"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "columnHover": { "alias": "columnHover"; "required": false; "isSignal": true; }; "zebraRows": { "alias": "zebraRows"; "required": false; "isSignal": true; }; "getRowClass": { "alias": "getRowClass"; "required": false; "isSignal": true; }; "getRowStyle": { "alias": "getRowStyle"; "required": false; "isSignal": true; }; "getRowPresentation": { "alias": "getRowPresentation"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "highlightActiveCell": { "alias": "highlightActiveCell"; "required": false; "isSignal": true; }; "rowNumbers": { "alias": "rowNumbers"; "required": false; "isSignal": true; }; "showColumnButtonsOnHover": { "alias": "showColumnButtonsOnHover"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "icons": { "alias": "icons"; "required": false; "isSignal": true; }; "suppressStyleInjection": { "alias": "suppressStyleInjection"; "required": false; "isSignal": true; }; "styleNonce": { "alias": "styleNonce"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "isRowSelectable": { "alias": "isRowSelectable"; "required": false; "isSignal": true; }; "cellSelection": { "alias": "cellSelection"; "required": false; "isSignal": true; }; "rangeSelection": { "alias": "rangeSelection"; "required": false; "isSignal": true; }; "fillHandle": { "alias": "fillHandle"; "required": false; "isSignal": true; }; "columnSelection": { "alias": "columnSelection"; "required": false; "isSignal": true; }; "headerKeyboardNavigation": { "alias": "headerKeyboardNavigation"; "required": false; "isSignal": true; }; "selectAllRowsOnHeaderClick": { "alias": "selectAllRowsOnHeaderClick"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "selectionPersistence": { "alias": "selectionPersistence"; "required": false; "isSignal": true; }; "clearSelectionOnBodyClick": { "alias": "clearSelectionOnBodyClick"; "required": false; "isSignal": true; }; "editTrigger": { "alias": "editTrigger"; "required": false; "isSignal": true; }; "onBeforeCellCommit": { "alias": "onBeforeCellCommit"; "required": false; "isSignal": true; }; "fillOperation": { "alias": "fillOperation"; "required": false; "isSignal": true; }; "readOnlyEdit": { "alias": "readOnlyEdit"; "required": false; "isSignal": true; }; "pinnedRowsEditable": { "alias": "pinnedRowsEditable"; "required": false; "isSignal": true; }; "suppressKeyboardEdit": { "alias": "suppressKeyboardEdit"; "required": false; "isSignal": true; }; "suppressTypeToEdit": { "alias": "suppressTypeToEdit"; "required": false; "isSignal": true; }; "moveAfterEdit": { "alias": "moveAfterEdit"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "reevaluateOnEdit": { "alias": "reevaluateOnEdit"; "required": false; "isSignal": true; }; "undoLimit": { "alias": "undoLimit"; "required": false; "isSignal": true; }; "initialSort": { "alias": "initialSort"; "required": false; "isSignal": true; }; "showSortPriority": { "alias": "showSortPriority"; "required": false; "isSignal": true; }; "quickFilter": { "alias": "quickFilter"; "required": false; "isSignal": true; }; "filterDebounceMs": { "alias": "filterDebounceMs"; "required": false; "isSignal": true; }; "groupDisplayType": { "alias": "groupDisplayType"; "required": false; "isSignal": true; }; "groupColumnDef": { "alias": "groupColumnDef"; "required": false; "isSignal": true; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; "isSignal": true; }; "groupSortMode": { "alias": "groupSortMode"; "required": false; "isSignal": true; }; "groupRowsSelectable": { "alias": "groupRowsSelectable"; "required": false; "isSignal": true; }; "groupSelectsChildren": { "alias": "groupSelectsChildren"; "required": false; "isSignal": true; }; "aggFuncs": { "alias": "aggFuncs"; "required": false; "isSignal": true; }; "groupRowsSticky": { "alias": "groupRowsSticky"; "required": false; "isSignal": true; }; "getGroupChildCount": { "alias": "getGroupChildCount"; "required": false; "isSignal": true; }; "groupChildCount": { "alias": "groupChildCount"; "required": false; "isSignal": true; }; "groupTotalRow": { "alias": "groupTotalRow"; "required": false; "isSignal": true; }; "grandTotalRow": { "alias": "grandTotalRow"; "required": false; "isSignal": true; }; "groupTotalRowLabel": { "alias": "groupTotalRowLabel"; "required": false; "isSignal": true; }; "treeData": { "alias": "treeData"; "required": false; "isSignal": true; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; "isSignal": true; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; "isSignal": true; }; "isRowPinned": { "alias": "isRowPinned"; "required": false; "isSignal": true; }; "rowPinningMenu": { "alias": "rowPinningMenu"; "required": false; "isSignal": true; }; "rowInsertionMenu": { "alias": "rowInsertionMenu"; "required": false; "isSignal": true; }; "isFullWidthRow": { "alias": "isFullWidthRow"; "required": false; "isSignal": true; }; "fullWidthCellRenderer": { "alias": "fullWidthCellRenderer"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationControls": { "alias": "paginationControls"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizes": { "alias": "pageSizes"; "required": false; "isSignal": true; }; "resetPageOn": { "alias": "resetPageOn"; "required": false; "isSignal": true; }; "paginationUnknownTotalTooltip": { "alias": "paginationUnknownTotalTooltip"; "required": false; "isSignal": true; }; "rowModelType": { "alias": "rowModelType"; "required": false; "isSignal": true; }; "serverSideDataSource": { "alias": "serverSideDataSource"; "required": false; "isSignal": true; }; "serverSideAggregationSource": { "alias": "serverSideAggregationSource"; "required": false; "isSignal": true; }; "serverSideBlockSize": { "alias": "serverSideBlockSize"; "required": false; "isSignal": true; }; "serverSideMaxBlocks": { "alias": "serverSideMaxBlocks"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "columnPanel": { "alias": "columnPanel"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "savedViews": { "alias": "savedViews"; "required": false; "isSignal": true; }; "sheets": { "alias": "sheets"; "required": false; "isSignal": true; }; "allowExportAsCSV": { "alias": "allowExportAsCSV"; "required": false; "isSignal": true; }; "allowExportAsExcel": { "alias": "allowExportAsExcel"; "required": false; "isSignal": true; }; "cellFlashDuration": { "alias": "cellFlashDuration"; "required": false; "isSignal": true; }; "cellFadeDuration": { "alias": "cellFadeDuration"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; "isSignal": true; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; "isSignal": true; }; "pivotNoValuesMessage": { "alias": "pivotNoValuesMessage"; "required": false; "isSignal": true; }; "pivotEmptyMessage": { "alias": "pivotEmptyMessage"; "required": false; "isSignal": true; }; "getColumnMenuItems": { "alias": "getColumnMenuItems"; "required": false; "isSignal": true; }; "bodyContextMenu": { "alias": "bodyContextMenu"; "required": false; "isSignal": true; }; "multiColumnMenu": { "alias": "multiColumnMenu"; "required": false; "isSignal": true; }; }, { "gridReady": "gridReady"; "cellClicked": "cellClicked"; "rowClicked": "rowClicked"; "cellDoubleClicked": "cellDoubleClicked"; "rowDoubleClicked": "rowDoubleClicked"; "cellValueChanged": "cellValueChanged"; "selectionChanged": "selectionChanged"; "sortChanged": "sortChanged"; "columnsChanged": "columnsChanged"; "paginationChanged": "paginationChanged"; "gridError": "gridError"; "filterChanged": "filterChanged"; "quickFilterFindChanged": "quickFilterFindChanged"; "historyChanged": "historyChanged"; }, never, never, true, never>;
299
340
  }
300
341
 
301
342
  export { AwbGrid };
302
- export type { IActionFrameNgComp, ICellEditorNgComp, ICellRendererNgComp, ISetFilterGroupNgComp, ISetFilterSpecialValueNgComp, ISetFilterValueNgComp, ITooltipNgComp, NgColDef, NgComponent, NgDefaultColDef, NgFilterParams, NgGetRowPresentation, NgMenuItem, NgMenuSlot, NgRowPresentation, NgRowTooltipPresentation };
343
+ export type { IActionFrameNgComp, ICellEditorNgComp, ICellRendererNgComp, IHeaderNgComp, ISetFilterGroupNgComp, ISetFilterSpecialValueNgComp, ISetFilterValueNgComp, ITooltipNgComp, NgColDef, NgComponent, NgDefaultColDef, NgFilterParams, NgGetRowPresentation, NgMenuItem, NgMenuSlot, NgPartialColDef, NgRowPresentation, NgRowTooltipPresentation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agility-workbench/angular-grid",
3
- "version": "1.10.1",
3
+ "version": "1.12.0",
4
4
  "description": "Angular bindings for @agility-workbench/grid — a high-performance data grid. Supports Angular 20.3 through 22.",
5
5
  "license": "MIT",
6
6
  "author": "Himanshu M",
@@ -33,7 +33,7 @@
33
33
  "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
34
34
  },
35
35
  "dependencies": {
36
- "@agility-workbench/grid": "^1.10.1",
36
+ "@agility-workbench/grid": "^1.12.0",
37
37
  "tslib": "^2.3.0"
38
38
  },
39
39
  "peerDependencies": {