@adaptabletools/adaptable 18.0.0-canary.27 → 18.0.0-canary.29

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 (83) hide show
  1. package/base.css +3 -13
  2. package/base.css.map +1 -1
  3. package/index.css +3 -13
  4. package/index.css.map +1 -1
  5. package/package.json +1 -1
  6. package/src/AdaptableOptions/AdaptableFrameworkComponent.d.ts +3 -0
  7. package/src/AdaptableOptions/MenuOptions.d.ts +3 -3
  8. package/src/Api/GridApi.d.ts +4 -1
  9. package/src/Api/Implementation/ColumnApiImpl.js +6 -6
  10. package/src/Api/Implementation/ConfigApiImpl.js +0 -1
  11. package/src/Api/Implementation/ExpressionApiImpl.js +12 -12
  12. package/src/Api/Implementation/GridApiImpl.d.ts +1 -1
  13. package/src/Api/Implementation/GridApiImpl.js +8 -3
  14. package/src/Api/Implementation/ScopeApiImpl.js +4 -4
  15. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +14 -5
  16. package/src/Api/Implementation/UserInterfaceApiImpl.js +26 -4
  17. package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -1
  18. package/src/Api/Internal/AdaptableInternalApi.js +2 -6
  19. package/src/Api/Internal/ColumnFilterInternalApi.js +2 -2
  20. package/src/Api/Internal/DashboardInternalApi.js +2 -2
  21. package/src/Api/Internal/FormatColumnInternalApi.js +11 -5
  22. package/src/Api/Internal/GridFilterInternalApi.d.ts +2 -2
  23. package/src/Api/Internal/GridFilterInternalApi.js +2 -2
  24. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  25. package/src/Api/UserInterfaceApi.d.ts +15 -2
  26. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  27. package/src/PredefinedConfig/Common/Fdc3Intent.d.ts +2 -2
  28. package/src/PredefinedConfig/Common/Menu.d.ts +4 -4
  29. package/src/PredefinedConfig/Common/Menu.js +30 -17
  30. package/src/PredefinedConfig/Common/TransposeConfig.d.ts +3 -3
  31. package/src/PredefinedConfig/FormatColumnState.d.ts +4 -0
  32. package/src/PredefinedConfig/PopupState.d.ts +1 -2
  33. package/src/PredefinedConfig/StyledColumnState.d.ts +5 -0
  34. package/src/PredefinedConfig/SystemState.d.ts +4 -2
  35. package/src/Redux/ActionsReducers/PopupRedux.d.ts +5 -13
  36. package/src/Redux/ActionsReducers/PopupRedux.js +0 -19
  37. package/src/Redux/ActionsReducers/SystemRedux.d.ts +9 -3
  38. package/src/Redux/ActionsReducers/SystemRedux.js +8 -5
  39. package/src/Strategy/ColumnFilterModule.js +1 -1
  40. package/src/Strategy/ColumnInfoModule.js +2 -2
  41. package/src/Strategy/ExportModule.d.ts +0 -1
  42. package/src/Strategy/ExportModule.js +39 -28
  43. package/src/Strategy/GridInfoModule.js +1 -1
  44. package/src/Strategy/LayoutModule.d.ts +1 -8
  45. package/src/Strategy/LayoutModule.js +11 -121
  46. package/src/Strategy/StyledColumnModule.js +14 -10
  47. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +1 -0
  48. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +4 -2
  49. package/src/Utilities/Interface/MessagePopups.d.ts +0 -3
  50. package/src/Utilities/Services/RowSummaryService.d.ts +22 -0
  51. package/src/Utilities/Services/RowSummaryService.js +141 -0
  52. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.d.ts +1 -1
  53. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -2
  54. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -1
  55. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.js +14 -10
  56. package/src/agGrid/AdaptableAgGrid.js +2 -1
  57. package/src/agGrid/AgGridColumnAdapter.js +19 -13
  58. package/src/agGrid/AgGridMenuAdapter.d.ts +6 -0
  59. package/src/agGrid/AgGridMenuAdapter.js +240 -106
  60. package/src/agGrid/BadgeRenderer.js +7 -1
  61. package/src/agGrid/PercentBarRenderer.js +3 -1
  62. package/src/components/CheckBox/index.js +1 -1
  63. package/src/components/ProgressIndicator/ProgressIndicator.js +15 -6
  64. package/src/components/icons/copy.d.ts +3 -0
  65. package/src/components/icons/copy.js +4 -0
  66. package/src/components/icons/filter-off.d.ts +3 -0
  67. package/src/components/icons/filter-off.js +4 -0
  68. package/src/components/icons/grid-info.d.ts +3 -0
  69. package/src/components/icons/grid-info.js +4 -0
  70. package/src/components/icons/index.js +12 -0
  71. package/src/components/icons/select-all.d.ts +3 -0
  72. package/src/components/icons/select-all.js +4 -0
  73. package/src/components/icons/select-fwd.d.ts +3 -0
  74. package/src/components/icons/select-fwd.js +4 -0
  75. package/src/components/icons/select-off.d.ts +3 -0
  76. package/src/components/icons/select-off.js +4 -0
  77. package/src/env.js +2 -2
  78. package/src/metamodel/adaptable.metamodel.js +1 -1
  79. package/src/parser/src/parser.js +1218 -55
  80. package/src/parser/src/predicate/mapQlPredicateToExpression.js +1 -3
  81. package/src/parser/src/types.js +1 -2
  82. package/src/types.d.ts +1 -1
  83. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -44,6 +44,9 @@ export interface CustomRenderContext extends BaseContext {
44
44
  */
45
45
  element: HTMLDivElement;
46
46
  }
47
+ export interface CustomRenderFunction {
48
+ (customRenderContext: CustomRenderContext): string | null;
49
+ }
47
50
  /**
48
51
  * Config used to open a custom window
49
52
  */
