@genesislcap/grid-pro 14.151.2-alpha-6dc6e2c.0 → 14.152.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.
Files changed (50) hide show
  1. package/dist/custom-elements.json +245 -73
  2. package/dist/dts/datasource/base.datasource.d.ts +1 -2
  3. package/dist/dts/datasource/base.datasource.d.ts.map +1 -1
  4. package/dist/dts/datasource/server-side.datasource.d.ts.map +1 -1
  5. package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts.map +1 -1
  6. package/dist/dts/grid-pro.d.ts +22 -13
  7. package/dist/dts/grid-pro.d.ts.map +1 -1
  8. package/dist/dts/index.d.ts +1 -0
  9. package/dist/dts/index.d.ts.map +1 -1
  10. package/dist/dts/state-persistence/index.d.ts +4 -0
  11. package/dist/dts/state-persistence/index.d.ts.map +1 -0
  12. package/dist/dts/state-persistence/kv-state.d.ts +15 -0
  13. package/dist/dts/state-persistence/kv-state.d.ts.map +1 -0
  14. package/dist/dts/state-persistence/local-state.d.ts +13 -0
  15. package/dist/dts/state-persistence/local-state.d.ts.map +1 -0
  16. package/dist/dts/state-persistence/state-persistence.d.ts +24 -0
  17. package/dist/dts/state-persistence/state-persistence.d.ts.map +1 -0
  18. package/dist/esm/datasource/base.datasource.js +1 -25
  19. package/dist/esm/datasource/server-side.datasource.js +41 -39
  20. package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.js +65 -61
  21. package/dist/esm/grid-pro.js +104 -114
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/state-persistence/index.js +3 -0
  24. package/dist/esm/state-persistence/kv-state.js +58 -0
  25. package/dist/esm/state-persistence/local-state.js +30 -0
  26. package/dist/esm/state-persistence/state-persistence.js +7 -0
  27. package/dist/grid-pro.api.json +780 -203
  28. package/dist/grid-pro.d.ts +71 -16
  29. package/docs/api/grid-pro.gridpro.applytemplatedefinitions.md +2 -2
  30. package/docs/api/grid-pro.gridpro.getsavedcolumnstate.md +3 -3
  31. package/docs/api/grid-pro.gridpro.md +2 -3
  32. package/docs/api/grid-pro.gridpro.mergeallcolumndefsandstates.md +2 -2
  33. package/docs/api/grid-pro.gridpro.statepersistence.md +11 -0
  34. package/docs/api/grid-pro.kvstoragestatepersistence.getcolumnstate.md +22 -0
  35. package/docs/api/grid-pro.kvstoragestatepersistence.kvstorage.md +11 -0
  36. package/docs/api/grid-pro.kvstoragestatepersistence.md +29 -0
  37. package/docs/api/grid-pro.kvstoragestatepersistence.savecolumnstate.md +23 -0
  38. package/docs/api/grid-pro.kvstoragestatepersistence.session.md +11 -0
  39. package/docs/api/grid-pro.localstoragestatepersistence.getcolumnstate.md +22 -0
  40. package/docs/api/grid-pro.localstoragestatepersistence.md +28 -0
  41. package/docs/api/grid-pro.localstoragestatepersistence.savecolumnstate.md +23 -0
  42. package/docs/api/grid-pro.localstoragestatepersistence.session.md +11 -0
  43. package/docs/api/grid-pro.md +3 -0
  44. package/docs/api/grid-pro.statepersistence.getcolumnstate.md +24 -0
  45. package/docs/api/grid-pro.statepersistence.md +21 -0
  46. package/docs/api/grid-pro.statepersistence.savecolumnstate.md +25 -0
  47. package/docs/api-report.md +42 -11
  48. package/package.json +14 -13
  49. package/docs/api/grid-pro.gridpro.selectedcolid.md +0 -11
  50. package/docs/api/grid-pro.gridpro.selectedrowid.md +0 -11
@@ -0,0 +1,24 @@
1
+ import { ColumnState } from '@ag-grid-community/core';
2
+ /**
3
+ * Represents a state persistence and its capabilities.
4
+ * Provides methods to set and get columns from the storage.
5
+ * @public
6
+ */
7
+ export interface StatePersistence {
8
+ /**
9
+ * Returns the column state for the given key.
10
+ * @public
11
+ */
12
+ getColumnState(persistColumnStateKey: string): Promise<ColumnState[]>;
13
+ /**
14
+ * Saves the column state for the given key.
15
+ * @public
16
+ */
17
+ saveColumnState(persistColumnStateKey: string, columnState: ColumnState[]): Promise<void>;
18
+ }
19
+ /**
20
+ * The DI token for the StatePersistence interface.
21
+ * @internal
22
+ */
23
+ export declare const StatePersistence: import("@microsoft/fast-foundation").InterfaceSymbol<StatePersistence>;
24
+ //# sourceMappingURL=state-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-persistence.d.ts","sourceRoot":"","sources":["../../../src/state-persistence/state-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,cAAc,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE;;;OAGG;IACH,eAAe,CAAC,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3F;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,wEAE5B,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
- import { Events, } from '@ag-grid-community/core';
3
2
  import { DatasourceDefaults } from '@genesislcap/foundation-comms';
