ag-grid-community 31.3.0 → 31.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,126 @@
1
+ ![AG Grid HTML5 Grid trusted by the community, built for enterprise](./github-banner.png "AG Grid")
2
+
3
+ [![CDNJS](https://img.shields.io/cdnjs/v/ag-grid)](https://cdnjs.com/libraries/ag-grid) [![Github Stars](https://img.shields.io/github/stars/ag-grid/ag-grid?style=social)](https://github.com/ag-grid/ag-grid) [![Twitter](https://img.shields.io/twitter/follow/ag_grid?style=social)](https://twitter.com/ag_grid)
4
+
5
+ | Module | Info |
6
+ | --------------------|------------------:|
7
+ | ag-grid-community | [![npm](https://img.shields.io/npm/dm/ag-grid-community)](https://www.npmjs.com/package/ag-grid-community) <br> [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ag-grid-community&metric=alert_status)](https://sonarcloud.io/dashboard?id=ag-grid-community) <br> |
8
+ | ag-grid-enterprise | [![npm](https://img.shields.io/npm/dm/ag-grid-enterprise)](https://www.npmjs.com/package/ag-grid-enterprise) <br> [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ag-grid-enterprise&metric=alert_status)](https://sonarcloud.io/dashboard?id=ag-grid-enterprise) |
9
+
10
+ # AG Grid
11
+
12
+ AG Grid is a fully-featured and highly customizable JavaScript data grid.
13
+ It delivers [outstanding performance](https://www.ag-grid.com/example?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github), has no third-party dependencies and [integrates smoothly with all major JavaScript frameworks](https://www.ag-grid.com/javascript-data-grid/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github).
14
+
15
+ Here's how our grid looks with multiple filters and grouping enabled:
16
+
17
+ ![Image of AG Grid showing filtering and grouping enabled.](./github-grid-demo.jpg "AG Grid demo")
18
+
19
+ ## Features
20
+
21
+ In addition to the standard set of features you'd expect from any grid:
22
+
23
+ * Column Interactions (resize, reorder, and pin columns)
24
+ * Pagination
25
+ * Sorting
26
+ * Row Selection
27
+
28
+ Here are some of the features that make AG Grid stand out:
29
+
30
+ * Grouping / Aggregation *
31
+ * Accessibility support
32
+ * Custom Filtering
33
+ * In-place Cell Editing
34
+ * Records Lazy Loading *
35
+ * Server-Side Records Operations *
36
+ * Live Stream Updates
37
+ * Hierarchical Data Support & Tree View *
38
+ * Customizable Appearance
39
+ * Customizable Cell Contents
40
+ * State Persistence
41
+ * Keyboard Navigation
42
+ * Data Export to CSV
43
+ * Data Export to Excel *
44
+ * Excel-like Pivoting *
45
+ * Row Reordering
46
+ * Copy / Paste
47
+ * Column Spanning
48
+ * Pinned Rows
49
+ * Full Width Rows
50
+ * Integrated Charting
51
+ * Sparklines
52
+
53
+ \* The features marked with an asterisk are available in the [Enterprise version](https://www.ag-grid.com/license-pricing?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github) only.
54
+
55
+ Check out the [developer documentation](https://www.ag-grid.com/documentation/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github) for a complete list of features or visit [our official docs](https://www.ag-grid.com/features-overview/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github) for tutorials and feature demos.
56
+
57
+ ## Looking for a framework specific solution?
58
+
59
+ * [Get Started with Angular](https://www.ag-grid.com/angular-data-grid/getting-started/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github)
60
+ * [Get Started with React](https://www.ag-grid.com/react-data-grid/getting-started/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github)
61
+ * [Get Started with Vue](https://www.ag-grid.com/vue-data-grid/getting-started/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github)
62
+
63
+ ## Getting started
64
+
65
+ ### Install dependencies
66
+
67
+ ```sh
68
+ $ npm install --save ag-grid-community
69
+ ```
70
+
71
+ ### Add a placeholder to HTML
72
+
73
+ ```html
74
+ <div id="myGrid" style="height: 150px; width: 600px" class="ag-theme-quartz"></div>
75
+ ```
76
+
77
+ ### Import the grid and styles
78
+
79
+ ```js
80
+ import { createGrid } from 'ag-grid-community';
81
+
82
+ import 'ag-grid-community/styles//ag-grid.css';
83
+ import 'ag-grid-community/styles//ag-theme-quartz.css';
84
+ ```
85
+
86
+ ### Set configuration
87
+
88
+ ```js
89
+ const gridOptions = {
90
+ columnDefs: [
91
+ { headerName: 'Make', field: 'make' },
92
+ { headerName: 'Model', field: 'model' },
93
+ { headerName: 'Price', field: 'price' }
94
+ ],
95
+ rowData: [
96
+ { make: 'Toyota', model: 'Celica', price: 35000 },
97
+ { make: 'Ford', model: 'Mondeo', price: 32000 },
98
+ { make: 'Porsche', model: 'Boxster', price: 72000 }
99
+ ]
100
+ };
101
+ ```
102
+
103
+ ### Initialise the grid
104
+
105
+ ```js
106
+ const eGridDiv = document.querySelector('#myGrid');
107
+ const api = createGrid(eGridDiv, gridOptions);
108
+ ```
109
+
110
+ For more information on how to integrate the grid into your project see [Building AG Grid Applications](https://www.ag-grid.com/javascript-data-grid/building/?utm_source=ag-grid-readme&utm_medium=repository&utm_campaign=github).
111
+
112
+ ## Issue Reporting
113
+
114
+ If you have found a bug, please report it in this repository's [issues](https://github.com/ag-grid/ag-grid/issues) section. If you're using the Enterprise version, please use the [private ticketing](https://ag-grid.zendesk.com/) system to do that.
115
+
116
+ ## Asking Questions
117
+
118
+ Look for similar problems on [StackOverflow](https://stackoverflow.com/questions/tagged/ag-grid) using the `ag-grid` tag. If nothing seems related, post a new message there. Please do not use GitHub issues to ask questions.
119
+
120
+ ## Contributing
121
+
122
+ AG Grid is developed by a team of co-located developers in London. If you want to join the team send your application to info@ag-grid.com.
123
+
124
+ ## License
125
+
126
+ This project is licensed under the MIT license. See the [LICENSE file](./LICENSE.txt) for more info.
@@ -1791,7 +1791,7 @@ ImmutableService = __decorateClass([
1791
1791
  ], ImmutableService);
1792
1792
 
1793
1793
  // community-modules/client-side-row-model/src/version.ts
1794
- var VERSION = "31.3.0";
1794
+ var VERSION = "31.3.2";
1795
1795
 
1796
1796
  // community-modules/client-side-row-model/src/clientSideRowModelModule.ts
1797
1797
  var ClientSideRowModelModule = {
@@ -9300,7 +9300,7 @@ var _ComponentUtil = class _ComponentUtil {
9300
9300
  });
9301
9301
  return mergedOptions;
9302
9302
  }
9303
- static processOnChange(changes, api) {
9303
+ static processOnChange(changes, api, isVue) {
9304
9304
  if (!changes) {
9305
9305
  return;
9306
9306
  }
@@ -9313,7 +9313,7 @@ var _ComponentUtil = class _ComponentUtil {
9313
9313
  if (!hasChanges) {
9314
9314
  return;
9315
9315
  }
9316
- api.__internalUpdateGridOptions(gridChanges);
9316
+ api.__internalUpdateGridOptions(gridChanges, true);
9317
9317
  const event = {
9318
9318
  type: Events.EVENT_COMPONENT_STATE_CHANGED
9319
9319
  };
@@ -17865,10 +17865,10 @@ var _RowNode = class _RowNode {
17865
17865
  this.selected = newValue;
17866
17866
  if (this.eventService) {
17867
17867
  this.dispatchLocalEvent(this.createLocalRowEvent(_RowNode.EVENT_ROW_SELECTED));
17868
- const sibling = this.sibling;
17869
- if (sibling && sibling.footer) {
17870
- sibling.dispatchLocalEvent(sibling.createLocalRowEvent(_RowNode.EVENT_ROW_SELECTED));
17871
- }
17868
+ }
17869
+ const sibling = this.sibling;
17870
+ if (sibling && sibling.footer && sibling.eventService) {
17871
+ sibling.dispatchLocalEvent(sibling.createLocalRowEvent(_RowNode.EVENT_ROW_SELECTED));
17872
17872
  }
17873
17873
  const event = __spreadProps(__spreadValues({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED)), {
17874
17874
  event: e || null,
@@ -18259,6 +18259,7 @@ var DragAndDropService = class extends BeanStub {
18259
18259
  this.dragSource = dragSource;
18260
18260
  this.eventLastTime = mouseEvent;
18261
18261
  this.dragItem = this.dragSource.getDragItem();
18262
+ this.lastDropTarget = void 0;
18262
18263
  if (this.dragSource.onDragStarted) {
18263
18264
  this.dragSource.onDragStarted();
18264
18265
  }
@@ -20456,18 +20457,20 @@ var RowDragFeature = class extends BeanStub {
20456
20457
  if (!this.isFromThisGrid(draggingEvent)) {
20457
20458
  return draggingEvent.dragItem.rowNodes || [];
20458
20459
  }
20460
+ const currentNode = draggingEvent.dragItem.rowNode;
20459
20461
  const isRowDragMultiRow = this.gos.get("rowDragMultiRow");
20460
- const selectedNodes = [...this.selectionService.getSelectedNodes()].sort(
20461
- (a, b) => {
20462
- if (a.rowIndex == null || b.rowIndex == null) {
20463
- return 0;
20462
+ if (isRowDragMultiRow) {
20463
+ const selectedNodes = [...this.selectionService.getSelectedNodes()].sort(
20464
+ (a, b) => {
20465
+ if (a.rowIndex == null || b.rowIndex == null) {
20466
+ return 0;
20467
+ }
20468
+ return this.getRowIndexNumber(a) - this.getRowIndexNumber(b);
20464
20469
  }
20465
- return this.getRowIndexNumber(a) - this.getRowIndexNumber(b);
20470
+ );
20471
+ if (selectedNodes.indexOf(currentNode) !== -1) {
20472
+ return selectedNodes;
20466
20473
  }
20467
- );
20468
- const currentNode = draggingEvent.dragItem.rowNode;
20469
- if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {
20470
- return selectedNodes;
20471
20474
  }
20472
20475
  return [currentNode];
20473
20476
  }
@@ -22709,8 +22712,8 @@ var GridApi = class {
22709
22712
  this.gos.updateGridOptions({ options });
22710
22713
  }
22711
22714
  /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */
22712
- __internalUpdateGridOptions(options) {
22713
- this.gos.updateGridOptions({ options, source: "gridOptionsUpdated" });
22715
+ __internalUpdateGridOptions(options, force) {
22716
+ this.gos.updateGridOptions({ options, force, source: "gridOptionsUpdated" });
22714
22717
  }
22715
22718
  deprecatedUpdateGridOption(key, value) {
22716
22719
  warnOnce(`set${key.charAt(0).toUpperCase()}${key.slice(1, key.length)} is deprecated. Please use 'api.setGridOption('${key}', newValue)' or 'api.updateGridOptions({ ${key}: newValue })' instead.`);
@@ -24689,6 +24692,7 @@ var GridBodyScrollFeature = class extends BeanStub {
24689
24692
  const {
24690
24693
  topCenter,
24691
24694
  stickyTopCenter,
24695
+ stickyBottomCenter,
24692
24696
  centerHeader,
24693
24697
  bottomCenter,
24694
24698
  fakeHScrollComp
@@ -24697,6 +24701,7 @@ var GridBodyScrollFeature = class extends BeanStub {
24697
24701
  bottomCenter.setContainerTranslateX(offset);
24698
24702
  topCenter.setContainerTranslateX(offset);
24699
24703
  stickyTopCenter.setContainerTranslateX(offset);
24704
+ stickyBottomCenter.setContainerTranslateX(offset);
24700
24705
  const centerViewport = this.centerRowsCtrl.getViewportElement();
24701
24706
  const isCenterViewportLastHorizontal = this.lastScrollSource[1 /* Horizontal */] === 0 /* Container */;
24702
24707
  scrollLeft = Math.abs(scrollLeft);
@@ -36375,7 +36380,7 @@ var StickyRowFeature = class extends BeanStub {
36375
36380
  if (row.footer) {
36376
36381
  return row.sibling.rowTop + row.sibling.rowHeight - 1;
36377
36382
  }
36378
- if (row.group) {
36383
+ if (row.hasChildren()) {
36379
36384
  return row.rowTop - 1;
36380
36385
  }
36381
36386
  return 0;
@@ -36470,6 +36475,9 @@ var StickyRowFeature = class extends BeanStub {
36470
36475
  const suppressFootersSticky = this.areFooterRowsStickySuppressed();
36471
36476
  const suppressGroupsSticky = this.gos.get("suppressGroupRowsSticky");
36472
36477
  const isRowSticky = (row) => {
36478
+ if (!row.displayed) {
36479
+ return false;
36480
+ }
36473
36481
  if (row.footer) {
36474
36482
  if (suppressFootersSticky === true) {
36475
36483
  return false;
@@ -36483,7 +36491,7 @@ var StickyRowFeature = class extends BeanStub {
36483
36491
  }
36484
36492
  ;
36485
36493
  const alreadySticking = newStickyRows.has(row);
36486
- return !alreadySticking && row.displayed;
36494
+ return !alreadySticking;
36487
36495
  }
36488
36496
  if (row.isExpandable()) {
36489
36497
  if (suppressGroupsSticky === true) {
@@ -36491,7 +36499,7 @@ var StickyRowFeature = class extends BeanStub {
36491
36499
  }
36492
36500
  ;
36493
36501
  const alreadySticking = newStickyRows.has(row);
36494
- return !alreadySticking && row.displayed && row.expanded;
36502
+ return !alreadySticking && row.expanded;
36495
36503
  }
36496
36504
  return false;
36497
36505
  };
@@ -36568,6 +36576,10 @@ var StickyRowFeature = class extends BeanStub {
36568
36576
  const hasBottomUpdated = this.updateStickyRows("bottom");
36569
36577
  return hasTopUpdated || hasBottomUpdated;
36570
36578
  }
36579
+ destroyStickyCtrls() {
36580
+ this.refreshNodesAndContainerHeight("top", /* @__PURE__ */ new Set(), 0);
36581
+ this.refreshNodesAndContainerHeight("bottom", /* @__PURE__ */ new Set(), 0);
36582
+ }
36571
36583
  refreshStickyNode(stickRowNode) {
36572
36584
  const allStickyNodes = /* @__PURE__ */ new Set();
36573
36585
  if (this.stickyTopRowCtrls.some((ctrl) => ctrl.getRowNode() === stickRowNode)) {
@@ -37292,6 +37304,9 @@ var RowRenderer = class extends BeanStub {
37292
37304
  removeAllRowComps() {
37293
37305
  const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
37294
37306
  this.removeRowCtrls(rowIndexesToRemove);
37307
+ if (this.stickyRowFeature) {
37308
+ this.stickyRowFeature.destroyStickyCtrls();
37309
+ }
37295
37310
  }
37296
37311
  getRowsToRecycle() {
37297
37312
  const stubNodeIndexes = [];
@@ -38311,15 +38326,16 @@ var PaginationProxy = class extends BeanStub {
38311
38326
  return;
38312
38327
  }
38313
38328
  this.currentPage = page;
38314
- const event = {
38315
- type: Events.EVENT_MODEL_UPDATED,
38329
+ this.calculatePages();
38330
+ const paginationChangedEvent = {
38331
+ type: Events.EVENT_PAGINATION_CHANGED,
38316
38332
  animate: false,
38317
- keepRenderedRows: false,
38318
38333
  newData: false,
38319
38334
  newPage: true,
38320
- newPageSize: false
38335
+ newPageSize: false,
38336
+ keepRenderedRows: false
38321
38337
  };
38322
- this.onModelUpdated(event);
38338
+ this.eventService.dispatchEvent(paginationChangedEvent);
38323
38339
  }
38324
38340
  getPixelOffset() {
38325
38341
  return this.pixelOffset;
@@ -38458,14 +38474,16 @@ var PaginationProxy = class extends BeanStub {
38458
38474
  if (this.pageSize === oldPageSize) {
38459
38475
  return;
38460
38476
  }
38461
- this.onModelUpdated({
38462
- type: Events.EVENT_MODEL_UPDATED,
38477
+ this.calculatePages();
38478
+ const paginationChangedEvent = {
38479
+ type: Events.EVENT_PAGINATION_CHANGED,
38463
38480
  animate: false,
38464
- keepRenderedRows: false,
38465
38481
  newData: false,
38466
38482
  newPage: false,
38467
- newPageSize: true
38468
- });
38483
+ newPageSize: true,
38484
+ keepRenderedRows: false
38485
+ };
38486
+ this.eventService.dispatchEvent(paginationChangedEvent);
38469
38487
  }
38470
38488
  setPageSize(size, source) {
38471
38489
  const currentSize = this.pageSize;
@@ -38492,15 +38510,16 @@ var PaginationProxy = class extends BeanStub {
38492
38510
  break;
38493
38511
  }
38494
38512
  if (currentSize !== this.pageSize) {
38495
- const event = {
38496
- type: Events.EVENT_MODEL_UPDATED,
38513
+ this.calculatePages();
38514
+ const paginationChangedEvent = {
38515
+ type: Events.EVENT_PAGINATION_CHANGED,
38497
38516
  animate: false,
38498
- keepRenderedRows: false,
38499
38517
  newData: false,
38500
38518
  newPage: false,
38501
- newPageSize: true
38519
+ newPageSize: true,
38520
+ keepRenderedRows: true
38502
38521
  };
38503
- this.onModelUpdated(event);
38522
+ this.eventService.dispatchEvent(paginationChangedEvent);
38504
38523
  }
38505
38524
  }
38506
38525
  calculatePages() {
@@ -38586,7 +38605,7 @@ var PaginationProxy = class extends BeanStub {
38586
38605
  }
38587
38606
  }
38588
38607
  calculatedPagesNotActive() {
38589
- this.setPageSize(this.masterRowCount, "autoCalculated");
38608
+ this.setPageSize(void 0, "autoCalculated");
38590
38609
  this.totalPages = 1;
38591
38610
  this.currentPage = 0;
38592
38611
  this.topDisplayedRowIndex = 0;
@@ -45656,8 +45675,8 @@ var ColumnAnimationService = class extends BeanStub {
45656
45675
  this.getFrameworkOverrides().wrapIncoming(() => {
45657
45676
  window.setTimeout(() => runFuncs(this.executeNextFuncs), 0);
45658
45677
  window.setTimeout(() => {
45659
- runFuncs(this.executeLaterFuncs);
45660
45678
  callback();
45679
+ runFuncs(this.executeLaterFuncs);
45661
45680
  }, 200);
45662
45681
  });
45663
45682
  }
@@ -48592,7 +48611,7 @@ var GridOptionsService = class {
48592
48611
  });
48593
48612
  return newGo;
48594
48613
  }
48595
- updateGridOptions({ options, source = "api" }) {
48614
+ updateGridOptions({ options, force, source = "api" }) {
48596
48615
  const changeSet = { id: GridOptionsService.changeSetId++, properties: [] };
48597
48616
  const events = [];
48598
48617
  Object.entries(options).forEach(([key, value]) => {
@@ -48600,7 +48619,7 @@ var GridOptionsService = class {
48600
48619
  warnOnce(`${key} is an initial property and cannot be updated.`);
48601
48620
  }
48602
48621
  const coercedValue = GridOptionsService.getCoercedValue(key, value);
48603
- const shouldForce = typeof coercedValue === "object" && source === "api";
48622
+ const shouldForce = force || typeof coercedValue === "object" && source === "api";
48604
48623
  const previousValue = this.gridOptions[key];
48605
48624
  if (shouldForce || previousValue !== coercedValue) {
48606
48625
  this.gridOptions[key] = coercedValue;
@@ -52049,7 +52068,7 @@ GridSerializer = __decorateClass([
52049
52068
  ], GridSerializer);
52050
52069
 
52051
52070
  // community-modules/csv-export/src/version.ts
52052
- var VERSION = "31.3.0";
52071
+ var VERSION = "31.3.2";
52053
52072
 
52054
52073
  // community-modules/csv-export/src/csvExportModule.ts
52055
52074
  var CsvExportModule = {
@@ -53355,7 +53374,7 @@ InfiniteRowModel = __decorateClass([
53355
53374
  ], InfiniteRowModel);
53356
53375
 
53357
53376
  // community-modules/infinite-row-model/src/version.ts
53358
- var VERSION = "31.3.0";
53377
+ var VERSION = "31.3.2";
53359
53378
 
53360
53379
  // community-modules/infinite-row-model/src/infiniteRowModelModule.ts
53361
53380
  var InfiniteRowModelModule = {