@@ -28,7 +28,7 @@ export interface CustomContextMenuContext<TData = any> extends ContextMenuContex
28
28
  /**
29
29
  * Default structure of Adaptable Menu Items
30
30
  */
31
- defaultAdaptableMenuStructure: AdaptableSystemMenuItem[];
31
+ defaultAdaptableMenuStructure: (AdaptableSystemMenuItem | '-')[];
32
32
  }
33
33
  /**
34
34
  * Context info provided when building Custom Column Menus
@@ -45,7 +45,7 @@ export interface CustomColumnMenuContext<TData = any> extends ColumnMenuContext<
45
45
  /**
46
46
  * Default structure of Adaptable Menu Items
47
47
  */
48
- defaultAdaptableMenuStructure: AdaptableSystemMenuItem[];
48
+ defaultAdaptableMenuStructure: (AdaptableSystemMenuItem | '-')[];
49
49
  }
50
50
  /**
51
51
  * Custom Context Menu Item
@@ -167,7 +167,7 @@ export interface MenuOrderContext extends BaseContext {
167
167
  /**
168
168
  * Defines AG Grid Context Menu Items
169
169
  */
170
- export type AgGridContextMenuItemType = 'autoSizeAll' | 'expandAll' | 'contractAll' | 'copy' | 'copyWithHeaders' | 'cut' | 'paste' | 'resetColumns' | 'export' | 'csvExport' | 'excelExport' | 'chartRange' | 'pivotChart';
170
+ export type AgGridContextMenuItemType = 'autoSizeAll' | 'expandAll' | 'contractAll' | 'copy' | 'copyWithHeaders' | 'copyWithGroupHeaders' | 'cut' | 'paste' | 'resetColumns' | 'export' | 'csvExport' | 'excelExport' | 'chartRange' | 'pivotChart';
171
171
  /**
172
172
  * Defines AG Grid Column Menu Items
173
173
  */
@@ -529,5 +529,8 @@ export interface GridApi {
529
529
  * Opens a window with a transposed view of Grid
530
530
  */
531
531
  showTransposedView(transposeConfig?: TransposeConfig): void;
532
- getAllGridColumns(): Column<any>[];
532
+ /**
533
+ * Return all AG Grid columns
534
+ */
535
+ getAllAgGridColumns(): Column<any>[];
533
536
  }
@@ -68,19 +68,19 @@ export class ColumnApiImpl extends ApiBase {
68
68
  return isAutoPivotColumn(columnId);
69
69
  }