4
3
  import { Connect } from '@genesislcap/foundation-comms';
5
- import { attr, DOM, observable } from '@microsoft/fast-element';
4
+ import { attr, observable } from '@microsoft/fast-element';
6
5
  import { FoundationElement } from '@microsoft/fast-foundation';
7
6
  export class GenesisGridDatasourceElement extends FoundationElement {
8
7
  constructor() {
@@ -178,35 +177,12 @@ export class GridProBaseDatasource extends GenesisGridDatasourceElement {
178
177
  this.applyTransactionAsync(this.mapTransaction(agTransaction, [operation]), (changedNodes) => {
179
178
  this.flashAddedCells(changedNodes.add);
180
179
  });
181
- if (this.agGrid.blockScrollingOnContextMenu) {
182
- const listenerEvent = (e) => {
183
- e.results.forEach((result) => {
184
- if (result.add.length || result.remove.length) {
185
- this.setPreviouslySelectedCell();
186
- }
187
- });
188
- };
189
- this.agGrid.gridApi.addEventListener(Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED, listenerEvent);
190
- }
191
180
  }
192
181
  else {
193
182
  const changedNodes = this.applyTransaction(this.mapTransaction(agTransaction, [operation]));
194
183
  this.flashAddedCells(changedNodes.add);
195
- if (this.agGrid.blockScrollingOnContextMenu) {
196
- this.setPreviouslySelectedCell();
197
- }
198
184
  }
199
185
  }
200
- setPreviouslySelectedCell() {
201
- const previouslySelectedRowNode = this.agGrid.gridApi.getRowNode(this.agGrid.selectedRowId);
202
- const previouslySelectedColId = this.agGrid.selectedColId;
203
- if (!previouslySelectedRowNode || !previouslySelectedColId)
204
- return;
205
- DOM.queueUpdate(() => {
206
- this.agGrid.gridApi.setFocusedCell(previouslySelectedRowNode.rowIndex, previouslySelectedColId);
207
- this.agGrid.gridApi.ensureIndexVisible(previouslySelectedRowNode.rowIndex, 'middle');
208
- });
209
- }
210
186
  applyTransaction(agTransaction) {
211
187
  throw new Error('Method not implemented.');
212
188
  }
@@ -374,7 +374,7 @@ let GridProServerSideDatasource = class GridProServerSideDatasource extends Life
374
374
  this.indexes = this.getResourceIndexes(meta.INDEXES);
375
375
  this.originalFieldDef = extractFieldDefinitions(meta);
376
376
  const fieldMetadata = toFieldMetadata(this.originalFieldDef);
377
- const agColumnDefs = this.getAgColumnDefs(fieldMetadata);
377
+ const agColumnDefs = yield this.getAgColumnDefs(fieldMetadata);
378
378
  this.agGrid.gridApi.setColumnDefs(agColumnDefs);
379
379
  const dataserverStream = yield this.createDataserverStream();
380
380
  this.ssrmDatasource = new StreamDatasource({
@@ -483,45 +483,47 @@ let GridProServerSideDatasource = class GridProServerSideDatasource extends Life
483
483
  });
484
484
  }
