@adaptabletools/adaptable-cjs 20.1.9 → 20.1.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-cjs",
3
- "version": "20.1.9",
3
+ "version": "20.1.11",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -186,6 +186,10 @@ export interface InFilterValueInfo {
186
186
  * How many times the item appears in the column
187
187
  */
188
188
  count?: number;
189
+ /**
190
+ * How many times the item appears in the column in filtered rows
191
+ */
192
+ visibleCount?: number;
189
193
  /**
190
194
  * Whether the item is currently visible in the Grid (i.e. in filtered rows)
191
195
  */
@@ -56,6 +56,7 @@ export interface GridCell<TData = any> {
56
56
  }
57
57
  export interface GridCellWithCount extends GridCell {
58
58
  count: number;
59
+ visibleCount: number;
59
60
  }
60
61
  /**
61
62
  * Lightweight object used for identifying a Cell to be updated
@@ -4,4 +4,5 @@ import { AdaptableModule } from '../../../types';
4
4
  export declare class SettingsPanelApiImpl extends ApiBase implements SettingsPanelApi {
5
5
  openSettingsPanel(moduleName?: AdaptableModule): void;
6
6
  openCustomSettingsPanel(name: string): void;
7
+ closeSettingsPanel(): void;
7
8
  }
@@ -6,17 +6,22 @@ const ApiBase_1 = require("./ApiBase");
6
6
  const PopupRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/PopupRedux"));
7
7
  class SettingsPanelApiImpl extends ApiBase_1.ApiBase {
8
8
  openSettingsPanel(moduleName) {
9
+ if (!moduleName) {
10
+ this.dispatchAction(PopupRedux.PopupShowScreen());
11
+ }
9
12
  const moduleInfo = this.getAdaptableInternalApi()
10
13
  .getModuleService()
11
14
  .getModuleInfoByModule(moduleName);
12
15
  if (!moduleInfo) {
13
- this.logError(`${moduleName} module does not exist`);
14
- return;
16
+ this.logWarn(`${moduleName} module does not exist`);
15
17
  }
16
- this.dispatchAction(PopupRedux.PopupShowScreen(moduleName, moduleInfo.Popup));
18
+ this.dispatchAction(PopupRedux.PopupShowScreen(moduleName, moduleInfo?.Popup));
17
19
  }
18
20
  openCustomSettingsPanel(name) {
19
21
  this.dispatchAction(PopupRedux.PopupShowScreen(null, name));
20
22
  }
23
+ closeSettingsPanel() {
24
+ this.dispatchAction(PopupRedux.PopupHideScreen());
25
+ }
21
26
  }
22
27
  exports.SettingsPanelApiImpl = SettingsPanelApiImpl;
@@ -13,4 +13,8 @@ export interface SettingsPanelApi {
13
13
  * @param name name of Custom Settings Panel to display
14
14
  */
15
15
  openCustomSettingsPanel(name: string): void;
16
+ /**
17
+ * Closes Settings Panel
18
+ */
19
+ closeSettingsPanel(): void;
16
20
  }
@@ -10,16 +10,16 @@ class ChartingService {
10
10
  }