70
70
  isCalculatedColumn(columnId) {
71
- return (this.getAdaptableApi().calculatedColumnApi
72
- .getCalculatedColumns()
71
+ return (this.getAdaptableApi()
72
+ .calculatedColumnApi.getCalculatedColumns()
73
73
  .find((cc) => cc.ColumnId == columnId) != null);
74
74
  }
75
75
  isFreeTextColumn(columnId) {
76
- return (this.getAdaptableApi().freeTextColumnApi
77
- .getFreeTextColumns()
76
+ return (this.getAdaptableApi()
77
+ .freeTextColumnApi.getFreeTextColumns()
78
78
  .find((cc) => cc.ColumnId == columnId) != null);
79
79
  }
80
80
  isActionColumn(columnId) {
81
81
  var _a;
82
- return (((_a = this.getAdaptableApi().actionColumnApi
83
- .getActionColumns()) === null || _a === void 0 ? void 0 : _a.find((cc) => cc.columnId == columnId)) != null);
82
+ return (((_a = this.getAdaptableApi()
83
+ .actionColumnApi.getActionColumns()) === null || _a === void 0 ? void 0 : _a.find((cc) => cc.columnId == columnId)) != null);
84
84
  }
85
85
  getColumnWithColumnId(columnId, logWarning) {
86
86
  if (columnId == undefined) {
@@ -135,7 +135,6 @@ export class ConfigApiImpl extends ApiBase {
135
135
  .then(() => {
136
136
  this.adaptable.updateColumnModelAndRefreshGrid({ skipColDefsRefresh: true });
137
137
  this.adaptable.setLayout();
138
- this.getAdaptableApi().userInterfaceApi.hideLoadingScreen();
139
138
  })
140
139
  .then(() => {
141
140
  // resolve main(result) promise
@@ -7,8 +7,8 @@ export class ExpressionApiImpl extends ApiBase {
7
7
  this.internalApi = new ExpressionInternalApi(adaptable);
8
8
  }
9
9
  isValidBooleanExpression(query, module, validationErrorMessage) {
10
- const { isValid, errorMessage } = this.getAdaptableApi().internalApi
11
- .getQueryLanguageService()
10
+ const { isValid, errorMessage } = this.getAdaptableApi()
11
+ .internalApi.getQueryLanguageService()
12
12
  .validateBoolean(query, module, { force: true });
13
13
  if (!isValid && validationErrorMessage) {
14
14
  this.logWarn(`${validationErrorMessage} :: ${errorMessage}`);
@@ -16,8 +16,8 @@ export class ExpressionApiImpl extends ApiBase {
16
16
  return isValid;
17
17
  }
18
18
  isValidObservableExpression(expression, module, validationErrorMessage) {
19
- const { isValid, errorMessage } = this.getAdaptableApi().internalApi
20
- .getQueryLanguageService()
19
+ const { isValid, errorMessage } = this.getAdaptableApi()
20
+ .internalApi.getQueryLanguageService()
21
21
  .validateObservable(expression, module);
22
22
  if (!isValid && validationErrorMessage) {
23
23
  this.logWarn(`${validationErrorMessage} :: ${errorMessage}`);
@@ -25,8 +25,8 @@ export class ExpressionApiImpl extends ApiBase {
25
25
  return isValid;
26
26
  }
27
27
  isValidAggregatedBooleanExpression(expression, module, validationErrorMessage) {
28
- const { isValid, errorMessage } = this.getAdaptableApi().internalApi
29
- .getQueryLanguageService()
28
+ const { isValid, errorMessage } = this.getAdaptableApi()
29
+ .internalApi.getQueryLanguageService()
30
30
  .validateAggregatedBoolean(expression, module);
31
31
  if (!isValid && validationErrorMessage) {
32
32
  this.logWarn(`${validationErrorMessage} :: ${errorMessage}`);
@@ -34,8 +34,8 @@ export class ExpressionApiImpl extends ApiBase {
34
34
  return isValid;
35
35
  }
36
36
  isValidAggregatedScalarExpression(expression, module, validationErrorMessage) {
37
- const { isValid, errorMessage } = this.getAdaptableApi().internalApi
38
- .getQueryLanguageService()
37
+ const { isValid, errorMessage } = this.getAdaptableApi()
38
+ .internalApi.getQueryLanguageService()
39
39
  .validateAggregatedScalar(expression, module);
40
40
  if (!isValid && validationErrorMessage) {
41
41
  this.logWarn(`${validationErrorMessage} :: ${errorMessage}`);
@@ -47,8 +47,8 @@ export class ExpressionApiImpl extends ApiBase {
47
47
  }
48
48
  getColumnsFromExpression(expression) {
49
49
  try {
50
- const columnIds = this.getAdaptableApi().internalApi
51
- .getQueryLanguageService()
50
+ const columnIds = this.getAdaptableApi()
51
+ .internalApi.getQueryLanguageService()
52
52
  .getColumnsFromExpression(expression);
53
53
  columnIds.forEach((columnId) => {
54
54
  const calculatedColumn = this.getAdaptableApi().calculatedColumnApi.getCalculatedColumnForColumnId(columnId);
@@ -79,8 +79,8 @@ export class ExpressionApiImpl extends ApiBase {
79
79
  return ((_d = (_c = (_b = (_a = query.BooleanExpression) !== null && _a !== void 0 ? _a : query.ScalarExpression) !== null && _b !== void 0 ? _b : query.ObservableExpression) !== null && _c !== void 0 ? _c : query.AggregatedBooleanExpression) !== null && _d !== void 0 ? _d : query.AggregatedScalarExpression);
80
80
  }
81
81
  getAdaptableQueryExpressionWithColumnFriendlyNames(query) {
82
- return this.getAdaptableApi().internalApi
83
- .getQueryLanguageService()
82
+ return this.getAdaptableApi()
83
+ .internalApi.getQueryLanguageService()
84
84
  .getExpressionWithColumnFriendlyNames(this.getAdaptableQueryExpression(query));
85
85
  }
86
86
  useCaseSensitivity() {
@@ -134,5 +134,5 @@ export declare class GridApiImpl extends ApiBase implements GridApi {
134
134
  getAgGridRowModelType(): RowModelType;
135
135
  getVisibleRowCount(): number;
136
136
  showTransposedView(transposeConfig?: TransposeConfig): void;
137
- getAllGridColumns(): Column<any>[];
137
+ getAllAgGridColumns(): Column<any>[];
138
138
  }
@@ -15,6 +15,11 @@ export class GridApiImpl extends ApiBase {
15
15
  return this.getAdaptableState().Grid;
16
16
  }
17
17
  loadGridData(dataSource) {
18
+ // we intentionally set an initial empty array,
19
+ // to prevent `cellchanged` events from being triggered for rows that have
20
+ // the same primary key with existing rows
21
+ // see #testprevent_cellchanged_event_on_load_grid_data
22
+ this.adaptable.agGridAdapter.setGridOption('rowData', []);
18
23
  this.adaptable.setGridData(dataSource);
19
24
  const allRowNodes = this.getAllRowNodes();
20
25
  this.internalApi.fireGridDataChangedEvent(dataSource, allRowNodes, 'Load');
@@ -215,8 +220,8 @@ export class GridApiImpl extends ApiBase {
215
220
  }
216
221
  selectCellRangeByQuery(query, gridCellRange, clearSelection) {
217
222
  const filteredRowNodes = [];
218
- const isRowNodeInQuery = (rowNode) => this.getAdaptableApi().internalApi
219
- .getQueryLanguageService()
223
+ const isRowNodeInQuery = (rowNode) => this.getAdaptableApi()
224
+ .internalApi.getQueryLanguageService()
220
225
  .evaluateBooleanExpression(query, 'GridInfo', rowNode);
221
226
  if (gridCellRange) {
222
227
  const [startNode, endNode] = this.getSelectionStartEndNodes(gridCellRange);
@@ -549,7 +554,7 @@ export class GridApiImpl extends ApiBase {
549
554
  },
550
555
  });
551
556
  }
552
- getAllGridColumns() {
557
+ getAllAgGridColumns() {
553
558
  return this.adaptable.getAllGridColumns();
554
559
  }
555
560
  }
@@ -53,8 +53,8 @@ export class ScopeApiImpl extends ApiBase {
53
53
  if ('ColumnIds' in scope) {
54
54
  return ((scope.ColumnIds.length > 1 ? 'Columns' : 'Column') +
55
55
  ': ' +
56
- this.getAdaptableApi().columnApi
57
- .getFriendlyNamesForColumnIds(scope.ColumnIds)
56
+ this.getAdaptableApi()
57
+ .columnApi.getFriendlyNamesForColumnIds(scope.ColumnIds)
58
58
  .map((c) => {
59
59
  return '"' + c + '"';
60
60
  })
@@ -135,8 +135,8 @@ export class ScopeApiImpl extends ApiBase {
135
135
  if ('ColumnIds' in scope) {
136
136
  let text = scope.ColumnIds.length == 1 ? 'Column: ' : 'Columns: ';
137
137
  return (text +
138
- this.getAdaptableApi().columnApi
139
- .getFriendlyNamesForColumnIds(scope.ColumnIds)
138
+ this.getAdaptableApi()
139
+ .columnApi.getFriendlyNamesForColumnIds(scope.ColumnIds)
140
140
  .map((c) => {
141
141
  return '"' + c + '"';
142
142
  })
@@ -1,13 +1,14 @@
1
- import { ApiBase } from './ApiBase';
2
- import { UserInterfaceApi } from '../UserInterfaceApi';
1
+ import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
2
+ import { BulkUpdatePermittedValues, CustomSortPermittedValues, EditLookUpPermittedValues, FilterPermittedValues, PermittedValues } from '../../AdaptableOptions/UserInterfaceOptions';
3
3
  import { AdaptableColumn } from '../../PredefinedConfig/Common/AdaptableColumn';
4
4
  import { AdaptableStyle } from '../../PredefinedConfig/Common/AdaptableStyle';
5
- import { BulkUpdatePermittedValues, CustomSortPermittedValues, EditLookUpPermittedValues, FilterPermittedValues, PermittedValues } from '../../AdaptableOptions/UserInterfaceOptions';
6
- import { AdaptableObjectTag, CustomWindowConfig, GridCell } from '../../types';
5
+ import { AdaptableFrameworkComponent, AdaptableObjectTag, CustomRenderFunction, CustomWindowConfig, GridCell } from '../../types';
7
6
  import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
8
- import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
7
+ import { UserInterfaceApi } from '../UserInterfaceApi';
8
+ import { ApiBase } from './ApiBase';
9
9
  export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfaceApi {
10
10
  internalApi: UserInterfaceInternalApi;
11
+ private showProgressIndicatorTimeout;
11
12
  constructor(adaptable: IAdaptable);
12
13
  getColorPalette(): string[];
13
14
  getStyleClassNames(): string[] | undefined;
@@ -29,6 +30,14 @@ export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfa
29
30
  getCustomIconDefinition(iconName: string): import("../../types").AdaptableIcon | import("../../types").CustomIcon;
30
31
  showLoadingScreen(): void;
31
32
  hideLoadingScreen(): void;
33
+ showProgressIndicator(config: {
34
+ text: string;
35
+ message?: string;
36
+ render?: CustomRenderFunction;
37
+ frameworkComponent?: AdaptableFrameworkComponent;
38
+ delay?: number;
39
+ }): void;
40
+ hideProgressIndicator(): void;
32
41
  openCustomWindowPopup(config: CustomWindowConfig): {
33
42
  close: () => void;
34
43
  };
@@ -1,11 +1,14 @@
1
- import { ApiBase } from './ApiBase';
2
1
  import * as PopupRedux from '../../Redux/ActionsReducers/PopupRedux';
2
+ import { SystemProgressIndicatorHide, SystemProgressIndicatorShow, } from '../../Redux/ActionsReducers/SystemRedux';
3
3
  import { ArrayExtensions } from '../../Utilities/Extensions/ArrayExtensions';
4
- import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
4
+ import { logDeprecation } from '../../Utilities/logDeprecation';
5
5
  import { CUSTOM_WINDOW_FACTORY_ID } from '../../View/Components/Popups/WindowPopups/WindowPopups';
6
+ import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
7
+ import { ApiBase } from './ApiBase';
6
8
  export class UserInterfaceApiImpl extends ApiBase {
7
9
  constructor(adaptable) {
8
10
  super(adaptable);
11
+ this.showProgressIndicatorTimeout = null;
9
12
  this.internalApi = new UserInterfaceInternalApi(adaptable);
10
13
  }
11
14
  getColorPalette() {
@@ -166,10 +169,29 @@ export class UserInterfaceApiImpl extends ApiBase {
166
169
  return customIcon;
167
170
  }
168
171
  showLoadingScreen() {
169
- this.dispatchAction(PopupRedux.PopupShowLoading());
172
+ logDeprecation(this.adaptable.logger, 'UserInterfaceApi', 'showLoadingScreen', 'showProgressIndicator');
173
+ this.showProgressIndicator({ text: 'Loading' });
170
174
  }
171
175
  hideLoadingScreen() {
172
- this.dispatchAction(PopupRedux.PopupHideLoading());
176
+ logDeprecation(this.adaptable.logger, 'UserInterfaceApi', 'hideLoadingScreen', 'hideProgressIndicator');
177
+ this.hideProgressIndicator();
178
+ }
179
+ showProgressIndicator(config) {
180
+ if (config.delay) {
181
+ this.showProgressIndicatorTimeout = setTimeout(() => {
182
+ this.dispatchAction(SystemProgressIndicatorShow(config));
183
+ }, config.delay);
184
+ }
185
+ else {
186
+ this.dispatchAction(SystemProgressIndicatorShow(config));
187
+ }
188
+ }
189
+ hideProgressIndicator() {
190
+ if (this.showProgressIndicatorTimeout) {
191
+ clearTimeout(this.showProgressIndicatorTimeout);
192
+ this.showProgressIndicatorTimeout = null;
193
+ }
194
+ this.dispatchAction(SystemProgressIndicatorHide());
173
195
  }
174
196
  openCustomWindowPopup(config) {
175
197
  const close = () => {
@@ -89,7 +89,6 @@ export declare class AdaptableInternalApi extends ApiBase {
89
89
  destroyFrameworkComponent(containerDomNode: HTMLElement, frameworkComponent: AdaptableFrameworkComponent, componentType: 'toolPanel' | 'toolbar'): void;
90
90
  initializeDataChangeHistory(): void;
91
91
  executeWithProgressIndicator(label: string, executeFn: () => void, errorHandlingFn?: () => void): void;
92
- hideProgressIndicator(): void;
93
92
  getCorrectEnglishVariant(wordToSpell: string): string;
94
93
  shouldDisplayTagSections(): boolean;
95
94
  getAvailableTags(): AdaptableObjectTag[] | undefined;
@@ -1,6 +1,5 @@
1
1
  import * as PopupRedux from '../../Redux/ActionsReducers/PopupRedux';
2
2
  import * as SystemRedux from '../../Redux/ActionsReducers/SystemRedux';
3
- import { SystemProgressIndicatorHide, SystemProgressIndicatorShow, } from '../../Redux/ActionsReducers/SystemRedux';
4
3
  import * as GridRedux from '../../Redux/ActionsReducers/GridRedux';
5
4
  import * as DeadRedux from '../../Redux/DeadRedux';
6
5
  import { ApiBase } from '../Implementation/ApiBase';
@@ -249,7 +248,7 @@ export class AdaptableInternalApi extends ApiBase {
249
248
  }
250
249
  }
251
250
  executeWithProgressIndicator(label, executeFn, errorHandlingFn) {
252
- this.dispatchReduxAction(SystemProgressIndicatorShow(label));
251
+ this.getAdaptableApi().userInterfaceApi.showProgressIndicator({ text: label, delay: 300 });
253
252
  // setTimeout required to give the ProgressIndicator rendering a head-start (see RAF in ProgressIndicator implementation)
254
253
  setTimeout(() => {
255
254
  try {
@@ -257,14 +256,11 @@ export class AdaptableInternalApi extends ApiBase {
257
256
  }
258
257
  catch (error) {
259
258
  errorHandlingFn === null || errorHandlingFn === void 0 ? void 0 : errorHandlingFn();
260
- this.hideProgressIndicator();
259
+ this.getUserInterfaceApi().hideProgressIndicator();
261
260
  this.adaptable.logger.error('Unexpected error while executing a function with a progress indicator', error);
262
261
  }
263
262
  }, 16);
264
263
  }
265
- hideProgressIndicator() {
266
- this.dispatchReduxAction(SystemProgressIndicatorHide());
267
- }
268
264
  getCorrectEnglishVariant(wordToSpell) {
269
265
  if (wordToSpell.includes('our')) {
270
266
  return this.getUserInterfaceOptions().englishVariant == 'GB'
@@ -124,8 +124,8 @@ export class ColumnFilterInternalApi extends ApiBase {
124
124
  const isClearAndPreviousWasActive = action.type === LayoutRedux.LAYOUT_COLUMN_FILTER_CLEAR &&
125
125
  this.getAdaptableApi().columnFilterApi.isColumnFilterActive(action.columnFilter);
126
126
  const isClearAllAtLeastOneActiveFilter = action.type === LayoutRedux.LAYOUT_COLUMN_FILTER_CLEAR_ALL &&
127
- this.getAdaptableApi().columnFilterApi
128
- .getColumnFilters()
127
+ this.getAdaptableApi()
128
+ .columnFilterApi.getColumnFilters()
129
129
  .some((columnFilter) => this.getAdaptableApi().columnFilterApi.isColumnFilterActive(columnFilter));
130
130
  let isEditTrigger = false;
131
131
  if (action.type === LayoutRedux.LAYOUT_COLUMN_FILTER_EDIT) {
@@ -51,8 +51,8 @@ export class DashboardInternalApi extends ApiBase {
51
51
  return false;
52
52
  }
53
53
  isToolbarCustom(toolbarName) {
54
- return this.getAdaptableApi().dashboardApi
55
- .getCustomToolbars()
54
+ return this.getAdaptableApi()
55
+ .dashboardApi.getCustomToolbars()
56
56
  .some((tb) => tb.name === toolbarName);
57
57
  }
58
58
  getCustomToolbarRenderContainerId(customToolbarName) {
@@ -3,6 +3,7 @@ import StringExtensions from '../../Utilities/Extensions/StringExtensions';
3
3
  import FormatHelper from '../../Utilities/Helpers/FormatHelper';
4
4
  import ObjectFactory from '../../Utilities/ObjectFactory';
5
5
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
6
+ import { ROW_SUMMARY_ROW_ID } from '../../PredefinedConfig/Common/RowSummary';
6
7
  export class FormatColumnInternalApi extends ApiBase {
7
8
  /**
8
9
  * Retrieves all Format Columns in Adaptable State with the `Style` property set
@@ -154,7 +155,7 @@ export class FormatColumnInternalApi extends ApiBase {
154
155
  * @param params
155
156
  */
156
157
  isFormatColumnRelevantForColumn(formatColumn, column, params) {
157
- var _a, _b;
158
+ var _a, _b, _c, _d;
158
159
  // suspended is important to be first
159
160
  if (formatColumn.IsSuspended) {
160
161
  return false;
@@ -163,11 +164,14 @@ export class FormatColumnInternalApi extends ApiBase {
163
164
  this.getAdaptableApi().gridApi.isGroupRowNode(params.node)) {
164
165
  return false;
165
166
  }
167
+ if (!formatColumn.IncludeRowSummaries && ((_b = (_a = params.node) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[ROW_SUMMARY_ROW_ID])) {
168
+ return false;
169
+ }
166
170
  if (!formatColumn.Rule) {
167
171
  return true;
168
172
  }
169
173
  // first run the predicate
170
- if (formatColumn.Rule.Predicates && ((_b = (_a = formatColumn.Rule) === null || _a === void 0 ? void 0 : _a.Predicates) === null || _b === void 0 ? void 0 : _b.length)) {
174
+ if (formatColumn.Rule.Predicates && ((_d = (_c = formatColumn.Rule) === null || _c === void 0 ? void 0 : _c.Predicates) === null || _d === void 0 ? void 0 : _d.length)) {
171
175
  const predicateDefHandlerContext = Object.assign({ value: params.value, oldValue: null, displayValue: params.value, node: params.node, column: column }, this.getAdaptableApi().internalApi.buildBaseContext());
172
176
  return this.evaluatePredicate(formatColumn, predicateDefHandlerContext);
173
177
  }
@@ -184,8 +188,8 @@ export class FormatColumnInternalApi extends ApiBase {
184
188
  evaluateExpression(formatColumn, node) {
185
189
  const isValidExpression = this.getAdaptableApi().expressionApi.isValidBooleanExpression(formatColumn.Rule.BooleanExpression, ModuleConstants.FormatColumnModuleId, `Invalid format column rule '${formatColumn.Rule.BooleanExpression}'`);
186
190
  return (isValidExpression &&
187
- this.getAdaptableApi().internalApi
188
- .getQueryLanguageService()
191
+ this.getAdaptableApi()
192
+ .internalApi.getQueryLanguageService()
189
193
  .evaluateBooleanExpression(formatColumn.Rule.BooleanExpression, ModuleConstants.FormatColumnModuleId, node));
190
194
  }
191
195
  /**
@@ -235,7 +239,9 @@ export class FormatColumnInternalApi extends ApiBase {
235
239
  });
236
240
  const columnsThatNeedRefresh = new Set();
237
241
  this.getFormatColumnsDependentOnColumns(impactedColumnIds).forEach((formatColumn) => {
238
- this.getAdaptableApi().scopeApi.getColumnsForScope(formatColumn.Scope).forEach((col) => {
242
+ this.getAdaptableApi()
243
+ .scopeApi.getColumnsForScope(formatColumn.Scope)
244
+ .forEach((col) => {
239
245
  columnsThatNeedRefresh.add(col.columnId);
240
246
  });
241
247
  });
@@ -3,7 +3,7 @@ import { GridFilter } from '../../types';
3
3
  export declare class GridFilterInternalApi extends ApiBase {
4
4
  fireGridFilterAppliedEvent(): void;
5
5
  /**
6
- * Compares to Grid Filters to see if they are identical
7
- */
6
+ * Compares to Grid Filters to see if they are identical
7
+ */
8
8
  isGridFilterDifferent(oldFilter: GridFilter, newFilter: GridFilter): boolean;
9
9
  }
@@ -11,8 +11,8 @@ export class GridFilterInternalApi extends ApiBase {
11
11
  }
12
12
  }
13
13
  /**
14
- * Compares to Grid Filters to see if they are identical
15
- */
14
+ * Compares to Grid Filters to see if they are identical
15
+ */
16
16
  isGridFilterDifferent(oldFilter, newFilter) {
17
17
  return (oldFilter === null || oldFilter === void 0 ? void 0 : oldFilter.Expression) === (newFilter === null || newFilter === void 0 ? void 0 : newFilter.Expression);
18
18
  }
@@ -58,7 +58,7 @@ export class LayoutInternalApi extends ApiBase {
58
58
  if (!layoutState.Layouts || !isLayoutDefined(DEFAULT_LAYOUT)) {
59
59
  // augogroup columns are not in columns list
60
60
  // the code that adds column ok grid state explicitly ignores autoColumns
61
- const allGridColumns = this.getAdaptableApi().gridApi.getAllGridColumns();
61
+ const allGridColumns = this.getAdaptableApi().gridApi.getAllAgGridColumns();
62
62
  let defaultLayout = ObjectFactory.CreateEmptyLayout({
63
63
  Name: DEFAULT_LAYOUT,
64
64
  Columns: defaultLayoutColumns.map((c) => c.columnId),
@@ -3,8 +3,8 @@ import { AdaptableStyle } from '../PredefinedConfig/Common/AdaptableStyle';
3
3
  import { BulkUpdatePermittedValues, CustomSortPermittedValues, EditLookUpPermittedValues, FilterPermittedValues, PermittedValues } from '../AdaptableOptions/UserInterfaceOptions';
4
4
  import { GridCell } from '../PredefinedConfig/Selection/GridCell';
5
5
  import { AdaptableObjectTag } from '../PredefinedConfig/Common/AdaptableObject';
6
- import { AdaptableIcon } from '../types';
7
- import { CustomWindowConfig } from '../AdaptableOptions/AdaptableFrameworkComponent';
6
+ import { AdaptableFrameworkComponent, AdaptableIcon } from '../types';
7
+ import { CustomRenderFunction, CustomWindowConfig } from '../AdaptableOptions/AdaptableFrameworkComponent';
8
8
  /**
9
9
  * Functions relating to User Interface section of Adaptable State
10
10
  */
@@ -72,12 +72,25 @@ export interface UserInterfaceApi {
72
72
  getCustomIconDefinition(name: string): AdaptableIcon | undefined;
73
73
  /**
74
74
  * Displays the popup that says getting data and initialising grid
75
+ * @deprecated use `showProgressIndicator()` instead
75
76
  */
76
77
  showLoadingScreen(): void;
77
78
  /**
78
79
  * Hides the popup that says getting data and initialising grid
80
+ * @deprecated use `hideProgressIndicator()` instead
79
81
  */
80
82
  hideLoadingScreen(): void;
83
+ /**
84
+ *
85
+ * @param config
86
+ */
87
+ showProgressIndicator(config: {
88
+ text?: string;
89
+ render?: CustomRenderFunction;
90
+ frameworkComponent?: AdaptableFrameworkComponent;
91
+ delay?: number;
92
+ }): void;
93
+ hideProgressIndicator(): void;
81
94
  /**
82
95
  * Opens window with custom content
83
96
  * @param config
@@ -54,4 +54,4 @@ export interface AdaptableBaseIcon {
54
54
  /**
55
55
  * All AdapTable System Icon names
56
56
  */
57
- export type AdaptableSystemIconName = 'add' | 'alert' | 'building' | 'laptop' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-up-long' | 'arrow-down-long' | 'arrow-expand' | 'paperclip' | 'unfilled-circle' | 'boolean-list' | 'broadcast' | 'brush' | 'spanner' | 'edit-table' | 'chart-and-grid' | 'calendar' | 'call' | 'cells' | 'fdc3' | 'flag' | 'chart' | 'chat' | 'check' | 'check-circle' | 'checked' | 'clone' | 'close' | 'cloud-upload' | 'collapse' | 'column-add' | 'columns' | 'filter-list' | 'comment' | 'comments' | 'contains' | 'dashboard' | 'data-set' | 'date-range' | 'delete' | 'division' | 'dock' | 'dollar' | 'drag' | 'edit' | 'ends-with' | 'equals' | 'equation' | 'error' | 'expand' | 'exponent' | 'export' | 'export-data' | 'fast-backward' | 'fast-forward' | 'filter' | 'lightning' | 'folder' | 'folder-open' | 'folder-shared' | 'color-palette' | 'horizontal-lines' | 'function' | 'greater-than' | 'greater-than-or-equal' | 'history' | 'home' | 'import-export' | 'info' | 'brain' | 'download' | 'grid' | 'interactions' | 'less-than' | 'less-than-or-equal' | 'list' | 'logout' | 'mail' | 'menu' | 'minus' | 'multiplication' | 'money' | 'newpage' | 'news' | 'filled-circle' | 'not-contains' | 'not-equal' | 'open-in-new' | 'order' | 'organisation' | 'pause' | 'percent' | 'percent-tag' | 'person' | 'contact' | 'pie-chart' | 'play' | 'plus' | 'add-circle' | 'search' | 'search-table' | 'quote' | 'refresh' | 'regex' | 'reminder' | 'save' | 'schedule' | 'science' | 'settings' | 'link' | 'sort-asc' | 'sort-desc' | 'spark-line' | 'resume' | 'starts-with' | 'assignment' | 'statusbar' | 'stop' | 'traffic-lights' | 'tab-unselected' | 'theme' | 'clipboard' | 'target' | 'triangle-down' | 'triangle-up' | 'unchecked' | 'undo' | 'downloaded' | 'upload' | 'warning' | 'gradient' | 'badge' | 'italic' | 'bold' | 'align-left' | 'align-right' | 'align-center' | 'align-justify' | 'underline' | 'strikethrough' | 'overline' | 'case-upper' | 'case-lower' | 'case-sentence' | 'visibility-on' | 'visibility-off' | 'visibility-off-bold' | 'visibility-on-bold' | 'note' | 'import' | 'grid-filter' | 'rows';
57
+ export type AdaptableSystemIconName = 'add' | 'alert' | 'building' | 'laptop' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-up-long' | 'arrow-down-long' | 'arrow-expand' | 'paperclip' | 'unfilled-circle' | 'boolean-list' | 'broadcast' | 'brush' | 'spanner' | 'edit-table' | 'chart-and-grid' | 'calendar' | 'call' | 'cells' | 'fdc3' | 'flag' | 'chart' | 'chat' | 'check' | 'check-circle' | 'checked' | 'clone' | 'close' | 'cloud-upload' | 'collapse' | 'column-add' | 'columns' | 'filter-list' | 'copy' | 'comment' | 'comments' | 'contains' | 'dashboard' | 'data-set' | 'date-range' | 'delete' | 'division' | 'dock' | 'dollar' | 'drag' | 'edit' | 'ends-with' | 'equals' | 'equation' | 'error' | 'expand' | 'exponent' | 'export' | 'export-data' | 'fast-backward' | 'fast-forward' | 'filter' | 'filter-off' | 'lightning' | 'folder' | 'folder-open' | 'folder-shared' | 'color-palette' | 'horizontal-lines' | 'function' | 'greater-than' | 'greater-than-or-equal' | 'history' | 'home' | 'import-export' | 'info' | 'brain' | 'download' | 'grid' | 'interactions' | 'less-than' | 'less-than-or-equal' | 'list' | 'logout' | 'mail' | 'menu' | 'minus' | 'multiplication' | 'money' | 'newpage' | 'news' | 'filled-circle' | 'not-contains' | 'not-equal' | 'open-in-new' | 'order' | 'organisation' | 'pause' | 'percent' | 'percent-tag' | 'person' | 'contact' | 'pie-chart' | 'play' | 'plus' | 'add-circle' | 'search' | 'search-table' | 'select-all' | 'select-off' | 'select-fwd' | 'quote' | 'refresh' | 'regex' | 'reminder' | 'save' | 'schedule' | 'science' | 'settings' | 'link' | 'sort-asc' | 'sort-desc' | 'spark-line' | 'resume' | 'starts-with' | 'assignment' | 'statusbar' | 'stop' | 'traffic-lights' | 'tab-unselected' | 'theme' | 'clipboard' | 'target' | 'triangle-down' | 'triangle-up' | 'unchecked' | 'undo' | 'downloaded' | 'upload' | 'warning' | 'gradient' | 'badge' | 'italic' | 'bold' | 'align-left' | 'align-right' | 'align-center' | 'align-justify' | 'underline' | 'strikethrough' | 'overline' | 'case-upper' | 'case-lower' | 'case-sentence' | 'visibility-on' | 'visibility-off' | 'visibility-off-bold' | 'visibility-on-bold' | 'note' | 'import' | 'grid-filter' | 'grid-info' | 'rows';
@@ -74,7 +74,7 @@ export declare const Fdc3StandardIntents: ("StartCall" | "StartChat" | "StartEma
74
74
  /**
75
75
  * All FDC3 standard intents
76
76
  */
77
- export type Fdc3StandardIntentType = typeof Fdc3StandardIntents[number];
77
+ export type Fdc3StandardIntentType = (typeof Fdc3StandardIntents)[number];
78
78
  /**
79
79
  * Custom FDC3 intent
80
80
  */
@@ -86,4 +86,4 @@ export type Fdc3IntentType = Fdc3StandardIntentType | Fdc3CustomIntentType;
86
86
  /**
87
87
  * Valid context for a given FDC3 intent
88
88
  */
89
- export type CompatibleContext<F extends Fdc3StandardIntentType> = typeof Fdc3IntentConfiguration[F]['contexts'][number];
89
+ export type CompatibleContext<F extends Fdc3StandardIntentType> = (typeof Fdc3IntentConfiguration)[F]['contexts'][number];
@@ -5,16 +5,16 @@ import { SelectedCellInfo } from '../Selection/SelectedCellInfo';
5
5
  import { SelectedRowInfo } from '../Selection/SelectedRowInfo';
6
6
  import { Column, IRowNode } from '@ag-grid-community/core';
7
7
  import { AdaptableIcon, BaseContext } from '../../types';
8
- export type AdaptableColumnMenuItemName = typeof ADAPTABLE_COLUMN_MENU_ITEMS[number];
9
- export type AdaptableContextMenuItemName = typeof ADAPTABLE_CONTEXT_MENU_ITEMS[number];
8
+ export type AdaptableColumnMenuItemName = (typeof ADAPTABLE_COLUMN_MENU_ITEMS)[number];
9
+ export type AdaptableContextMenuItemName = (typeof ADAPTABLE_CONTEXT_MENU_ITEMS)[number];
10
10
  /**
11
11
  * List of Shipped Adaptable Column Menu Items
12
12
  */
13
- export declare const ADAPTABLE_COLUMN_MENU_ITEMS: readonly ["calculated-column-edit", "cell-summary-show", "column-filter-bar-hide", "column-filter-bar-show", "column-filter-clear", "column-filter-on-cell-value", "column-filter-suspend", "column-filter-unsuspend", "column-info-show", "custom-sort-add", "custom-sort-edit", "dashboard-collapse", "dashboard-configure", "dashboard-dock", "dashboard-expand", "dashboard-float", "dashboard-hide", "dashboard-show", "data-import", "flashing-cell-add", "flashing-cell-delete", "format-column-add", "format-column-edit", "free-text-column-edit", "grid-info-show", "layout-column-caption-change", "layout-column-hide", "layout-edit", "layout-select-actions", "layout-column-select", "layout-column-select-preserve", "layout-column-select-reset", "layout-select-all", "plus-minus-add", "settings-panel-open", "styled-column-badge-add", "styled-column-badge-edit", "styled-column-gradient-add", "styled-column-gradient-edit", "styled-column-percent-bar-add", "styled-column-percent-bar-edit", "styled-column-sparkline-add", "styled-column-sparkline-edit", "system-status-show", "_navbar"];
13
+ export declare const ADAPTABLE_COLUMN_MENU_ITEMS: readonly ["calculated-column-edit", "cell-summary-show", "column-group", "column-filter-group", "column-filter-bar-hide", "column-filter-bar-show", "column-filter-clear", "column-filter-suspend", "column-filter-unsuspend", "column-info-show", "custom-sort-add", "custom-sort-edit", "dashboard-collapse", "dashboard-configure", "dashboard-dock", "dashboard-expand", "dashboard-float", "dashboard-hide", "dashboard-show", "data-import", "flashing-cell-add", "flashing-cell-delete", "format-column-add", "format-column-edit", "free-text-column-edit", "grid-group", "grid-info-show", "layout-column-caption-change", "layout-column-hide", "layout-edit", "layout-column-select", "layout-column-select-preserve", "layout-column-select-reset", "layout-grid-select", "plus-minus-add", "settings-panel-open", "styling-group", "styled-column-badge-add", "styled-column-badge-edit", "styled-column-gradient-add", "styled-column-gradient-edit", "styled-column-percent-bar-add", "styled-column-percent-bar-edit", "styled-column-sparkline-add", "styled-column-sparkline-edit", "system-status-show", "_navbar"];
14
14
  /**
15
15
  * List of Shipped Adaptable Context Menu Items
16
16
  */
17
- export declare const ADAPTABLE_CONTEXT_MENU_ITEMS: readonly ["menu-group-parent", "alert-clear", "bulk-update-apply", "calculated-column-edit", "cell-summary-show", "column-filter-on-cell-value", "column-filter-clear", "column-filter-suspend", "column-filter-unsuspend", "column-info-show", "comment-add", "comment-remove", "dashboard-collapse", "dashboard-configure", "dashboard-dock", "dashboard-expand", "dashboard-float", "dashboard-hide", "dashboard-show", "data-import", "export-cells-clipboard", "export-cells-csv", "export-cells-excel", "export-cells-json", "export-cells-table", "export-cells-custom-destination", "export-rows-clipboard", "export-rows-csv", "export-rows-excel", "export-rows-json", "export-rows-table", "export-rows-custom-destination", "fdc3-broadcast", "fdc3-raise-intent", "flashing-cell-clear", "flashing-row-clear", "grid-info-show", "layout-aggregated-view", "layout-auto-size", "layout-clear-selection", "layout-edit", "layout-select-all", "layout-grid-actions", "note-add", "note-remove", "settings-panel-open", "smart-edit-apply", "system-status-show"];
17
+ export declare const ADAPTABLE_CONTEXT_MENU_ITEMS: readonly ["menu-group", "alert-clear", "bulk-update-apply", "calculated-column-edit", "cell-summary-show", "column-group", "column-filter-on-cell-value", "column-filter-clear", "column-filter-suspend", "column-filter-unsuspend", "column-info-show", "comment-add", "comment-remove", "dashboard-collapse", "dashboard-configure", "dashboard-dock", "dashboard-expand", "dashboard-float", "dashboard-hide", "dashboard-show", "data-import", "edit-group", "export-visual-data-excel", "export-all-data-excel", "export-all-data-csv", "export-all-data-clipboard", "export-all-data-json", "export-all-data-table", "export-current-data-excel", "export-current-data-csv", "export-current-data-clipboard", "export-current-data-json", "export-current-data-table", "export-selected-cells-excel", "export-selected-cells-csv", "export-selected-cells-clipboard", "export-selected-cells-json", "export-selected-cells-table", "export-selected-rows-excel", "export-selected-rows-csv", "export-selected-rows-clipboard", "export-selected-rows-json", "export-selected-rows-table", "fdc3-broadcast", "fdc3-raise-intent", "flashing-cell-clear", "flashing-row-clear", "grid-group", "grid-info-show", "layout-aggregated-view", "layout-auto-size", "layout-clear-selection", "layout-edit", "layout-select-all", "note-add", "note-remove", "settings-panel-open", "smart-edit-apply", "system-status-show"];
18
18
  /**
19
19
  * Menu item used by Adaptable in both Column and Context Menus
20
20
  */