485
485
  getAgColumnDefs(fieldsMetadata) {
486
- const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
487
- var _a;
488
- const colDefBase = {};
489
- colDefBase.filterParams = getFilterParamsByFieldType(field.type);
490
- switch (field.type) {
491
- case FieldTypeEnum.NUMBER:
492
- colDefBase.cellEditor = GridProRendererTypes.numberEditor;
493
- break;
494
- case FieldTypeEnum.BOOLEAN:
495
- if (this.agGrid.autoCellRendererByType) {
496
- colDefBase.cellRenderer = GridProRendererTypes.boolean;
497
- colDefBase.cellEditor = GridProRendererTypes.boolean;
498
- }
499
- break;
500
- case FieldTypeEnum.DATE:
501
- colDefBase.valueFormatter = dateValueFormatter;
502
- break;
503
- case FieldTypeEnum.DATETIME:
504
- colDefBase.valueFormatter = dateTimeValueFormatter;
505
- break;
506
- case FieldTypeEnum.ENUM:
507
- colDefBase.cellEditor = GridProRendererTypes.selectEditor;
508
- colDefBase.cellEditorParams = {
509
- values: field.enumOptions.map((option) => ({ value: option, label: option })),
510
- valueField: 'value',
511
- labelField: 'label',
512
- };
513
- break;
514
- default:
515
- break;
516
- }
517
- const templateColDef = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
518
- if (this.fields && !this.fields.includes(field.name)) {
519
- return [];
520
- }
521
- return Object.assign(Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type), sortable: [].concat(...this.indexes.values()).includes(field.name) }, colDefBase), templateColDef);
486
+ return __awaiter(this, void 0, void 0, function* () {
487
+ const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
488
+ var _a;
489
+ const colDefBase = {};
490
+ colDefBase.filterParams = getFilterParamsByFieldType(field.type);
491
+ switch (field.type) {
492
+ case FieldTypeEnum.NUMBER:
493
+ colDefBase.cellEditor = GridProRendererTypes.numberEditor;
494
+ break;
495
+ case FieldTypeEnum.BOOLEAN:
496
+ if (this.agGrid.autoCellRendererByType) {
497
+ colDefBase.cellRenderer = GridProRendererTypes.boolean;
498
+ colDefBase.cellEditor = GridProRendererTypes.boolean;
499
+ }
500
+ break;
501
+ case FieldTypeEnum.DATE:
502
+ colDefBase.valueFormatter = dateValueFormatter;
503
+ break;
504
+ case FieldTypeEnum.DATETIME:
505
+ colDefBase.valueFormatter = dateTimeValueFormatter;
506
+ break;
507
+ case FieldTypeEnum.ENUM:
508
+ colDefBase.cellEditor = GridProRendererTypes.selectEditor;
509
+ colDefBase.cellEditorParams = {
510
+ values: field.enumOptions.map((option) => ({ value: option, label: option })),
511
+ valueField: 'value',
512
+ labelField: 'label',
513
+ };
514
+ break;
515
+ default:
516
+ break;
517
+ }
518
+ const templateColDef = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
519
+ if (this.fields && !this.fields.includes(field.name)) {
520
+ return [];
521
+ }
522
+ return Object.assign(Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type), sortable: [].concat(...this.indexes.values()).includes(field.name) }, colDefBase), templateColDef);
523
+ });
524
+ const colDefsMergedWithTemplateDefs = yield this.agGrid.mergeAllColumnDefsAndStates(colDefsFromGenesisData, true);
525
+ return colDefsMergedWithTemplateDefs;
522
526
  });
523
- const colDefsMergedWithTemplateDefs = this.agGrid.mergeAllColumnDefsAndStates(colDefsFromGenesisData, true);
524
- return colDefsMergedWithTemplateDefs;
525
527
  }
