@adaptabletools/adaptable 18.1.14 → 18.1.15-canary.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 (156) hide show
  1. package/package.json +2 -2
  2. package/src/AdaptableInterfaces/IAdaptable.d.ts +3 -5
  3. package/src/AdaptableOptions/AlertOptions.d.ts +2 -1
  4. package/src/AdaptableOptions/ChartingOptions.d.ts +5 -1
  5. package/src/AdaptableOptions/ColumnFilterOptions.d.ts +5 -1
  6. package/src/AdaptableOptions/DashboardOptions.d.ts +5 -1
  7. package/src/AdaptableOptions/FlashingCellOptions.d.ts +5 -1
  8. package/src/AdaptableOptions/LayoutOptions.d.ts +5 -1
  9. package/src/AdaptableOptions/NotificationsOptions.d.ts +6 -2
  10. package/src/AdaptableOptions/SettingsPanelOptions.d.ts +5 -1
  11. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  12. package/src/Api/ChartingApi.d.ts +2 -2
  13. package/src/Api/ColumnApi.d.ts +6 -0
  14. package/src/Api/ConfigApi.d.ts +22 -2
  15. package/src/Api/Events/LiveDataChanged.d.ts +1 -1
  16. package/src/Api/Implementation/AdaptableApiImpl.d.ts +1 -1
  17. package/src/Api/Implementation/ChartingApiImpl.d.ts +1 -1
  18. package/src/Api/Implementation/ChartingApiImpl.js +2 -2
  19. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -0
  20. package/src/Api/Implementation/ColumnApiImpl.js +3 -0
  21. package/src/Api/Implementation/ConfigApiImpl.d.ts +4 -1
  22. package/src/Api/Implementation/ConfigApiImpl.js +16 -1
  23. package/src/Api/Implementation/EntitlementApiImpl.d.ts +4 -1
  24. package/src/Api/Implementation/EntitlementApiImpl.js +31 -6
  25. package/src/Api/Implementation/ExportApiImpl.js +5 -7
  26. package/src/Api/Implementation/GridApiImpl.js +1 -1
  27. package/src/Api/Implementation/TeamSharingApiImpl.js +2 -6
  28. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -6
  29. package/src/Api/Internal/AdaptableInternalApi.js +5 -11
  30. package/src/Api/Internal/EntitlementInternalApi.d.ts +4 -0
  31. package/src/Api/Internal/EntitlementInternalApi.js +11 -0
  32. package/src/Api/Internal/ExportInternalApi.d.ts +33 -8
  33. package/src/Api/Internal/ExportInternalApi.js +576 -5
  34. package/src/Api/Internal/NamedQueryInternalApi.d.ts +0 -1
  35. package/src/Api/Internal/NamedQueryInternalApi.js +0 -4
  36. package/src/PredefinedConfig/AdaptableState.d.ts +0 -5
  37. package/src/PredefinedConfig/Common/FilterActionOnDataChange.d.ts +2 -1
  38. package/src/PredefinedConfig/StyledColumnState.d.ts +1 -1
  39. package/src/Redux/ActionsReducers/GridRedux.d.ts +6 -6
  40. package/src/Redux/ActionsReducers/GridRedux.js +8 -8
  41. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +3 -3
  42. package/src/Redux/ActionsReducers/LayoutRedux.js +9 -9
  43. package/src/Redux/ActionsReducers/NamedQueryRedux.d.ts +1 -1
  44. package/src/Redux/ActionsReducers/NamedQueryRedux.js +1 -1
  45. package/src/Redux/ActionsReducers/PluginsRedux.d.ts +2 -2
  46. package/src/Redux/ActionsReducers/PluginsRedux.js +2 -2
  47. package/src/Redux/Store/AdaptableReduxMerger.js +3 -3
  48. package/src/Redux/Store/AdaptableStore.js +2 -4
  49. package/src/Strategy/AdaptableModuleBase.js +1 -2
  50. package/src/Strategy/ColumnFilterModule.js +1 -2
  51. package/src/Strategy/ExportModule.js +17 -44
  52. package/src/Strategy/FlashingCellModule.js +2 -10
  53. package/src/Strategy/ScheduleModule.js +4 -6
  54. package/src/Strategy/SmartEditModule.js +1 -7
  55. package/src/Strategy/TeamSharingModule.js +2 -2
  56. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.js +1 -1
  57. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +1 -3
  58. package/src/Utilities/Constants/FilterConstants.d.ts +10 -0
  59. package/src/Utilities/Constants/FilterConstants.js +8 -0
  60. package/src/Utilities/Constants/GeneralConstants.d.ts +41 -4
  61. package/src/Utilities/Constants/GeneralConstants.js +42 -3
  62. package/src/Utilities/Defaults/DefaultSettingsPanel.d.ts +0 -2
  63. package/src/Utilities/Defaults/DefaultSettingsPanel.js +0 -5
  64. package/src/Utilities/Extensions/ArrayExtensions.d.ts +14 -0
  65. package/src/Utilities/Extensions/ArrayExtensions.js +65 -0
  66. package/src/Utilities/Extensions/EnumExtensions.d.ts +0 -4
  67. package/src/Utilities/Extensions/EnumExtensions.js +2 -12
  68. package/src/Utilities/Helpers/AdaptableHelper.d.ts +4 -10
  69. package/src/Utilities/Helpers/AdaptableHelper.js +7 -59
  70. package/src/Utilities/Helpers/FormatHelper.d.ts +9 -0
  71. package/src/Utilities/Helpers/FormatHelper.js +26 -14
  72. package/src/Utilities/Helpers/Helper.d.ts +0 -10
  73. package/src/Utilities/Helpers/Helper.js +0 -70
  74. package/src/Utilities/Services/ChartingService.d.ts +2 -2
  75. package/src/Utilities/Services/ChartingService.js +5 -11
  76. package/src/Utilities/Services/ModuleService.js +35 -31
  77. package/src/Utilities/Services/RowEditService.js +1 -6
  78. package/src/Utilities/Services/RowSummaryService.js +2 -2
  79. package/src/Utilities/Services/ValidationService.js +2 -16
  80. package/src/View/Alert/AlertEmptyView.js +1 -2
  81. package/src/View/Charting/ChartingStatusBarPopover.js +1 -2
  82. package/src/View/Charting/useChartingElements.js +1 -1
  83. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +2 -6
  84. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +2 -4
  85. package/src/View/Components/FilterForm/QuickFilterForm.js +2 -12
  86. package/src/View/Components/ModuleValueSelector/index.js +2 -2
  87. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -5
  88. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +1 -3
  89. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +2 -1
  90. package/src/View/Components/Popups/AdaptablePopupAlert.js +1 -7
  91. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +6 -12
  92. package/src/View/Components/ToolPanel/CustomToolPanelContent.js +3 -23
  93. package/src/View/Components/ToolPanel/ToolPanelPopup.js +4 -5
  94. package/src/View/Components/ToolPanel/ToolPanelWrapper.js +1 -3
  95. package/src/View/Components/ValueSelector/index.js +2 -2
  96. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +2 -2
  97. package/src/View/Dashboard/CustomDashboardButton.js +1 -6
  98. package/src/View/Dashboard/CustomToolbar.js +2 -9
  99. package/src/View/Dashboard/Dashboard.js +2 -4
  100. package/src/View/Dashboard/DashboardPopup.js +1 -3
  101. package/src/View/Dashboard/DashboardToolbarFactory.js +1 -2
  102. package/src/View/Dashboard/PinnedToolbarsSelector.js +1 -2
  103. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -3
  104. package/src/View/Export/ExportViewPanel.js +2 -4
  105. package/src/View/Export/Wizard/ReportSummaryWizard.js +2 -6
  106. package/src/View/GridFilter/GridFilterExpressionEditor.js +2 -2
  107. package/src/View/GridFilter/useGridFilterExpressionEditor.js +2 -6
  108. package/src/View/Layout/LayoutViewPanel.js +1 -1
  109. package/src/View/Layout/PivotDetailsPopoup.js +1 -7
  110. package/src/View/Layout/SaveLayoutButton.js +1 -3
  111. package/src/View/Layout/Wizard/sections/AggregationsSection.js +2 -2
  112. package/src/View/Layout/Wizard/sections/ColumnsSection.js +2 -2
  113. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +2 -2
  114. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +2 -2
  115. package/src/View/Layout/Wizard/sections/RowSummarySection.js +2 -2
  116. package/src/View/Layout/Wizard/sections/SortSection.js +2 -2
  117. package/src/View/NamedQuery/Wizard/NamedQueryWizard.js +3 -3
  118. package/src/View/SpecialColumnSettingsWizardStep.js +1 -1
  119. package/src/View/SystemStatus/SystemStatusPopup.js +1 -1
  120. package/src/View/Wizard/OnePageAdaptableWizard.js +2 -2
  121. package/src/agGrid/ActionColumnRenderer.js +8 -22
  122. package/src/agGrid/AdaptableAgGrid.d.ts +5 -7
  123. package/src/agGrid/AdaptableAgGrid.js +153 -145
  124. package/src/agGrid/AgGridAdapter.d.ts +0 -1
  125. package/src/agGrid/AgGridAdapter.js +8 -11
  126. package/src/agGrid/AgGridColumnAdapter.d.ts +3 -1
  127. package/src/agGrid/AgGridColumnAdapter.js +40 -14
  128. package/src/agGrid/BadgeRenderer.js +4 -22
  129. package/src/agGrid/FloatingFilterWrapper.js +21 -0
  130. package/src/agGrid/buildSortedColumnStateForLayout.d.ts +1 -1
  131. package/src/agGrid/buildSortedColumnStateForLayout.js +2 -2
  132. package/src/agGrid/defaultAdaptableOptions.js +35 -30
  133. package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +3 -15
  134. package/src/env.js +2 -2
  135. package/src/metamodel/adaptable.metamodel.d.ts +84 -8
  136. package/src/metamodel/adaptable.metamodel.js +1 -1
  137. package/src/types.d.ts +9 -9
  138. package/tsconfig.esm.tsbuildinfo +1 -1
  139. package/src/Redux/ActionsReducers/QueryRedux.d.ts +0 -10
  140. package/src/Redux/ActionsReducers/QueryRedux.js +0 -20
  141. package/src/Utilities/Helpers/FormatContentHelper.d.ts +0 -22
  142. package/src/Utilities/Helpers/FormatContentHelper.js +0 -34
  143. package/src/Utilities/Services/EntitlementService.d.ts +0 -14
  144. package/src/Utilities/Services/EntitlementService.js +0 -63
  145. package/src/Utilities/Services/Interface/IEntitlementService.d.ts +0 -10
  146. package/src/Utilities/Services/Interface/IEntitlementService.js +0 -1
  147. package/src/Utilities/Services/Interface/IReportService.d.ts +0 -27
  148. package/src/Utilities/Services/Interface/IReportService.js +0 -1
  149. package/src/Utilities/Services/ReportService.d.ts +0 -41
  150. package/src/Utilities/Services/ReportService.js +0 -603
  151. package/src/Utilities/isAdaptableObject.d.ts +0 -2
  152. package/src/Utilities/isAdaptableObject.js +0 -4
  153. package/src/Utilities/reorder.d.ts +0 -1
  154. package/src/Utilities/reorder.js +0 -13
  155. package/src/Utilities/sortWithOrder.d.ts +0 -11
  156. package/src/Utilities/sortWithOrder.js +0 -50
