@adaptabletools/adaptable 18.0.0-canary.26 → 18.0.0-canary.28

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 (99) hide show
  1. package/base.css.map +1 -1
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/MenuOptions.d.ts +7 -19
  5. package/src/AdaptableOptions/MenuOptions.js +1 -96
  6. package/src/Api/Implementation/ColumnApiImpl.js +6 -6
  7. package/src/Api/Implementation/ExpressionApiImpl.js +12 -12
  8. package/src/Api/Implementation/GridApiImpl.js +2 -2
  9. package/src/Api/Implementation/LayoutApiImpl.d.ts +0 -9
  10. package/src/Api/Implementation/LayoutApiImpl.js +0 -4
  11. package/src/Api/Implementation/ScopeApiImpl.js +4 -4
  12. package/src/Api/Internal/ColumnFilterInternalApi.js +2 -2
  13. package/src/Api/Internal/CommentsInternalApi.d.ts +1 -1
  14. package/src/Api/Internal/CommentsInternalApi.js +1 -1
  15. package/src/Api/Internal/DashboardInternalApi.js +2 -2
  16. package/src/Api/Internal/FormatColumnInternalApi.js +5 -3
  17. package/src/Api/Internal/GridFilterInternalApi.d.ts +2 -2
  18. package/src/Api/Internal/GridFilterInternalApi.js +2 -2
  19. package/src/Api/Internal/NoteInternalApi.d.ts +1 -1
  20. package/src/Api/Internal/NoteInternalApi.js +1 -1
  21. package/src/Api/LayoutApi.d.ts +0 -12
  22. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  23. package/src/PredefinedConfig/Common/Fdc3Intent.d.ts +2 -2
  24. package/src/PredefinedConfig/Common/Menu.d.ts +2 -2
  25. package/src/PredefinedConfig/Common/Menu.js +22 -20
  26. package/src/PredefinedConfig/Common/TransposeConfig.d.ts +3 -3
  27. package/src/Strategy/AdaptableModuleBase.d.ts +3 -4
  28. package/src/Strategy/AdaptableModuleBase.js +5 -9
  29. package/src/Strategy/AlertModule.d.ts +1 -1
  30. package/src/Strategy/AlertModule.js +1 -1
  31. package/src/Strategy/BulkUpdateModule.d.ts +1 -1
  32. package/src/Strategy/BulkUpdateModule.js +3 -2
  33. package/src/Strategy/CalculatedColumnModule.d.ts +2 -2
  34. package/src/Strategy/CalculatedColumnModule.js +2 -2
  35. package/src/Strategy/CellSummaryModule.d.ts +2 -2
  36. package/src/Strategy/CellSummaryModule.js +2 -2
  37. package/src/Strategy/ColumnFilterModule.d.ts +2 -2
  38. package/src/Strategy/ColumnFilterModule.js +17 -42
  39. package/src/Strategy/ColumnInfoModule.d.ts +2 -2
  40. package/src/Strategy/ColumnInfoModule.js +4 -4
  41. package/src/Strategy/CommentModule.d.ts +1 -2
  42. package/src/Strategy/CommentModule.js +29 -30
  43. package/src/Strategy/CustomSortModule.d.ts +1 -1
  44. package/src/Strategy/CustomSortModule.js +1 -1
  45. package/src/Strategy/DashboardModule.d.ts +2 -2
  46. package/src/Strategy/DashboardModule.js +3 -14
  47. package/src/Strategy/DataImportModule.d.ts +3 -3
  48. package/src/Strategy/DataImportModule.js +3 -3
  49. package/src/Strategy/ExportModule.d.ts +1 -2
  50. package/src/Strategy/ExportModule.js +12 -41
  51. package/src/Strategy/Fdc3Module.d.ts +1 -1
  52. package/src/Strategy/Fdc3Module.js +1 -14
  53. package/src/Strategy/FlashingCellModule.d.ts +2 -2
  54. package/src/Strategy/FlashingCellModule.js +2 -2
  55. package/src/Strategy/FormatColumnModule.d.ts +1 -1
  56. package/src/Strategy/FormatColumnModule.js +28 -47
  57. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  58. package/src/Strategy/FreeTextColumnModule.js +1 -1
  59. package/src/Strategy/GridInfoModule.d.ts +2 -2
  60. package/src/Strategy/GridInfoModule.js +3 -3
  61. package/src/Strategy/Interface/IModule.d.ts +3 -3
  62. package/src/Strategy/LayoutModule.d.ts +4 -4
  63. package/src/Strategy/LayoutModule.js +47 -72
  64. package/src/Strategy/NoteModule.d.ts +1 -2
  65. package/src/Strategy/NoteModule.js +28 -30
  66. package/src/Strategy/PlusMinusModule.d.ts +1 -1
  67. package/src/Strategy/PlusMinusModule.js +1 -1
  68. package/src/Strategy/SettingsPanelModule.d.ts +3 -3
  69. package/src/Strategy/SettingsPanelModule.js +3 -3
  70. package/src/Strategy/SmartEditModule.d.ts +1 -1
  71. package/src/Strategy/SmartEditModule.js +3 -2
  72. package/src/Strategy/StyledColumnModule.d.ts +1 -1
  73. package/src/Strategy/StyledColumnModule.js +17 -15
  74. package/src/Strategy/SystemStatusModule.d.ts +2 -2
  75. package/src/Strategy/SystemStatusModule.js +4 -3
  76. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +4 -2
  77. package/src/Utilities/Services/ModuleService.js +2 -2
  78. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.d.ts +1 -1
  79. package/src/agGrid/AdaptableAgGrid.js +2 -1
  80. package/src/agGrid/AgGridColumnAdapter.js +2 -2
  81. package/src/agGrid/AgGridMenuAdapter.d.ts +19 -8
  82. package/src/agGrid/AgGridMenuAdapter.js +319 -50
  83. package/src/components/icons/filter-off.d.ts +3 -0
  84. package/src/components/icons/filter-off.js +4 -0
  85. package/src/components/icons/grid-info.d.ts +3 -0
  86. package/src/components/icons/grid-info.js +4 -0
  87. package/src/components/icons/index.js +10 -0
  88. package/src/components/icons/select-all.d.ts +3 -0
  89. package/src/components/icons/select-all.js +4 -0
  90. package/src/components/icons/select-fwd.d.ts +3 -0
  91. package/src/components/icons/select-fwd.js +4 -0
  92. package/src/components/icons/select-off.d.ts +3 -0
  93. package/src/components/icons/select-off.js +4 -0
  94. package/src/env.js +2 -2
  95. package/src/metamodel/adaptable.metamodel.js +1 -1
  96. package/src/parser/src/parser.js +1218 -55
  97. package/src/parser/src/predicate/mapQlPredicateToExpression.js +1 -3
  98. package/src/parser/src/types.js +1 -2
  99. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -11,7 +11,7 @@ export class BulkUpdateModule extends AdaptableModuleBase {
11
11
  getViewAccessLevel() {
12
12
  return 'Full';
13
13
  }
14
- addContextMenuItems(menuContext) {
14
+ createContextMenuItems(menuContext) {
15
15
  let menuItemShowPopup = undefined;
16
16
  if (!menuContext.isRowGroupColumn && this.isModuleEditable()) {
17
17
  if (menuContext.adaptableColumn &&
@@ -22,7 +22,8 @@ export class BulkUpdateModule extends AdaptableModuleBase {
22
22
  let popUpParams = {
23
23
  source: 'ContextMenu',
24
24
  };
25
- menuItemShowPopup = this.createMainMenuItemShowPopup({ Name: 'bulk-update-apply',
25
+ menuItemShowPopup = this.createMainMenuItemShowPopup({
26
+ Name: 'bulk-update-apply',
26
27
  Label: 'Apply Bulk Update',
27
28
  ComponentName: this.moduleInfo.Popup,
28
29
  Icon: this.moduleInfo.Glyph,
@@ -16,8 +16,8 @@ export declare class CalculatedColumnModule extends AdaptableModuleBase implemen
16
16
  getExplicitlyReferencedColumnIds(calculatedColumn: CalculatedColumn): string[];
17
17
  getReferencedNamedQueryNames(calculatedColumn: CalculatedColumn): string[];
18
18
  private isCalculatedColumn;
19
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
20
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
19
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
20
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
21
21
  createEditCalculatedColumnMenuItem(column: AdaptableColumn): AdaptableMenuItem[];
22
22
  getTeamSharingAction(): TeamSharingImportInfo<CalculatedColumn>;
23
23
  toView(calculateColumn: CalculatedColumn): {
@@ -34,12 +34,12 @@ export class CalculatedColumnModule extends AdaptableModuleBase {
34
34
  .getCalculatedColumns()
35
35
  .find((cc) => cc.ColumnId == column.columnId)));
36
36
  }
37
- addColumnMenuItems(column) {
37
+ createColumnMenuItems(column) {
38
38
  if (this.isModuleEditable() && this.isCalculatedColumn(column)) {
39
39
  return this.createEditCalculatedColumnMenuItem(column);
40
40
  }
41
41
  }
42
- addContextMenuItems(menuContext) {
42
+ createContextMenuItems(menuContext) {
43
43
  if (!this.isModuleAvailable()) {
44
44
  return;
45
45
  }
@@ -11,8 +11,8 @@ export declare class CellSummaryModule extends AdaptableModuleBase implements IC
11
11
  cachedCellSummary: WeakMap<SelectedCellInfo<any>, CellSummmary>;
12
12
  constructor(api: AdaptableApi);
13
13
  getViewAccessLevel(): AccessLevel;
14
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
15
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
14
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
15
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
16
16
  private createCellSummaryMenuItem;
17
17
  createCellSummary(selectedCellInfo: SelectedCellInfo): CellSummmary;
18
18
  private getWeightedAverageCellSummary;
@@ -13,7 +13,7 @@ export class CellSummaryModule extends AdaptableModuleBase {
13
13
  getViewAccessLevel() {
14
14
  return 'Full';
15
15
  }
16
- addColumnMenuItems(column) {
16
+ createColumnMenuItems(column) {
17
17
  if (!this.isModuleAvailable()) {
18
18
  return;
19
19
  }
@@ -24,7 +24,7 @@ export class CellSummaryModule extends AdaptableModuleBase {
24
24
  }),
25
25
  ];
26
26
  }
27
- addContextMenuItems(menuContext) {
27
+ createContextMenuItems(menuContext) {
28
28
  if (!this.isModuleAvailable()) {
29
29
  return;
30
30
  }
@@ -13,8 +13,8 @@ export declare class ColumnFilterModule extends AdaptableModuleBase implements I
13
13
  getExplicitlyReferencedColumnIds(columnFilter: ColumnFilter): string[];
14
14
  hasNamedQueryReferences(): boolean;
15
15
  onAdaptableReady(): void;
16
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
17
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
16
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
17
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
18
18
  private getExistingColumnFilter;
19
19
  getTeamSharingAction(): TeamSharingImportInfo<ColumnFilter>;
20
20
  toViewCompact(filter: ColumnFilter): AdaptableObjectCompactView;
@@ -1,6 +1,5 @@
1
1
  import { AdaptableModuleBase } from './AdaptableModuleBase';
2
2
  import * as ModuleConstants from '../Utilities/Constants/ModuleConstants';
3
- import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
4
3
  import * as LayoutRedux from '../Redux/ActionsReducers/LayoutRedux';
5
4
  import * as SystemRedux from '../Redux/ActionsReducers/SystemRedux';
6
5
  import { FilterStatusBarSubPanelPopover } from '../View/Filter/FilterStatusBarSubPanelPopover';
@@ -39,8 +38,8 @@ export class ColumnFilterModule extends AdaptableModuleBase {
39
38
  }
40
39
  });
41
40
  }
42
- addColumnMenuItems(column) {
43
- let filterSubMenuItems = [];
41
+ createColumnMenuItems(column) {
42
+ let columnFilterMenuItems = [];
44
43
  if (column &&
45
44
  column.filterable &&
46
45
  this.api.optionsApi.getColumnFilterOptions().useAdaptableColumnFiltering) {
@@ -48,35 +47,22 @@ export class ColumnFilterModule extends AdaptableModuleBase {
48
47
  const isFilterVisible = this.api.columnFilterApi.isQuickFilterVisible();
49
48
  if (this.isModuleEditable() &&
50
49
  this.api.optionsApi.getColumnFilterOptions().useAdaptableColumnFiltering) {
51
- filterSubMenuItems.push(this.createMenuItemReduxAction(isFilterVisible ? 'column-filter-bar-hide' : 'column-filter-bar-show', isFilterVisible ? 'Hide Filter Bar' : 'Show Filter Bar', isFilterVisible ? 'unchecked' : 'check', isFilterVisible
50
+ columnFilterMenuItems.push(this.createMenuItemReduxAction(isFilterVisible ? 'column-filter-bar-hide' : 'column-filter-bar-show', isFilterVisible ? 'Hide Filter Bar' : 'Show Filter Bar', isFilterVisible ? 'filter-off' : 'filter', isFilterVisible
52
51
  ? SystemRedux.SystemQuickFilterBarHide()
53
52
  : SystemRedux.SystemQuickFilterBarShow()));
54
53
  }
55
54
  }
56
55
  const existingColumnFilter = this.getExistingColumnFilter(column);
57
56
  if (existingColumnFilter) {
58
- filterSubMenuItems.push(this.createMenuItemReduxAction('column-filter-clear', 'Clear Filter', 'close', LayoutRedux.LayoutColumnFilterClear(existingColumnFilter)));
59
- filterSubMenuItems.push(this.createMenuItemReduxAction(existingColumnFilter.IsSuspended ? 'column-filter-unsuspend' : 'column-filter-suspend', existingColumnFilter.IsSuspended ? 'Unsuspend Filter' : 'Suspend Filter', existingColumnFilter.IsSuspended ? 'resume' : 'pause', existingColumnFilter.IsSuspended
57
+ columnFilterMenuItems.push(this.createMenuItemReduxAction('column-filter-clear', 'Clear Filter', 'close', LayoutRedux.LayoutColumnFilterClear(existingColumnFilter)));
58
+ columnFilterMenuItems.push(this.createMenuItemReduxAction(existingColumnFilter.IsSuspended ? 'column-filter-unsuspend' : 'column-filter-suspend', existingColumnFilter.IsSuspended ? 'Unsuspend Filter' : 'Suspend Filter', existingColumnFilter.IsSuspended ? 'resume' : 'pause', existingColumnFilter.IsSuspended
60
59
  ? LayoutRedux.LayoutColumnFilterUnSuspend(existingColumnFilter)
61
60
  : LayoutRedux.LayoutColumnFilterSuspend(existingColumnFilter)));
62
61
  }
63
- if (ArrayExtensions.IsNotNullOrEmpty(filterSubMenuItems)) {
64
- return [
65
- {
66
- name: 'column-filter-parent',
67
- label: this.moduleInfo.FriendlyName,
68
- isVisible: true,
69
- module: this.moduleInfo.ModuleName,
70
- icon: {
71
- name: this.moduleInfo.Glyph,
72
- },
73
- subItems: filterSubMenuItems,
74
- },
75
- ];
76
- }
62
+ return columnFilterMenuItems;
77
63
  }
78
64
  }
79
- addContextMenuItems(menuContext) {
65
+ createContextMenuItems(menuContext) {
80
66
  if (!menuContext.isRowGroupColumn && this.isModuleAvailable()) {
81
67
  if (menuContext.adaptableColumn &&
82
68
  menuContext.adaptableColumn.filterable &&
@@ -98,28 +84,17 @@ export class ColumnFilterModule extends AdaptableModuleBase {
98
84
  ];
99
85
  }
100
86
  else {
101
- let filterSubMenuItems = [];
102
- filterSubMenuItems.push(this.createMenuItemReduxAction('column-filter-clear', 'Clear Filter', 'close', LayoutRedux.LayoutColumnFilterClear(existingColumnFilter)));
103
- filterSubMenuItems.push(this.createMenuItemClickFunction(existingColumnFilter.IsSuspended
104
- ? 'column-filter-unsuspend'
105
- : 'column-filter-suspend', existingColumnFilter.IsSuspended ? 'Unsuspend Filter' : 'Suspend Filter', existingColumnFilter.IsSuspended ? 'resume' : 'pause', existingColumnFilter.IsSuspended
106
- ? () => {
107
- this.api.columnFilterApi.unSuspendColumnFilter(existingColumnFilter);
108
- }
109
- : () => {
110
- this.api.columnFilterApi.suspendColumnFilter(existingColumnFilter);
111
- }));
112
87
  return [
113
- {
114
- name: 'column-filter-parent',
115
- label: this.moduleInfo.FriendlyName,
116
- isVisible: true,
117
- module: this.moduleInfo.ModuleName,
118
- icon: {
119
- name: this.moduleInfo.Glyph,
120
- },
121
- subItems: filterSubMenuItems,
122
- },
88
+ this.createMenuItemReduxAction('column-filter-clear', 'Clear Filter', 'close', LayoutRedux.LayoutColumnFilterClear(existingColumnFilter)),
89
+ this.createMenuItemClickFunction(existingColumnFilter.IsSuspended
90
+ ? 'column-filter-unsuspend'
91
+ : 'column-filter-suspend', existingColumnFilter.IsSuspended ? 'Unsuspend Filter' : 'Suspend Filter', existingColumnFilter.IsSuspended ? 'resume' : 'pause', existingColumnFilter.IsSuspended
92
+ ? () => {
93
+ this.api.columnFilterApi.unSuspendColumnFilter(existingColumnFilter);
94
+ }
95
+ : () => {
96
+ this.api.columnFilterApi.suspendColumnFilter(existingColumnFilter);
97
+ }),
123
98
  ];
124
99
  }
125
100
  }
@@ -6,6 +6,6 @@ import { AdaptableColumn, AdaptableMenuItem, ContextMenuContext } from '../types
6
6
  export declare class ColumnInfoModule extends AdaptableModuleBase implements IModule {
7
7
  constructor(api: AdaptableApi);
8
8
  getViewAccessLevel(): AccessLevel;
9
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
10
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
9
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
10
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
11
11
  }
@@ -7,7 +7,7 @@ export class ColumnInfoModule extends AdaptableModuleBase {
7
7
  getViewAccessLevel() {
8
8
  return 'Full';
9
9
  }
10
- addColumnMenuItems(column) {
10
+ createColumnMenuItems(column) {
11
11
  if (this.isModuleAvailable()) {
12
12
  const columnPopUpParams = {
13
13
  source: 'ColumnMenu',
@@ -18,13 +18,13 @@ export class ColumnInfoModule extends AdaptableModuleBase {
18
18
  Name: 'column-info-show',
19
19
  Label: 'Column Info',
20
20
  ComponentName: this.moduleInfo.Popup,
21
- Icon: this.moduleInfo.Glyph,
21
+ Icon: 'info',
22
22
  PopupParams: columnPopUpParams,
23
23
  }),
24
24
  ];
25
25
  }
26
26
  }
27
- addContextMenuItems(menuContext) {
27
+ createContextMenuItems(menuContext) {
28
28
  if (this.isModuleAvailable()) {
29
29
  const columnPopUpParams = {
30
30
  source: 'ColumnMenu',
@@ -35,7 +35,7 @@ export class ColumnInfoModule extends AdaptableModuleBase {
35
35
  Name: 'column-info-show',
36
36
  Label: 'Column Info',
37
37
  ComponentName: this.moduleInfo.Popup,
38
- Icon: this.moduleInfo.Glyph,
38
+ Icon: 'info',
39
39
  PopupParams: columnPopUpParams,
40
40
  }),
41
41
  ];
@@ -7,6 +7,5 @@ export declare class CommentModule extends AdaptableModuleBase implements IModul
7
7
  onAdaptableReady(): void;
8
8
  isModuleAvailable(): boolean;
9
9
  private loadComments;
10
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
11
- private getAddRemoveCommentsMenuItems;
10
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
12
11
  }
@@ -24,48 +24,47 @@ export class CommentModule extends AdaptableModuleBase {
24
24
  .getCommentOptions()) === null || _a === void 0 ? void 0 : _a.loadCommentThreads) === null || _b === void 0 ? void 0 : _b.call(_a, createBaseContext(this.api)));
25
25
  this.api.commentApi.setGridComments(commentThreads);
26
26
  }
27
- addContextMenuItems(menuContext) {
28
- var _a, _b;
27
+ createContextMenuItems(menuContext) {
28
+ var _a, _b, _c, _d, _e;
29
29
  if (!this.isModuleAvailable()) {
30
- return undefined;
30
+ return;
31
31
  }
32
- const items = [];
33
- const isCellCommentable = (_b = (_a = this.api.optionsApi) === null || _a === void 0 ? void 0 : _a.getCommentOptions()) === null || _b === void 0 ? void 0 : _b.isCellCommentable;
34
- if (!isCellCommentable ||
35
- isCellCommentable(Object.assign({ gridCell: menuContext.gridCell }, createBaseContext(this.api)))) {
36
- items.push(...this.getAddRemoveCommentsMenuItems(menuContext));
32
+ if (!this.api.commentApi.internalApi.areCommentsSupported()) {
33
+ return;
37
34
  }
38
- return items;
39
- }
40
- getAddRemoveCommentsMenuItems(menuContext) {
41
- var _a;
42
35
  const items = [];
43
- if (!this.api.commentApi.internalApi.areCommentsAvailable()) {
44
- return items;
36
+ const isCellCommentable = typeof ((_b = (_a = this.api.optionsApi) === null || _a === void 0 ? void 0 : _a.getCommentOptions()) === null || _b === void 0 ? void 0 : _b.isCellCommentable) === 'function'
37
+ ? (_d = (_c = this.api.optionsApi) === null || _c === void 0 ? void 0 : _c.getCommentOptions()) === null || _d === void 0 ? void 0 : _d.isCellCommentable(Object.assign({ gridCell: menuContext.gridCell }, createBaseContext(this.api)))
38
+ : true;
39
+ if (!isCellCommentable) {
40
+ return;
45
41
  }
46
42
  const cellAddress = {
47
43
  PrimaryKeyValue: menuContext.primaryKeyValue,
48
44
  ColumnId: menuContext.adaptableColumn.columnId,
49
45
  };
50
- const cellComments = (_a = this.api.commentApi.getCommentThread(cellAddress)) === null || _a === void 0 ? void 0 : _a.Comments;
46
+ const cellComments = (_e = this.api.commentApi.getCommentThread(cellAddress)) === null || _e === void 0 ? void 0 : _e.Comments;
51
47
  if (cellComments) {
52
- items.push(this.createMenuItemClickFunction('comment-remove', 'Remove Comment', this.moduleInfo.Glyph, () => {
53
- this.api.commentApi.deleteCommentThread(cellAddress);
54
- }));
48
+ return [
49
+ this.createMenuItemClickFunction('comment-remove', 'Remove Comment', this.moduleInfo.Glyph, () => {
50
+ this.api.commentApi.deleteCommentThread(cellAddress);
51
+ }),
52
+ ];
55
53
  }
56
54
  else {
57
- items.push(this.createMenuItemClickFunction('comment-add', 'Add Comment', this.moduleInfo.Glyph, () => {
58
- // add an empty one
59
- this.api.commentApi.addCommentThread(Object.assign(Object.assign({}, cellAddress), { Comments: [] }));
60
- requestAnimationFrame(() => {
61
- this.api.internalApi.getCellPopupService().showPopup({
62
- PrimaryKeyValue: menuContext.primaryKeyValue,
63
- ColumnId: menuContext.adaptableColumn.columnId,
64
- }, true);
65
- this.api.internalApi.getCellPopupService().editFocusedEntity('Comment');
66
- });
67
- }));
55
+ return [
56
+ this.createMenuItemClickFunction('comment-add', 'Add Comment', this.moduleInfo.Glyph, () => {
57
+ // add an empty one
58
+ this.api.commentApi.addCommentThread(Object.assign(Object.assign({}, cellAddress), { Comments: [] }));
59
+ requestAnimationFrame(() => {
60
+ this.api.internalApi.getCellPopupService().showPopup({
61
+ PrimaryKeyValue: menuContext.primaryKeyValue,
62
+ ColumnId: menuContext.adaptableColumn.columnId,
63
+ }, true);
64
+ this.api.internalApi.getCellPopupService().editFocusedEntity('Comment');
65
+ });
66
+ }),
67
+ ];
68
68
  }
69
- return items;
70
69
  }
71
70
  }
@@ -15,7 +15,7 @@ export declare class CustomSortModule extends AdaptableModuleBase implements IMo
15
15
  }): AdaptableObject[];
16
16
  getExplicitlyReferencedColumnIds(customSort: CustomSort): string[];
17
17
  hasNamedQueryReferences(): boolean;
18
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
18
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
19
19
  getTeamSharingAction(): TeamSharingImportInfo<CustomSort>;
20
20
  toView(customSort: CustomSort): AdaptableObjectView;
21
21
  toViewAll(): AdaptableObjectView[];
@@ -18,7 +18,7 @@ export class CustomSortModule extends AdaptableModuleBase {
18
18
  hasNamedQueryReferences() {
19
19
  return false;
20
20
  }
21
- addColumnMenuItems(column) {
21
+ createColumnMenuItems(column) {
22
22
  if (column && this.isModuleEditable() && column.sortable) {
23
23
  let customSort = this.api.customSortApi
24
24
  .getCustomSorts()
@@ -5,7 +5,7 @@ import { AdaptableApi } from '../Api/AdaptableApi';
5
5
  export declare class DashboardModule extends AdaptableModuleBase implements IModule {
6
6
  constructor(api: AdaptableApi);
7
7
  onAdaptableReady(): void;
8
- addColumnMenuItems(): AdaptableMenuItem[] | undefined;
9
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
8
+ createColumnMenuItems(): AdaptableMenuItem[] | undefined;
9
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
10
10
  private buildMenuItems;
11
11
  }
@@ -17,10 +17,10 @@ export class DashboardModule extends AdaptableModuleBase {
17
17
  this.api.dashboardApi.internalApi.fireDashboardChangedEvent('ADAPTABLE_READY', null, this.api.dashboardApi.getDashboardState());
18
18
  }, 20);
19
19
  }
20
- addColumnMenuItems() {
20
+ createColumnMenuItems() {
21
21
  return this.buildMenuItems();
22
22
  }
23
- addContextMenuItems(menuContext) {
23
+ createContextMenuItems(menuContext) {
24
24
  return this.buildMenuItems();
25
25
  }
26
26
  buildMenuItems() {
@@ -47,18 +47,7 @@ export class DashboardModule extends AdaptableModuleBase {
47
47
  else {
48
48
  menuItems.push(this.createMenuItemReduxAction('dashboard-hide', 'Hide', 'visibility-off-bold', DashboardRedux.DashboardSetIsHidden(true)));
49
49
  }
50
- return [
51
- {
52
- name: 'dashboard-parent',
53
- label: this.moduleInfo.FriendlyName,
54
- isVisible: true,
55
- module: this.moduleInfo.ModuleName,
56
- icon: {
57
- name: 'dashboard',
58
- },
59
- subItems: menuItems,
60
- },
61
- ];
50
+ return menuItems;
62
51
  }
63
52
  }
64
53
  }
@@ -4,8 +4,8 @@ import { AdaptableModuleBase } from './AdaptableModuleBase';
4
4
  import { IModule } from './Interface/IModule';
5
5
  export declare class DataImportModule extends AdaptableModuleBase implements IModule {
6
6
  constructor(api: AdaptableApi);
7
- addModuleMenuItem(source: 'ModuleMenu' | 'ModuleButton'): AdaptableMenuItem | undefined;
8
- addContextMenuItems(): AdaptableMenuItem[] | undefined;
9
- addColumnMenuItems(): AdaptableMenuItem[] | undefined;
7
+ createModuleMenuItem(source: 'ModuleMenu' | 'ModuleButton'): AdaptableMenuItem | undefined;
8
+ createContextMenuItems(): AdaptableMenuItem[] | undefined;
9
+ createColumnMenuItems(): AdaptableMenuItem[] | undefined;
10
10
  private createDataImportMenuItem;
11
11
  }
@@ -4,18 +4,18 @@ export class DataImportModule extends AdaptableModuleBase {
4
4
  constructor(api) {
5
5
  super(ModuleConstants.DataImportModuleId, ModuleConstants.DataImportFriendyName, 'import', 'DataImportPopup', 'Import Data', api);
6
6
  }
7
- addModuleMenuItem(source) {
7
+ createModuleMenuItem(source) {
8
8
  if (this.isModuleAvailable()) {
9
9
  return this.createDataImportMenuItem(source);
10
10
  }
11
11
  }
12
- addContextMenuItems() {
12
+ createContextMenuItems() {
13
13
  if (this.isModuleAvailable()) {
14
14
  return [this.createDataImportMenuItem('ContextMenu')];
15
15
  }
16
16
  return undefined;
17
17
  }
18
- addColumnMenuItems() {
18
+ createColumnMenuItems() {
19
19
  if (this.isModuleAvailable()) {
20
20
  return [this.createDataImportMenuItem('ColumnMenu')];
21
21
  }
@@ -12,9 +12,8 @@ export declare class ExportModule extends AdaptableModuleBase implements IExport
12
12
  getModuleAdaptableObjects(): AdaptableObject[];
13
13
  getExplicitlyReferencedColumnIds(report: Report): string[];
14
14
  getReferencedNamedQueryNames(report: Report): string[];
15
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
15
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
16
16
  private buildReportMenuItems;
17
- private buildExportMenuItem;
18
17
  private getMenuName;
19
18
  export(report: Report, exportDestination: ExportDestination | string): Promise<void>;
20
19
  private preProcessExport;
@@ -40,14 +40,12 @@ export class ExportModule extends AdaptableModuleBase {
40
40
  }
41
41
  return this.api.namedQueryApi.internalApi.getReferencedNamedQueryNames(report.Query.BooleanExpression);
42
42
  }
43
- addContextMenuItems(menuContext) {
43
+ createContextMenuItems(menuContext) {
44
44
  const canExport = !menuContext.isRowGroupColumn && this.isModuleAvailable();
45
45
  if (!canExport) {
46
46
  return;
47
47
  }
48
48
  let returnMenuItems = [];
49
- let selectedCellmenuItems = [];
50
- let selectedRowmenuItems = [];
51
49
  const canExportCells = menuContext.selectedCellInfo &&
52
50
  ArrayExtensions.IsNotNullOrEmpty(menuContext.selectedCellInfo.columns) &&
53
51
  ArrayExtensions.IsNotNullOrEmpty(menuContext.selectedCellInfo.gridCells);
@@ -58,63 +56,36 @@ export class ExportModule extends AdaptableModuleBase {
58
56
  menuContext.isSelectedRow;
59
57
  if (canExportCells) {
60
58
  const selectedCellReport = this.api.exportApi.getReportByName(SELECTED_CELLS_REPORT);
61
- selectedCellmenuItems = this.buildReportMenuItems(selectedCellReport);
59
+ returnMenuItems.push(...this.buildReportMenuItems(selectedCellReport, 'cells'));
62
60
  }
63
61
  if (canExportRows) {
64
62
  const selectedRowReport = this.api.exportApi.getReportByName(SELECTED_ROWS_REPORT);
65
- selectedRowmenuItems = this.buildReportMenuItems(selectedRowReport);
66
- }
67
- // if only selected cells then just do one level
68
- if (canExportCells && !canExportRows) {
69
- returnMenuItems.push(this.buildExportMenuItem('Export Selected Cells', selectedCellmenuItems));
70
- // if only selected Rows then just do one level
71
- }
72
- else if (canExportRows && !canExportCells) {
73
- returnMenuItems.push(this.buildExportMenuItem('Export Selected Rows', selectedRowmenuItems));
74
- }
75
- // if both selected Cells and Rows then add a new level
76
- else if (canExportRows && canExportCells) {
77
- const exportSelectedCellsMenuItem = this.buildExportMenuItem('Cells', selectedCellmenuItems);
78
- const exportSelectedRowsMenuItem = this.buildExportMenuItem('Rows', selectedRowmenuItems);
79
- returnMenuItems.push(this.buildExportMenuItem('Export Selected', [
80
- exportSelectedCellsMenuItem,
81
- exportSelectedRowsMenuItem,
82
- ]));
63
+ returnMenuItems.push(...this.buildReportMenuItems(selectedRowReport, 'rows'));
83
64
  }
84
65
  return returnMenuItems;
85
66
  }
86
- buildReportMenuItems(report) {
67
+ buildReportMenuItems(report, selectionType) {
87
68
  const menuItems = [];
88
69
  for (const destination of this.api.exportApi.getAvailableExportDestinations()) {
89
- menuItems.push(this.createMenuItemClickFunction(this.getMenuName(destination), destination, this.moduleInfo.Glyph, () => this.export(report, destination)));
70
+ menuItems.push(this.createMenuItemClickFunction(this.getMenuName(destination, selectionType), destination, this.moduleInfo.Glyph, () => this.export(report, destination)));
90
71
  }
91
72
  for (const customDestination of this.api.exportApi.getCustomDestinations()) {
92
- menuItems.push(this.createMenuItemClickFunction('export-custom-destination', customDestination.name, this.moduleInfo.Glyph, () => this.export(report, customDestination.name)));
73
+ menuItems.push(this.createMenuItemClickFunction(`export-${selectionType}-custom-destination`, customDestination.name, this.moduleInfo.Glyph, () => this.export(report, customDestination.name)));
93
74
  }
94
75
  return menuItems;
95
76
  }
96
- buildExportMenuItem(label, subItems) {
97
- return {
98
- name: 'export-parent',
99
- label: label,
100
- module: this.moduleInfo.ModuleName,
101
- isVisible: true,
102
- icon: { name: this.moduleInfo.Glyph },
103
- subItems: subItems,
104
- };
105
- }
106
- getMenuName(exportDestination) {
77
+ getMenuName(exportDestination, selectionType) {
107
78
  switch (exportDestination) {
108
79
  case ExportDestination.CSV:
109
- return 'export-csv';
80
+ return `export-${selectionType}-csv`;
110
81
  case ExportDestination.Clipboard:
111
- return 'export-clipboard';
82
+ return `export-${selectionType}-clipboard`;
112
83
  case ExportDestination.Excel:
113
- return 'export-excel';
84
+ return `export-${selectionType}-excel`;
114
85
  case ExportDestination.JSON:
115
- return 'export-json';
86
+ return `export-${selectionType}-json`;
116
87
  case ExportDestination.Table:
117
- return 'export-table';
88
+ return `export-${selectionType}-table`;
118
89
  }
119
90
  }
120
91
  async export(report, exportDestination) {
@@ -4,7 +4,7 @@ import { AdaptableApi } from '../Api/AdaptableApi';
4
4
  import { AdaptableMenuItem, ContextMenuContext } from '../PredefinedConfig/Common/Menu';
5
5
  export declare class Fdc3Module extends AdaptableModuleBase implements IModule {
6
6
  constructor(api: AdaptableApi);
7
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
7
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
8
8
  private buildRaiseIntentMenuItem;
9
9
  private buildBroadcastMenuItem;
10
10
  private getFdc3Api;
@@ -4,7 +4,7 @@ export class Fdc3Module extends AdaptableModuleBase {
4
4
  constructor(api) {
5
5
  super(ModuleConstants.Fdc3ModuleId, ModuleConstants.Fdc3FriendlyName, 'fdc3', null, 'The FDC3 Module - handles the FDC3 integration', api);
6
6
  }
7
- addContextMenuItems(menuContext) {
7
+ createContextMenuItems(menuContext) {
8
8
  if (!this.isModuleAvailable()) {
9
9
  return;
10
10
  }
@@ -25,19 +25,6 @@ export class Fdc3Module extends AdaptableModuleBase {
25
25
  contextMenuItems.push(this.buildBroadcastMenuItem(broadcastConfig, currentRowNode));
26
26
  });
27
27
  contextMenuItems.sort((a, b) => a.label.localeCompare(b.label));
28
- if (contextMenuItems.length > 1) {
29
- const groupMenuItem = {
30
- name: 'fdc3-parent',
31
- module: this.moduleInfo.ModuleName,
32
- label: 'FDC3',
33
- icon: {
34
- name: 'fdc3',
35
- },
36
- isVisible: true,
37
- subItems: contextMenuItems,
38
- };
39
- return [groupMenuItem];
40
- }
41
28
  return contextMenuItems;
42
29
  }
43
30
  }
@@ -15,8 +15,8 @@ export declare class FlashingCellModule extends AdaptableModuleBase implements I
15
15
  }): AdaptableObject[];
16
16
  getExplicitlyReferencedColumnIds(alertDefinition: FlashingCellDefinition): string[];
17
17
  getReferencedNamedQueryNames(alertDefinition: FlashingCellDefinition): string[];
18
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
19
- addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
18
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
19
+ createContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
20
20
  protected handleCellDataChanged(cellDataChangedInfo: CellDataChangedInfo): void;
21
21
  private showFlashingCellsForDefinitions;
22
22
  private isFlashingTargetOnlyAggChange;
@@ -60,7 +60,7 @@ export class FlashingCellModule extends AdaptableModuleBase {
60
60
  }
61
61
  return this.api.namedQueryApi.internalApi.getReferencedNamedQueryNames(queryExpression);
62
62
  }
63
- addColumnMenuItems(column) {
63
+ createColumnMenuItems(column) {
64
64
  if (column && this.isModuleEditable()) {
65
65
  if (!this.api.columnApi.isCalculatedColumn(column.columnId)) {
66
66
  const flashingCellDefinitions = this.api.flashingCellApi.getFlashingCellDefinitions();
@@ -85,7 +85,7 @@ export class FlashingCellModule extends AdaptableModuleBase {
85
85
  }
86
86
  }
87
87
  }
88
- addContextMenuItems(menuContext) {
88
+ createContextMenuItems(menuContext) {
89
89
  const items = [];
90
90
  if (!menuContext.isRowGroupColumn && this.isModuleAvailable()) {
91
91
  if (menuContext.adaptableColumn && menuContext.rowNode) {
@@ -13,7 +13,7 @@ export declare class FormatColumnModule extends AdaptableModuleBase implements I
13
13
  }): AdaptableObject[];
14
14
  getExplicitlyReferencedColumnIds(formatColumn: FormatColumn): string[];
15
15
  getReferencedNamedQueryNames(formatColumn: FormatColumn): string[];
16
- addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
16
+ createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
17
17
  getTeamSharingAction(): TeamSharingImportInfo<FormatColumn>;
18
18
  toView(formatColumn: FormatColumn): AdaptableObjectView;
19
19
  toViewAll(): AdaptableObjectView[];