526
528
  applyTransaction(agTransaction) {
527
529
  return this.agGrid.gridApi.applyServerSideTransaction(agTransaction);
@@ -197,16 +197,18 @@ let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleM
197
197
  */
198
198
  setRowData(rowData) {
199
199
  var _a;
200
- const preSetColumnDefs = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDefs();
201
- if (!preSetColumnDefs || preSetColumnDefs.length === 0) {
202
- const agColumnDefs = this.getAgColumnDefs(this.datasource.fieldMetadata);
203
- if (agColumnDefs) {
204
- this.agGrid.gridApi.setColumnDefs(agColumnDefs);
200
+ return __awaiter(this, void 0, void 0, function* () {
201
+ const preSetColumnDefs = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDefs();
202
+ if (!preSetColumnDefs || preSetColumnDefs.length === 0) {
203
+ const agColumnDefs = yield this.getAgColumnDefs(this.datasource.fieldMetadata);
204
+ if (agColumnDefs) {
205
+ this.agGrid.gridApi.setColumnDefs(agColumnDefs);
206
+ }
205
207
  }
206
- }
207
- const data = this.rowDataMapper ? this.rowDataMapper(rowData) : rowData;
208
- this.agGrid.gridApi.setRowData(data);
209
- this.requiresFullRowDataAndColDefs = false;
208
+ const data = this.rowDataMapper ? this.rowDataMapper(rowData) : rowData;
209
+ this.agGrid.gridApi.setRowData(data);
210
+ this.requiresFullRowDataAndColDefs = false;
211
+ });
210
212
  }
211
213
  /**
212
214
  * Resets the grid data while keeping columnDefs and sends a DATA_LOGOFF message if it's a stream.
@@ -377,61 +379,63 @@ let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleM
377
379
  }
378
380
  // FUTURE: Work with the field types vs ag grid column def types!
379
381
  getAgColumnDefs(fieldsMetadata) {
380
- const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
381
- var _a;
382
- const colDefBase = {};
383
- colDefBase.filterParams = getFilterParamsByFieldType(field.type);
384
- switch (field.type) {
385
- case FieldTypeEnum.STRING:
386
- colDefBase.cellEditor = GridProRendererTypes.stringEditor;
387
- break;
388
- case FieldTypeEnum.NUMBER:
389
- colDefBase.cellEditor = GridProRendererTypes.numberEditor;
390
- colDefBase.filter = 'agNumberColumnFilter';
391
- break;
392
- case FieldTypeEnum.BOOLEAN:
393
- if (this.agGrid.autoCellRendererByType) {
394
- colDefBase.cellRenderer = GridProRendererTypes.boolean;
395
- colDefBase.cellEditor = GridProRendererTypes.boolean;
396
- }
397
- break;
398
- case FieldTypeEnum.DATE:
399
- colDefBase.valueFormatter = dateValueFormatter;
400
- colDefBase.cellEditor = GridProRendererTypes.dateEditor;
401
- colDefBase.filter = 'agDateColumnFilter';
402
- break;
403
- case FieldTypeEnum.DATETIME:
404
- colDefBase.valueFormatter = dateTimeValueFormatter;
405
- colDefBase.filter = 'agDateColumnFilter';
406
- colDefBase.cellEditor = GridProRendererTypes.dateEditor;
407
- colDefBase.cellEditorParams = {
408
- withTime: true,
409
- };
410
- break;
411
- case FieldTypeEnum.ENUM:
412
- if (field.enumOptions) {
413
- colDefBase.cellEditor = GridProRendererTypes.selectEditor;
382
+ return __awaiter(this, void 0, void 0, function* () {
383
+ const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
384
+ var _a;
385
+ const colDefBase = {};
386
+ colDefBase.filterParams = getFilterParamsByFieldType(field.type);
387
+ switch (field.type) {
388
+ case FieldTypeEnum.STRING:
389
+ colDefBase.cellEditor = GridProRendererTypes.stringEditor;
390
+ break;
391
+ case FieldTypeEnum.NUMBER:
392
+ colDefBase.cellEditor = GridProRendererTypes.numberEditor;
393
+ colDefBase.filter = 'agNumberColumnFilter';
394
+ break;
395
+ case FieldTypeEnum.BOOLEAN:
396
+ if (this.agGrid.autoCellRendererByType) {
397
+ colDefBase.cellRenderer = GridProRendererTypes.boolean;
398
+ colDefBase.cellEditor = GridProRendererTypes.boolean;
399
+ }
400
+ break;
401
+ case FieldTypeEnum.DATE:
402
+ colDefBase.valueFormatter = dateValueFormatter;
403
+ colDefBase.cellEditor = GridProRendererTypes.dateEditor;
404
+ colDefBase.filter = 'agDateColumnFilter';
405
+ break;
406
+ case FieldTypeEnum.DATETIME:
407
+ colDefBase.valueFormatter = dateTimeValueFormatter;
408
+ colDefBase.filter = 'agDateColumnFilter';
409
+ colDefBase.cellEditor = GridProRendererTypes.dateEditor;
414
410
  colDefBase.cellEditorParams = {
415
- values: field.enumOptions.map((option) => ({ value: option, label: option })),
416
- valueField: 'value',
417
- labelField: 'label',
411
+ withTime: true,
418
412
  };
419
- }
420
- else {
421
- logger.warn(`No enumOptions found for field ${field.name}. Default cell editor applied.`);
422
- }
423
- break;
424
- default:
425
- break;
426
- }
427
- const colDefExtras = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
428
- if (this.fields && !this.fields.includes(field.name)) {
429
- return [];
430
- }
431
- return Object.assign(Object.assign({ field: field.name }, colDefBase), colDefExtras);
413
+ break;
414
+ case FieldTypeEnum.ENUM:
415
+ if (field.enumOptions) {
416
+ colDefBase.cellEditor = GridProRendererTypes.selectEditor;
417
+ colDefBase.cellEditorParams = {
418
+ values: field.enumOptions.map((option) => ({ value: option, label: option })),
419
+ valueField: 'value',
420
+ labelField: 'label',
421
+ };
422
+ }
423
+ else {
424
+ logger.warn(`No enumOptions found for field ${field.name}. Default cell editor applied.`);
425
+ }
426
+ break;
427
+ default:
428
+ break;
429
+ }
430
+ const colDefExtras = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
431
+ if (this.fields && !this.fields.includes(field.name)) {
432
+ return [];
433
+ }
434
+ return Object.assign(Object.assign({ field: field.name }, colDefBase), colDefExtras);
435
+ });
436
+ const colDefsMergedWithTemplateDefs = yield this.agGrid.mergeAllColumnDefsAndStates(colDefsFromGenesisData, true);
437
+ return colDefsMergedWithTemplateDefs;
432
438
  });
433
- const colDefsMergedWithTemplateDefs = this.agGrid.mergeAllColumnDefsAndStates(colDefsFromGenesisData, true);
434
- return colDefsMergedWithTemplateDefs;
435
439
  }
436
440
  buildCriteria() {
437
441
  var _a;