11
11
  onChartModelChange(models, eventType, params) {
12
12
  const allChartDefinitions = this.api.chartingApi.getChartDefinitions();
13
- const currentChartModel = models.find((model) => model.chartId === params.chartId);
14
- const currentChartDefinition = allChartDefinitions.find((chartDefinition) => chartDefinition.Model.chartId === params.chartId);
13
+ const currentChartModel = models.find((model) => model?.chartId === params.chartId);
14
+ const currentChartDefinition = allChartDefinitions.find((chartDefinition) => chartDefinition.Model?.chartId === params.chartId);
15
15
  switch (eventType) {
16
16
  case 'chartCreated':
17
17
  const createParams = params;
18
- if (allChartDefinitions.some((chartDefinition) => chartDefinition.Model.chartId === createParams.chartId)) {
18
+ if (allChartDefinitions.some((chartDefinition) => chartDefinition.Model?.chartId === createParams.chartId)) {
19
19
  // chart already exists
20
20
  }
21
21
  else {
22
- const chartModel = models.find((model) => model.chartId === createParams.chartId);
22
+ const chartModel = models.find((model) => model?.chartId === createParams.chartId);
23
23
  this.saveNewChart(chartModel);
24
24
  }
25
25
  break;
@@ -20,7 +20,7 @@ const useAgChartState = (chartDefinition) => {
20
20
  }, [currentChartModels, chartDefinition]);
21
21
  const closeAlreadyOpenedChartsInContainer = (element) => {
22
22
  const chartModelAlreadyInChartContainer = currentChartModels.find((chartModel) => {
23
- const chartRef = adaptable.api.chartingApi.getChartRef(chartModel.chartId);
23
+ const chartRef = adaptable.api.chartingApi.getChartRef(chartModel?.chartId);
24
24
  return chartRef && element.contains(chartRef.chartElement);
25
25
  });
26
26
  if (chartModelAlreadyInChartContainer) {
@@ -29,19 +29,19 @@ const isScopeValid = ({ Scope }) => {
29
29
  };
30
30
  exports.isScopeValid = isScopeValid;
31
31
  const DATA_TYPES_MAP = {
32
- Date: {
32
+ date: {
33
33
  label: 'Date',
34
34
  value: 'date',
35
35
  },
36
- Number: {
36
+ number: {
37
37
  label: 'Number',
38
38
  value: 'number',
39
39
  },
40
- String: {
40
+ text: {
41
41
  label: 'Text',
42
42
  value: 'text',
43
43
  },
44
- Boolean: {
44
+ boolean: {
45
45
  label: 'Boolean',
46
46
  value: 'boolean',
47
47
  },
@@ -18,7 +18,7 @@ export interface ModuleParams {
18
18
  value?: any;
19
19
  primaryKeyValues?: any[];
20
20
  maxWidth?: number;
21
- source: 'Toolbar' | 'ModuleMenu' | 'ColumnMenu' | 'ContextMenu' | 'ModuleButton' | 'Other';
21
+ source: 'Toolbar' | 'ModuleMenu' | 'ColumnMenu' | 'ContextMenu' | 'ModuleButton' | 'Other' | 'Api';
22
22
  config?: {
23
23
  [key: string]: any;
24
24
  };
@@ -101,6 +101,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
101
101
  private agGridListenerMouseEnter;
102
102
  private agGridListenerMouseLeave;
103
103
  private listenerGlobalSetRowSelection;
104
+ private listenerGlobalChartingChanges;
104
105
  private listenerCellEditingStarted;
105
106
  private listenerFirstDataRendered;
106
107
  private listenerPivotChanged;
@@ -1370,11 +1370,25 @@ You need to define at least one Layout!`);
1370
1370
  ];
1371
1371
  const chartingModule = this.ModuleService.getModuleById('Charting');
1372
1372
  if (chartingModule.isModuleAvailable()) {
1373
- this.agGridAdapter.getAgGridApi().addGlobalListener((type, params) => {
1374
- if (ArrayExtensions_1.default.ContainsItem(eventsThatTriggerChartingChanges, type)) {
1373
+ // We need to break the loop of charting changes for 'chartOptionsChanged', which is triggered by the subsequent agGridApi.updateChart(...)
1374
+ // see #ag_grid_update_chart_loop
1375
+ let lastChartOptionsChangePayload = '';
1376
+ this.listenerGlobalChartingChanges = (type, params) => {
1377
+ if (eventsThatTriggerChartingChanges.includes(type)) {
1378
+ if (type === 'chartOptionsChanged') {
1379
+ // Exclude api and context
1380
+ const { api, context, ...sanitizedParams } = params || {};
1381
+ const eventPayload = JSON.stringify(sanitizedParams);
1382
+ if (eventPayload === lastChartOptionsChangePayload) {
1383
+ // this is a loop, so we ignore it
1384
+ return;
1385
+ }
1386
+ lastChartOptionsChangePayload = eventPayload;
1387
+ }
1375
1388
  this.ChartingService.onChartModelChange(this.getChartModels(), type, params);
1376
1389
  }
1377
- });
1390
+ };
1391
+ this.agGridAdapter.getAgGridApi().addGlobalListener(this.listenerGlobalChartingChanges);
1378
1392
  }
1379
1393
  /**
1380
1394
  * Row and Cell listeners created in 2020
@@ -2194,6 +2208,9 @@ You need to define at least one Layout!`);
2194
2208
  get visible() {
2195
2209
  return gridCell.visible;
2196
2210
  },
2211
+ get visibleCount() {
2212
+ return gridCell.visibleCount;
2213
+ },
2197
2214
  };
2198
2215
  });
2199
2216
  return result;
@@ -2208,6 +2225,9 @@ You need to define at least one Layout!`);
2208
2225
  get visible() {
2209
2226
  return gridCell.visible;
2210
2227
  },
2228
+ get visibleCount() {
2229
+ return gridCell.visibleCount;
2230
+ },
2211
2231
  };
2212
2232
  });
2213
2233
  return result;
@@ -2356,6 +2376,11 @@ You need to define at least one Layout!`);
2356
2376
  return (rowNodesWithSameCellValue.findIndex((pk) => self.isRowNodeAvailableAfterFiltering(pk) === true) !== -1);
2357
2377
  },
2358
2378
  });
2379
+ Object.defineProperty(cellWithCount, 'visibleCount', {
2380
+ get: () => {
2381
+ return rowNodesWithSameCellValue.filter((pk) => self.isRowNodeAvailableAfterFiltering(pk) === true).length;
2382
+ },
2383
+ });
2359
2384
  result.push(cellWithCount);
2360
2385
  });