@@ -21,7 +21,6 @@ export declare class AgGridAdapter {
21
21
  * to handle this edge case, we try to extract the AG GridApi from the invocation arguments
22
22
  */
23
23
  grabAgGridApiOnTheFly(args: unknown): void;
24
- getLiveGridOptions(): GridOptions | undefined;
25
24
  updateGridOptions(options: ManagedGridOptions): void;
26
25
  getGridOption<Key extends keyof GridOptions>(key: Key): GridOptions[Key];
27
26
  setGridOption<Key extends ManagedGridOptionKey>(key: Key, value: GridOptions[Key]): void;
@@ -1,4 +1,4 @@
1
- import { GridApi, ModuleRegistry, } from '@ag-grid-community/core';
1
+ import { ModuleRegistry, } from '@ag-grid-community/core';
2
2
  import { ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME, ADAPTABLE_ROW_ACTION_BUTTONS, ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME, } from '../Utilities/Constants/GeneralConstants';
3
3
  import { createUuid } from '../PredefinedConfig/Uuid';
4
4
  import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
@@ -39,23 +39,18 @@ export class AgGridAdapter {
39
39
  * to handle this edge case, we try to extract the AG GridApi from the invocation arguments
40
40
  */
41
41
  grabAgGridApiOnTheFly(args) {
42
- if (this.DANGER_USE_GETTER_gridApi) {
42
+ var _a;
43
+ if (this.DANGER_USE_GETTER_gridApi || this.DANGER_gridApi_from_args) {
43
44
  return;
44
45
  }
45
46
  if (Array.isArray(args) &&
46
47
  args[0] &&
47
48
  typeof args[0].api === 'object' &&
48
- args[0].api instanceof GridApi) {
49
+ // can't ise instanceof operator because gridApi is exported as interface
50
+ typeof ((_a = args[0].api) === null || _a === void 0 ? void 0 : _a.getGridId) === 'function') {
49
51
  this.DANGER_gridApi_from_args = args[0].api;
50
52
  }
51
53
  }
52
- // TODO AFL check if this is still needed if GridAPI offers the `getOption` method
53
- // do NOT ever mutate the returned object!!
54
- getLiveGridOptions() {
55
- var _a, _b;
56
- // @ts-ignore
57
- return (_b = (_a = this.getAgGridApi()) === null || _a === void 0 ? void 0 : _a.gos) === null || _b === void 0 ? void 0 : _b.gridOptions;
58
- }
59
54
  updateGridOptions(options) {
60
55
  var _a;
61
56
  (_a = this.getAgGridApi()) === null || _a === void 0 ? void 0 : _a.updateGridOptions(options);
@@ -80,6 +75,7 @@ export class AgGridAdapter {
80
75
  if (isFilterActive) {
81
76
  // used in particular at init time to show the filter icon correctly
82
77
  for (const colFilter of activeFilters) {
78
+ // AG Grid exposes the Column interface, but we need the AG Column class
83
79
  const agGridCol = this.getAgGridApi().getColumn(colFilter.ColumnId);
84
80
  if (agGridCol) {
85
81
  columnsWithActiveFilters[agGridCol.getColId()] = true;
@@ -91,6 +87,7 @@ export class AgGridAdapter {
91
87
  }
92
88
  }
93
89
  const agFilterModel = this.getAgGridApi().getFilterModel();
90
+ // AG Grid exposes the Column interface, but we need the AG Column class
94
91
  (this.getAgGridApi().getColumns() || []).forEach((col) => {
95
92
  /**
96
93
  * When AG Grid filters are used active state should not be removed for all columns.
@@ -493,7 +490,7 @@ export class AgGridAdapter {
493
490
  }
494
491
  isColumnFilterable(colDef) {
495
492
  // follow agGrid logic which is that ONLY filterable if explicitly set
496
- if (this.adaptableInstance.EntitlementService.getEntitlementAccessLevelForModule(ModuleConstants.ColumnFilterModuleId) == 'Hidden') {
493
+ if (this.adaptableApi.entitlementApi.getEntitlementAccessLevelForModule(ModuleConstants.ColumnFilterModuleId) == 'Hidden') {
497
494
  return false;
498
495
  }
499
496
  return colDef != null && colDef.filter != null && colDef.filter != false;
@@ -1,6 +1,6 @@
1
1
  import { AdaptableAgGrid } from './AdaptableAgGrid';
2
2
  import { ColumnSetupInfo } from './ColumnSetupInfo';
3
- import { ColDef, Column } from '@ag-grid-community/core';
3
+ import { ColDef, ColGroupDef, Column, GridOptions } from '@ag-grid-community/core';
4
4
  import { AdaptableVariant } from '../AdaptableInterfaces/IAdaptable';
5
5
  export declare function getEditorsForColumnTypes(variant: AdaptableVariant): Record<string, ColDef['cellEditor']>;
6
6
  export declare class AgGridColumnAdapter {
@@ -26,6 +26,7 @@ export declare class AgGridColumnAdapter {
26
26
  private setupColumnCellDataType;
27
27
  setupColumnHeader({ col, abColumn }: ColumnSetupInfo): boolean;
28
28
  private setupColumnFilter;
29
+ setupColumnFloatingFilterTemporarily(initialGridOptions: GridOptions): void;
29
30
  private setupColumnFloatingFilter;
30
31
  private setupColumnValueFormatter;
31
32
  private setupColumnEditable;
@@ -54,4 +55,5 @@ export declare class AgGridColumnAdapter {
54
55
  private getAlertCellStyle;
55
56
  private getFlashingCellStyle;
56
57
  private getCellHighlightStyle;
58
+ isColGroupDef(columnDefinition: ColDef | ColGroupDef): columnDefinition is ColGroupDef;
57
59
  }
@@ -10,7 +10,7 @@ import UIHelper from '../View/UIHelper';
10
10
  import { getPercentBarRendererForColumn } from './PercentBarRenderer';
11
11
  import { getBadgeRendererForColumn } from './BadgeRenderer';
12
12
  import Helper from '../Utilities/Helpers/Helper';
13
- import { AdaptableReactNumberEditor, AdaptableNumberEditor } from './editors/AdaptableNumberEditor';
13
+ import { AdaptableNumberEditor, AdaptableReactNumberEditor } from './editors/AdaptableNumberEditor';
14
14
  import { AdaptableDateEditor, AdaptableReactDateEditor } from './editors/AdaptableDateEditor';
15
15
  export function getEditorsForColumnTypes(variant) {
16
16
  return {
@@ -128,14 +128,12 @@ export class AgGridColumnAdapter {
128
128
  const quickSearchStyleClassName = this.adaptableApi.quickSearchApi.getQuickSearchStyle().ClassName;
129
129
  const hasQuickSearchStyleClassName = StringExtensions.IsNotNullOrEmpty(quickSearchStyleClassName);
130
130
  const cellClass = (params) => {
131
- const gridCell = this.adaptableInstance.getGridCellFromRowNode(params.node, abColumn.columnId);
131
+ const gridCell = this.adaptableApi.gridApi.getGridCellFromRowNode(params.node, abColumn.columnId);
132
132
  // if a Visual Data export is in progress, we are interested only in the Excel Style Class
133
133
  if (this.adaptableApi.exportApi.internalApi.isVisualDataExportInProgress()) {
134
134
  const userDefinedCellClass = typeof userCellClass === 'function' ? userCellClass(params) : userCellClass;
135
135
  const cellClassKey = this.getExcelClassNameForCell(colId, gridCell.primaryKeyValue, userDefinedCellClass);
136
- return this.adaptableApi.internalApi
137
- .getReportService()
138
- .getExcelStyleIdForCellClassKey(cellClassKey);
136
+ return this.adaptableApi.exportApi.internalApi.getExcelStyleIdForCellClassKey(cellClassKey);
139
137
  }
140
138
  const isQuickSearchActive = hasQuickSearchStyleClassName && this.isQuickSearchActive(gridCell, params);
141
139
  const editableClassName = this.getEditableCellClass(gridCell, params);
@@ -334,6 +332,16 @@ export class AgGridColumnAdapter {
334
332
  return FilterWrapperFactory(this.adaptableInstance);
335
333
  });
336
334
  }
335
+ setupColumnFloatingFilterTemporarily(initialGridOptions) {
336
+ var _a;
337
+ (_a = initialGridOptions.columnDefs) === null || _a === void 0 ? void 0 : _a.filter((colDef) => !this.isColGroupDef(colDef)).map((colDef) => {
338
+ var _a;
339
+ const isFloatingFilterEnabled = ((_a = initialGridOptions.defaultColDef) === null || _a === void 0 ? void 0 : _a.floatingFilter) || colDef.floatingFilter;
340
+ if (isFloatingFilterEnabled) {
341
+ colDef.floatingFilterComponent = FloatingFilterWrapperFactory(this.adaptableInstance);
342
+ }
343
+ });
344
+ }
337
345
  setupColumnFloatingFilter({ col, colDef }) {
338
346
  const isFloatingFilterDisabled = !colDef.floatingFilter ||
339
347
  !this.adaptableOptions.columnFilterOptions.useAdaptableColumnFiltering;
@@ -361,6 +369,7 @@ export class AgGridColumnAdapter {
361
369
  return;
362
370
  }
363
371
  return (params) => {
372
+ var _a, _b, _c, _d, _e, _f;
364
373
  const { node, value } = params;
365
374
  const mostRelevantFormatColumn = this.adaptableApi.formatColumnApi.internalApi.getMostRelevantFormatColumnForColumn(activeFormatColumnsWithDisplayFormat, abColumn, { node, value });
366
375
  if (!mostRelevantFormatColumn) {
@@ -371,19 +380,37 @@ export class AgGridColumnAdapter {
371
380
  if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'NumberFormatter') {
372
381
  // change the Number format - if the scope allows it
373
382
  if (this.adaptableApi.columnScopeApi.isColumnInNumericScope(abColumn, mostRelevantFormatColumn.Scope)) {
374
- return this.adaptableApi.formatColumnApi.internalApi.getNumberFormattedValue(params.value, params.node, abColumn, options);
383
+ let cellValue = params.value;
384
+ if (typeof ((_a = params.value) === null || _a === void 0 ? void 0 : _a.toNumber) === 'function' &&
385
+ typeof ((_b = params.value) === null || _b === void 0 ? void 0 : _b.toString) === 'function') {
386
+ // aggregation values are wrapped in an AG Grid specific object
387
+ cellValue = params.value.toNumber();
388
+ }
389
+ return this.adaptableApi.formatColumnApi.internalApi.getNumberFormattedValue(cellValue, params.node, abColumn, options);
375
390
  }
376
391
  }
377
392
  if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'DateFormatter') {
378
393
  // change the Date format - if the scope allows it
379
394
  if (this.adaptableApi.columnScopeApi.isColumnInDateScope(abColumn, mostRelevantFormatColumn.Scope)) {
380
- return this.adaptableApi.formatColumnApi.internalApi.getDateFormattedValue(params.value, params.node, abColumn, options);
395
+ let cellValue = params.value;
396
+ if (typeof ((_c = params.value) === null || _c === void 0 ? void 0 : _c.toNumber) === 'function' &&
397
+ typeof ((_d = params.value) === null || _d === void 0 ? void 0 : _d.toString) === 'function') {
398
+ // aggregation values are wrapped in an AG Grid specific object
399
+ cellValue = params.value.toString();
400
+ }
401
+ return this.adaptableApi.formatColumnApi.internalApi.getDateFormattedValue(cellValue, params.node, abColumn, options);
381
402
  }
382
403
  }
383
404
  if (mostRelevantFormatColumn.DisplayFormat.Formatter === 'StringFormatter') {
384
405
  // change the String format - if the scope allows it
385
406
  if (this.adaptableApi.columnScopeApi.isColumnInStringsScope(abColumn, mostRelevantFormatColumn.Scope)) {
386
- return this.adaptableApi.formatColumnApi.internalApi.getStringFormattedValue(params.value, params.node, abColumn, options);
407
+ let cellValue = params.value;
408
+ if (typeof ((_e = params.value) === null || _e === void 0 ? void 0 : _e.toNumber) === 'function' &&
409
+ typeof ((_f = params.value) === null || _f === void 0 ? void 0 : _f.toString) === 'function') {
410
+ // aggregation values are wrapped in an AG Grid specific object
411
+ cellValue = params.value.toString();
412
+ }
413
+ return this.adaptableApi.formatColumnApi.internalApi.getStringFormattedValue(cellValue, params.node, abColumn, options);
387
414
  }
388
415
  }
389
416
  // should NEVER arrive at this line, but just to be sure
@@ -408,12 +435,7 @@ export class AgGridColumnAdapter {
408
435
  return typeof userValue === 'function' ? userValue(params) : userValue;
409
436
  }
410
437
  const gridCell = this.adaptableInstance.getGridCellFromRowNode(params.node, params.column.getColId());
411
- const cellEditableContext = {
412
- gridCell,
413
- adaptableApi: this.adaptableApi,
414
- userName: this.adaptableOptions.userName,
415
- adaptableId: this.adaptableOptions.adaptableId,
416
- };
438
+ const cellEditableContext = Object.assign({ gridCell }, this.adaptableApi.internalApi.buildBaseContext());
417
439
  return cellEditableFn(cellEditableContext);
418
440
  };
419
441
  return editableCallback;
@@ -814,4 +836,8 @@ export class AgGridColumnAdapter {
814
836
  return convertAdaptableStyleToCSS(cellHightlight.highlightStyle);
815
837
  }
816
838
  }
839
+ isColGroupDef(columnDefinition) {
840
+ // @ts-ignore
841
+ return columnDefinition['children'] != null;
842
+ }
817
843
  }
@@ -43,7 +43,7 @@ export const getBadgeRendererForColumn = (badgeStyle, abColumn, api) => {
43
43
  this.renderSingularValues(params, adaptableApi);
44
44
  }
45
45
  }
46
- renderArrayValues(params, adapatableApi) {
46
+ renderArrayValues(params, adaptableApi) {
47
47
  var _a, _b, _c, _d, _e, _f;
48
48
  let badgesConfig = [];
49
49
  if (!Array.isArray(params.value) || params.value.length === 0) {
@@ -53,16 +53,7 @@ export const getBadgeRendererForColumn = (badgeStyle, abColumn, api) => {
53
53
  }
54
54
  for (const value of params.value) {
55
55
  const formattedValue = (_f = (_e = (_d = params.formatValue) === null || _d === void 0 ? void 0 : _d.call(params, value)) !== null && _e !== void 0 ? _e : value) !== null && _f !== void 0 ? _f : '';
56
- const predicateDefHandlerContext = {
57
- value: value,
58
- oldValue: null,
59
- displayValue: params.formatValue,
60
- node: params.node,
61
- column: abColumn,
62
- adaptableApi: adapatableApi,
63
- userName: adapatableApi.optionsApi.getUserName(),
64
- adaptableId: adapatableApi.optionsApi.getAdaptableId(),
65
- };
56
+ const predicateDefHandlerContext = Object.assign({ value: value, oldValue: null, displayValue: params.formatValue, node: params.node, column: abColumn }, adaptableApi.internalApi.buildBaseContext());
66
57
  const badge = api.styledColumnApi.internalApi.getApplicableBadge(badgeStyle, predicateDefHandlerContext);
67
58
  const isNullValue = formattedValue === '' || formattedValue === null || formattedValue === undefined;
68
59
  if (!isNullValue && badge) {
@@ -74,19 +65,10 @@ export const getBadgeRendererForColumn = (badgeStyle, abColumn, api) => {
74
65
  }
75
66
  this.renderBadges(badgesConfig, api, params);
76
67
  }
77
- renderSingularValues(params, adapatableApi) {
68
+ renderSingularValues(params, adaptableApi) {
78
69
  var _a, _b, _c;
79
70
  const formattedValue = (_c = (_b = (_a = params.formatValue) === null || _a === void 0 ? void 0 : _a.call(params, params.value)) !== null && _b !== void 0 ? _b : params.value) !== null && _c !== void 0 ? _c : '';
80
- const predicateDefHandlerContext = {
81
- value: params.value,
82
- oldValue: null,
83
- displayValue: params.formatValue,
84
- node: params.node,
85
- column: abColumn,
86
- adaptableApi: adapatableApi,
87
- userName: adapatableApi.optionsApi.getUserName(),
88
- adaptableId: adapatableApi.optionsApi.getAdaptableId(),
89
- };
71
+ const predicateDefHandlerContext = Object.assign({ value: params.value, oldValue: null, displayValue: params.formatValue, node: params.node, column: abColumn }, adaptableApi.internalApi.buildBaseContext());
90
72
  const badge = api.styledColumnApi.internalApi.getApplicableBadge(badgeStyle, predicateDefHandlerContext);
91
73
  const isNullValue = formattedValue === '' || formattedValue === null || formattedValue === undefined;
92
74
  if (
@@ -29,6 +29,27 @@ export const FloatingFilterWrapperFactory = (adaptable) => {
29
29
  filterContainer.parentElement.parentElement.style.padding = 'var(--ab-space-1)';
30
30
  }
31
31
  }
32
+ if (adaptable.isAgGridInitialising) {
33
+ if (adaptable.variant === 'react') {
34
+ return () => React.createElement(React.Fragment, null);
35
+ }
36
+ return class FloatingFilterStub {
37
+ init(params) {
38
+ this.filterContainer = document.createElement('div');
39
+ }
40
+ getGui() {
41
+ return this.filterContainer;
42
+ }
43
+ destroy() {
44
+ var _a;
45
+ (_a = this.unmountReactRoot) === null || _a === void 0 ? void 0 : _a.call(this);
46
+ this.filterContainer = null;
47
+ }
48
+ onParentModelChanged() {
49
+ // nothing yet
50
+ }
51
+ };
52
+ }
32
53
  if (adaptable.variant === 'react') {
33
54
  return forwardRef(function ReactFloatingFilterWrapper(props, ref) {
34
55
  const colId = props.column.getId();
@@ -3,5 +3,5 @@ import { Layout } from '../types';
3
3
  export declare function buildSortedColumnStateForLayout(params: {
4
4
  columnState: ColumnState[];
5
5
  layout: Layout;
6
- gridOptions: GridOptions;
6
+ groupDisplayType: GridOptions['groupDisplayType'];
7
7
  }): ColumnState[];
@@ -3,9 +3,9 @@ import { getAutoRowGroupColumnIdFor } from '../Api/Internal/ColumnInternalApi';
3
3
  import { isAutoRowGroupColumn } from '../Api/Implementation/ColumnApiImpl';
4
4
  import { sortColumnStateForVisibleColumns } from './sortColumnStateForVisibleColumns';
5
5
  export function buildSortedColumnStateForLayout(params) {
6
- const { columnState, layout, gridOptions } = params;
6
+ const { columnState, layout, groupDisplayType } = params;
7
7
  let visibleColumnList = [...layout.Columns];
8
- const multipleGroupColumns = gridOptions.groupDisplayType === 'multipleColumns';
8
+ const multipleGroupColumns = groupDisplayType === 'multipleColumns';
9
9
  const singleGroupColumn = !multipleGroupColumns;
10
10
  const rowGroupedColumnsIndexes = {};
11
11
  let generatedRowGroupColumnsIds = [];
@@ -1,10 +1,15 @@
1
1
  import * as GeneralConstants from '../Utilities/Constants/GeneralConstants';
2
+ import * as FilterConstants from '../Utilities/Constants/FilterConstants';
2
3
  import UIHelper, { getHexForName, GRAY, GREEN, RED } from '../View/UIHelper';
3
4
  import { EMPTY_ARRAY } from '../Utilities/Constants/GeneralConstants';
4
5
  import { ExportDestination } from '../PredefinedConfig/Common/Enums';
5
6
  import { SystemAlertPredicateIds, SystemBadgeStylePredicateIds, SystemFilterPredicateIds, SystemFlashingCellPredicateIds, SystemFormatColumnPredicateIds, } from '../PredefinedConfig/Common/AdaptablePredicate';
6
7
  import * as ModuleConstants from '../Utilities/Constants/ModuleConstants';
7
8
  import { initPredefinedConfigWithUuids } from '../Utilities/Helpers/AdaptableHelper';
9
+ /**
10
+ * Default Adaptable Options values used if not set by the user
11
+ * Try to avoid any hard coded strings or numbers - use General (or other) Constants files
12
+ */
8
13
  const DefaultAdaptableOptions = {
9
14
  adaptableId: GeneralConstants.ADAPTABLE_ID,
10
15
  adaptableStateKey: undefined,
@@ -18,30 +23,30 @@ const DefaultAdaptableOptions = {
18
23
  cellHighlightDuration: 2000,
19
24
  rowHighlightDuration: 4000,
20
25
  statusbarHighlightDuration: 2000,
21
- dataChangeDetectionPolicy: 'rawValue',
26
+ dataChangeDetectionPolicy: GeneralConstants.RAW_VALUE_DATA_CHANGE_DETECTION_POLICY,
22
27
  actionHandlers: undefined,
23
28
  alertMessageText: undefined,
24
29
  showMissingPrimaryKeyAlert: false,
25
30
  },
26
31
  notificationsOptions: {
27
32
  maxNotifications: 3,
28
- position: 'BottomRight',
29
- duration: 3000,
33
+ position: GeneralConstants.TOAST_POSITIONS_BOTTOM_RIGHT,
34
+ duration: GeneralConstants.NOTIFICATION_DURATION,
30
35
  showProgressBar: false,
31
36
  closeWhenClicked: false,
32
37
  pauseWhenHovering: false,
33
38
  isDraggable: false,
34
- transition: 'Slide',
39
+ transition: GeneralConstants.TOAST_TRANSITIONS_SLIDE,
35
40
  showApplicationIcon: false,
36
41
  showSystemStatusMessageNotifications: false,
37
- maxSystemMessagesInStore: 100,
42
+ maxSystemMessagesInStore: GeneralConstants.NOTIFICATION_MAX_SYSTEM_MESSAGES,
38
43
  },
39
44
  dataImportOptions: {
40
45
  fileHandlers: undefined,
41
46
  },
42
47
  flashingCellOptions: {
43
48
  defaultFlashDuration: 500,
44
- defaultFlashTarget: 'cell',
49
+ defaultFlashTarget: GeneralConstants.FLASHING_TARGET_CELL,
45
50
  defaultDownChangeStyle: {
46
51
  BackColor: getHexForName(RED),
47
52
  },
@@ -68,8 +73,8 @@ const DefaultAdaptableOptions = {
68
73
  calendarOptions: { holidays: undefined },
69
74
  cellSummaryOptions: { cellSummaryOperations: undefined },
70
75
  containerOptions: {
71
- adaptableContainer: 'adaptable',
72
- agGridContainer: 'grid',
76
+ adaptableContainer: GeneralConstants.ADAPTABLE_CONTAINER_ID,
77
+ agGridContainer: GeneralConstants.AG_GRID_CONTAINER_ID,
73
78
  agGridContainerWaitTimeout: 60000,
74
79
  modalContainer: undefined,
75
80
  systemStatusContainer: undefined,
@@ -86,7 +91,7 @@ const DefaultAdaptableOptions = {
86
91
  showQuickSearchInHeader: true,
87
92
  customDashboardButtons: undefined,
88
93
  customToolbars: undefined,
89
- buttonsLocation: 'right',
94
+ buttonsLocation: GeneralConstants.DASHBOARD_BUTTONS_LOCATION_RIGHT,
90
95
  },
91
96
  actionColumnOptions: {
92
97
  actionColumns: undefined,
@@ -115,7 +120,7 @@ const DefaultAdaptableOptions = {
115
120
  smartEditCustomOperations: undefined,
116
121
  },
117
122
  entitlementOptions: {
118
- defaultAccessLevel: 'Full',
123
+ defaultAccessLevel: GeneralConstants.ACCESS_LEVEL_FULL,
119
124
  moduleEntitlements: undefined,
120
125
  },
121
126
  exportOptions: {
@@ -150,7 +155,7 @@ const DefaultAdaptableOptions = {
150
155
  customDisplayFormatters: undefined,
151
156
  },
152
157
  layoutOptions: {
153
- displayRowGroups: 'closed',
158
+ displayRowGroups: GeneralConstants.DISPLAY_ROW_GROUPS_DYNAMIC,
154
159
  autoSaveLayouts: true,
155
160
  autoSizeColumnsInLayout: false,
156
161
  autoSizeColumnsInPivotLayout: false,
@@ -174,7 +179,7 @@ const DefaultAdaptableOptions = {
174
179
  quickFilterOptions: {
175
180
  hideQuickFilterDropdown: undefined,
176
181
  hideQuickFilterInput: undefined,
177
- quickFilterTrigger: 'mouseenter',
182
+ quickFilterTrigger: FilterConstants.FILTER_TRIGGER_MOUSE_ENTER,
178
183
  quickFilterDebounce: 250,
179
184
  quickFilterHeight: null,
180
185
  showQuickFilter: true,
@@ -186,7 +191,7 @@ const DefaultAdaptableOptions = {
186
191
  defaultFilterFormTab: 'Values',
187
192
  },
188
193
  valuesFilterOptions: {
189
- valuesFilterTrigger: 'mouseenter',
194
+ valuesFilterTrigger: FilterConstants.FILTER_TRIGGER_MOUSE_ENTER,
190
195
  sortValuesFilter: false,
191
196
  filterValuesUsingTime: false,
192
197
  showCurrentlyFilteredValuesOnly: false,
@@ -199,17 +204,17 @@ const DefaultAdaptableOptions = {
199
204
  useAdaptableColumnFiltering: true,
200
205
  clearColumnFiltersOnStartUp: false,
201
206
  filterActionOnUserDataChange: {
202
- applyFilter: GeneralConstants.FILTER_ALWAYS,
207
+ applyFilter: FilterConstants.FILTER_ACTION_ALWAYS,
203
208
  throttleDelay: 0,
204
209
  },
205
210
  filterActionOnExternalDataChange: {
206
- applyFilter: GeneralConstants.FILTER_NEVER,
211
+ applyFilter: FilterConstants.FILTER_ACTION_NEVER,
207
212
  throttleDelay: 0,
208
213
  },
209
214
  autoApplyFilter: true,
210
- defaultNumericColumnFilter: 'Equals',
211
- defaultStringColumnFilter: 'Contains',
212
- defaultDateColumnFilter: 'On',
215
+ defaultNumericColumnFilter: FilterConstants.PREDICATE_EQUALS,
216
+ defaultStringColumnFilter: FilterConstants.PREDICATE_CONTAINS,
217
+ defaultDateColumnFilter: FilterConstants.PREDICATE_ON,
213
218
  enableFilterOnSpecialColumns: true,
214
219
  showClearFilterButton: false,
215
220
  showSuspendFilterButton: false,
@@ -233,7 +238,7 @@ const DefaultAdaptableOptions = {
233
238
  runQuickSearchOnRowGroups: true,
234
239
  runQuickSearchOnPivotColumns: true,
235
240
  clearQuickSearchOnStartUp: false,
236
- quickSearchPlaceholder: 'Search',
241
+ quickSearchPlaceholder: GeneralConstants.QUICK_SEARCH_PLACEHOLDER,
237
242
  filterResultsAfterQuickSearch: false,
238
243
  runQuickSearchWithCaseSensitivity: false,
239
244
  runBespokeQuickSearch: undefined,
@@ -262,15 +267,15 @@ const DefaultAdaptableOptions = {
262
267
  alternativeModuleNames: undefined,
263
268
  applicationIcon: undefined,
264
269
  useCustomMacLikeScrollbars: false,
265
- englishVariant: 'GB',
270
+ englishVariant: GeneralConstants.ENGLISH_VARIANT,
266
271
  showLoadingScreen: true,
267
- loadingScreenDelay: 200,
268
- loadingScreenTitle: 'Initialising Grid',
269
- loadingScreenText: 'Retrieving your settings and setting up the grid...',
272
+ loadingScreenDelay: GeneralConstants.LOADING_SCREEN_DELAY,
273
+ loadingScreenTitle: GeneralConstants.LOADING_SCREEN_TITLE,
274
+ loadingScreenText: GeneralConstants.LOADING_SCREEN_TEXT,
270
275
  disableDeleteConfirmation: false,
271
276
  dateInputOptions: {
272
277
  useNativeInput: false,
273
- dateFormat: 'yyyy-MM-dd',
278
+ dateFormat: GeneralConstants.DATE_INPUT_DATE_FORMAT,
274
279
  // locale is not explicitly defaulted to 'en-US' as this is already done by the react-day-picker
275
280
  showWeekNumber: false,
276
281
  showOutsideDays: true,
@@ -294,26 +299,26 @@ const DefaultAdaptableOptions = {
294
299
  activeByDefault: false,
295
300
  showDataChange: undefined,
296
301
  changeHistoryButton: undefined,
297
- showLastDataChangeOnly: true
302
+ showLastDataChangeOnly: true,
298
303
  },
299
304
  settingsPanelOptions: {
300
- popupType: 'window',
305
+ popupType: GeneralConstants.POPUP_TYPE_WINDOW,
301
306
  title: ModuleConstants.SettingsPanelFriendlyName,
302
- icon: 'ConfigurationIcon',
307
+ icon: GeneralConstants.ICON_CONFIGURATION,
303
308
  navigation: {},
304
309
  alwaysShowInDashboard: false,
305
310
  alwaysShowInToolPanel: false,
306
311
  },
307
312
  chartingOptions: {
308
- saveStrategy: 'none',
313
+ saveChartBehaviour: GeneralConstants.SAVE_CHART_BEHAVIOUR_NONE,
309
314
  agGridContainerName: GeneralConstants.AG_GRID_CHART_WINDOW,
310
315
  externalChartingOptions: {},
311
316
  },
312
317
  fdc3Options: {
313
318
  enableLogging: false,
314
319
  actionColumnDefaultConfiguration: {
315
- columnId: 'fdc3ActionColumn',
316
- headerName: 'FDC3 Actions',
320
+ columnId: GeneralConstants.FDC3_ACTION_COLUMN_DEFAULT_COLUMN_ID,
321
+ headerName: GeneralConstants.FDC3_ACTION_COLUMN_DEFAULT_HEADER_NAME,
317
322
  width: 200,
318
323
  resizable: true,
319
324
  movable: false,
@@ -16,25 +16,13 @@ export function AdaptableFormComponentButtons({ formDef, onClick, defaultTone, d
16
16
  });
17
17
  let buttonStyle = api.internalApi.getStyleForButton(button, context
18
18
  ? context
19
- : {
20
- adaptableApi: api,
21
- userName: this.getOptions().userName,
22
- adaptableId: this.getOptions().adaptableId,
23
- });
19
+ : Object.assign({}, api.internalApi.buildBaseContext()));
24
20
  let buttonLabel = api.internalApi.getLabelForButton(button, context
25
21
  ? context
26
- : {
27
- adaptableApi: api,
28
- userName: this.getOptions().userName,
29
- adaptableId: this.getOptions().adaptableId,
30
- });
22
+ : Object.assign({}, api.internalApi.buildBaseContext()));
31
23
  let buttonTooltip = api.internalApi.getTooltipForButton(button, context
32
24
  ? context
33
- : {
34
- adaptableApi: api,
35
- userName: this.getOptions().userName,
36
- adaptableId: this.getOptions().adaptableId,
37
- });
25
+ : Object.assign({}, api.internalApi.buildBaseContext()));
38
26
  return (React.createElement(SimpleButton, { autoFocus: focusFirstButton && index === 0, disabled: disabledButtons[index], key: index, tooltip: buttonTooltip, icon: buttonIcon, tone: (_a = buttonStyle === null || buttonStyle === void 0 ? void 0 : buttonStyle.tone) !== null && _a !== void 0 ? _a : defaultTone, variant: buttonStyle === null || buttonStyle === void 0 ? void 0 : buttonStyle.variant, "data-text": buttonLabel, className: buttonStyle === null || buttonStyle === void 0 ? void 0 : buttonStyle.className, marginLeft: index ? 2 : 0, onClick: () => {
39
27
  onClick(button);
40
28
  } }, buttonLabel));
package/src/env.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export default {
2
2
  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" || '',
3
- PUBLISH_TIMESTAMP: 1722345319339 || Date.now(),
4
- VERSION: "18.1.14" || '--current-version--',
3
+ PUBLISH_TIMESTAMP: 1724081698262 || Date.now(),
4
+ VERSION: "18.1.15-canary.0" || '--current-version--',
5
5
  };