2361
2386
  return result;
@@ -2620,6 +2645,10 @@ You need to define at least one Layout!`);
2620
2645
  return chartRef;
2621
2646
  }
2622
2647
  updateChart(chart) {
2648
+ if (!chart.Model) {
2649
+ this.logger.consoleError(`Chart definition must have a Model property to be updated: ${chart.Name}`);
2650
+ return;
2651
+ }
2623
2652
  const upgradableProperties = {
2624
2653
  // Only Range charts are supported to be created at run time
2625
2654
  // the other two are pivot & cross-filter
@@ -2629,6 +2658,7 @@ You need to define at least one Layout!`);
2629
2658
  suppressChartRanges: Boolean(chart.Model.suppressChartRanges),
2630
2659
  aggFunc: chart.Model.aggFunc,
2631
2660
  };
2661
+ // see also #ag_grid_update_chart_loop
2632
2662
  this.agGridAdapter.getAgGridApi().updateChart(upgradableProperties);
2633
2663
  }
2634
2664
  getChartModels() {
@@ -2841,6 +2871,9 @@ You need to define at least one Layout!`);
2841
2871
  agGridApi.removeEventListener('cellSelectionChanged', this.listenerCellSelectionChanged);
2842
2872
  agGridApi.removeEventListener('sortChanged', this.listenerSortChanged);
2843
2873
  agGridApi.removeGlobalListener(this.listenerGlobalSetRowSelection);
2874
+ if (this.listenerGlobalChartingChanges) {
2875
+ this.agGridAdapter.getAgGridApi().removeGlobalListener(this.listenerGlobalChartingChanges);
2876
+ }
2844
2877
  this.listenerFirstDataRendered = null;
2845
2878
  this.listenerPivotChanged = null;
2846
2879
  this.listenerCellEditingStarted = null;
@@ -2917,7 +2950,9 @@ You need to define at least one Layout!`);
2917
2950
  }
2918
2951
  this.DANGER_USE_GETTER_adaptableContainerElement = null;
2919
2952
  this.DANGER_USE_GETTER_agGridContainerElement = null;
2953
+ this.debouncedSetSelectedCells?.cancel?.();
2920
2954
  this.debouncedSetSelectedCells = null;
2955
+ this.debouncedSetSelectedRows?.cancel?.();
2921
2956
  this.debouncedSetSelectedRows = null;
2922
2957
  this.adaptableStore?.destroy();
2923
2958
  this.adaptableStore = null;
@@ -6,7 +6,8 @@ const React = tslib_1.__importStar(require("react"));
6
6
  const uuid_1 = require("../utils/uuid");
7
7
  const setZIndexMap = {};
8
8
  const zIndexMap = [];
9
- const BASE_Z_INDEX = 1000;
9
+ // starts with 3000, to be above the default zIndex of the Modal component
10
+ const BASE_Z_INDEX = 3000;
10
11
  /**
11
12
  * Used to facilitate the stacking between multiple opened windows.
12
13
  * When calling 'bringToFront' brings caller to top.
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1749212744534 || Date.now(),
6
- VERSION: "20.1.9" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1749648042668 || Date.now(),
6
+ VERSION: "20.1.11" || '--current-version--',
7
7
  };