@adaptabletools/adaptable 22.0.0-canary.9 → 22.0.1-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 (180) hide show
  1. package/index.css +1157 -1319
  2. package/index.css.map +1 -1
  3. package/index.d.ts +8 -8
  4. package/index.js +8 -8
  5. package/package.json +1 -4
  6. package/src/AdaptableInterfaces/IAdaptable.d.ts +1 -0
  7. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
  8. package/src/AdaptableState/Common/AdaptableColumn.d.ts +3 -3
  9. package/src/AdaptableState/Common/AdaptableForm.d.ts +1 -1
  10. package/src/AdaptableState/Common/AggregationColumns.d.ts +1 -0
  11. package/src/AdaptableState/Common/AggregationColumns.js +1 -0
  12. package/src/AdaptableState/Common/DataUpdateConfig.d.ts +15 -5
  13. package/src/AdaptableState/Common/TransposeConfig.d.ts +4 -9
  14. package/src/AdaptableState/InitialState.d.ts +1 -1
  15. package/src/AdaptableState/UserInterfaceState.d.ts +1 -1
  16. package/src/Api/ColumnApi.d.ts +1 -1
  17. package/src/Api/GridApi.d.ts +8 -0
  18. package/src/Api/Implementation/ApiBase.d.ts +1 -1
  19. package/src/Api/Implementation/ApiBase.js +1 -1
  20. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -1
  21. package/src/Api/Implementation/ColumnApiImpl.js +4 -4
  22. package/src/Api/Implementation/GridApiImpl.d.ts +2 -0
  23. package/src/Api/Implementation/GridApiImpl.js +9 -5
  24. package/src/Api/Implementation/LayoutHelpers.js +1 -1
  25. package/src/Api/Implementation/RowFormApiImpl.d.ts +1 -0
  26. package/src/Api/Implementation/RowFormApiImpl.js +13 -0
  27. package/src/Api/Internal/ActionColumnInternalApi.js +2 -19
  28. package/src/Api/Internal/ColumnInternalApi.d.ts +1 -1
  29. package/src/Api/Internal/ColumnInternalApi.js +5 -3
  30. package/src/Api/Internal/EventInternalApi.js +1 -1
  31. package/src/Api/Internal/ExportInternalApi.js +1 -1
  32. package/src/Api/RowFormApi.d.ts +5 -0
  33. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +1 -1
  34. package/src/Redux/Store/AdaptableReduxMerger.js +5 -6
  35. package/src/Strategy/CellSummaryModule.d.ts +1 -0
  36. package/src/Strategy/CellSummaryModule.js +3 -0
  37. package/src/Strategy/FormatColumnModule.js +2 -2
  38. package/src/Strategy/LayoutModule.js +23 -19
  39. package/src/Strategy/PlusMinusModule.d.ts +1 -0
  40. package/src/Strategy/PlusMinusModule.js +8 -2
  41. package/src/Strategy/StyledColumnModule.js +14 -6
  42. package/src/Strategy/TeamSharingModule.js +2 -2
  43. package/src/Strategy/Utilities/FormatColumn/{getFormatColumnSettingsTargetItems.d.ts → getFormatColumnRowTargetItems.d.ts} +1 -1
  44. package/src/Strategy/Utilities/FormatColumn/getFormatColumnRowTargetItems.js +22 -0
  45. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +5 -13
  46. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +1 -1
  47. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +1 -1
  48. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +1 -1
  49. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +1 -1
  50. package/src/Utilities/Extensions/StringExtensions.js +1 -1
  51. package/src/Utilities/Helpers/AdaptableHelper.js +2 -2
  52. package/src/Utilities/Helpers/FormatHelper.js +1 -1
  53. package/src/Utilities/Hooks/index.d.ts +1 -2
  54. package/src/Utilities/Hooks/index.js +1 -2
  55. package/src/Utilities/Services/LicenseService/index.js +1 -1
  56. package/src/Utilities/Services/RowSummaryService.d.ts +1 -1
  57. package/src/Utilities/Services/RowSummaryService.js +2 -2
  58. package/src/Utilities/getScopeViewItems.js +1 -1
  59. package/src/Utilities/only.d.ts +18 -0
  60. package/src/Utilities/only.js +40 -0
  61. package/src/Utilities/utils/chunk.d.ts +6 -0
  62. package/src/Utilities/utils/chunk.js +17 -0
  63. package/src/Utilities/utils/clamp.d.ts +5 -0
  64. package/src/Utilities/utils/clamp.js +7 -0
  65. package/src/Utilities/utils/cloneDeepWith.d.ts +9 -0
  66. package/src/Utilities/utils/cloneDeepWith.js +67 -0
  67. package/src/Utilities/utils/debounce.d.ts +20 -0
  68. package/src/Utilities/utils/debounce.js +121 -0
  69. package/src/Utilities/utils/flatten.d.ts +5 -0
  70. package/src/Utilities/utils/flatten.js +7 -0
  71. package/src/Utilities/utils/flattenDeep.d.ts +5 -0
  72. package/src/Utilities/utils/flattenDeep.js +7 -0
  73. package/src/Utilities/utils/get.d.ts +6 -0
  74. package/src/Utilities/utils/get.js +35 -0
  75. package/src/Utilities/utils/index.d.ts +22 -0
  76. package/src/Utilities/utils/index.js +22 -0
  77. package/src/Utilities/utils/isArray.d.ts +6 -0
  78. package/src/Utilities/utils/isArray.js +6 -0
  79. package/src/Utilities/utils/isEqual.d.ts +5 -0
  80. package/src/Utilities/utils/isEqual.js +124 -0
  81. package/src/Utilities/utils/isObject.d.ts +6 -0
  82. package/src/Utilities/utils/isObject.js +9 -0
  83. package/src/Utilities/utils/isPlainObject.d.ts +6 -0
  84. package/src/Utilities/utils/isPlainObject.js +17 -0
  85. package/src/Utilities/utils/kebabCase.d.ts +5 -0
  86. package/src/Utilities/utils/kebabCase.js +8 -0
  87. package/src/Utilities/utils/merge.d.ts +11 -0
  88. package/src/Utilities/utils/merge.js +40 -0
  89. package/src/Utilities/utils/mergeWith.d.ts +7 -0
  90. package/src/Utilities/utils/mergeWith.js +46 -0
  91. package/src/Utilities/utils/orderBy.d.ts +8 -0
  92. package/src/Utilities/utils/orderBy.js +30 -0
  93. package/src/Utilities/utils/parseInt.d.ts +6 -0
  94. package/src/Utilities/utils/parseInt.js +9 -0
  95. package/src/Utilities/utils/sentenceCase.d.ts +6 -0
  96. package/src/Utilities/utils/sentenceCase.js +15 -0
  97. package/src/Utilities/utils/startCase.d.ts +5 -0
  98. package/src/Utilities/utils/startCase.js +11 -0
  99. package/src/Utilities/utils/throttle.d.ts +17 -0
  100. package/src/Utilities/utils/throttle.js +19 -0
  101. package/src/Utilities/utils/toNumber.d.ts +5 -0
  102. package/src/Utilities/utils/toNumber.js +39 -0
  103. package/src/Utilities/utils/uniq.d.ts +7 -0
  104. package/src/Utilities/utils/uniq.js +9 -0
  105. package/src/Utilities/utils/uniqBy.d.ts +8 -0
  106. package/src/Utilities/utils/uniqBy.js +22 -0
  107. package/src/Utilities/utils/words.d.ts +7 -0
  108. package/src/Utilities/utils/words.js +10 -0
  109. package/src/Utilities/weightedAverage.d.ts +11 -0
  110. package/src/Utilities/weightedAverage.js +60 -46
  111. package/src/View/AdaptableComputedCSSVarsContext.js +1 -1
  112. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +1 -1
  113. package/src/View/Alert/Wizard/AlertButtonsEditor.js +1 -1
  114. package/src/View/Charting/ChartingWizard/AgChargingWizard/PreviewChartSection.js +1 -1
  115. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
  116. package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +1 -1
  117. package/src/View/Components/ColumnFilter/components/FloatingFilterInputList.js +1 -1
  118. package/src/View/Components/RangesComponent.js +1 -1
  119. package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -1
  120. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -1
  121. package/src/View/Components/ToolPanel/CustomToolPanelContent.js +1 -1
  122. package/src/View/Components/ValueSelector/index.js +7 -2
  123. package/src/View/Dashboard/CustomDashboardButton.js +1 -1
  124. package/src/View/Dashboard/Dashboard.js +1 -1
  125. package/src/View/Dashboard/DashboardPopup.js +4 -3
  126. package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
  127. package/src/View/DataSet/DataSetViewPanel.d.ts +1 -1
  128. package/src/View/Export/Wizard/NewReportWizard.js +8 -8
  129. package/src/View/Filter/FilterViewPanel.d.ts +1 -1
  130. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +19 -10
  131. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +1 -1
  132. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +2 -2
  133. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.d.ts +8 -0
  134. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.js +80 -0
  135. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +22 -61
  136. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -8
  137. package/src/View/GridFilter/GridFilterViewPanel.js +3 -3
  138. package/src/View/Layout/LayoutViewPanel.js +1 -1
  139. package/src/View/Layout/TransposedPopup.js +0 -1
  140. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  141. package/src/View/Note/NoteEditor.js +1 -1
  142. package/src/View/QuickSearch/useQuickSearchDebounced.js +1 -1
  143. package/src/View/SpecialColumnSettingsWizardStep.js +1 -1
  144. package/src/View/StyledColumn/Wizard/StyledColumnBadgeRowsSection.d.ts +8 -0
  145. package/src/View/StyledColumn/Wizard/{StyledColumnWizardSettingsSection.js → StyledColumnBadgeRowsSection.js} +19 -19
  146. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +10 -11
  147. package/src/View/SystemStatus/SystemStatusViewPanel.d.ts +1 -1
  148. package/src/View/Theme/ThemeEditor.js +1 -1
  149. package/src/View/Theme/ThemeField.js +1 -1
  150. package/src/View/Wizard/OnePageAdaptableWizard.js +1 -1
  151. package/src/View/Wizard/OnePageWizards.js +1 -1
  152. package/src/agGrid/AdaptableAgGrid.d.ts +1 -0
  153. package/src/agGrid/AdaptableAgGrid.js +29 -7
  154. package/src/agGrid/AgGridAdapter.js +4 -4
  155. package/src/agGrid/AgGridColumnAdapter.js +11 -4
  156. package/src/agGrid/AgGridExportAdapter.d.ts +2 -2
  157. package/src/agGrid/AgGridExportAdapter.js +7 -6
  158. package/src/agGrid/cellRenderers/PercentBarRenderer.js +17 -5
  159. package/src/components/ColorPicker/ColorPicker.js +1 -1
  160. package/src/components/DropdownButton/renderItem.js +1 -1
  161. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +1 -1
  162. package/src/components/FormLayout/index.js +1 -1
  163. package/src/components/OverlayTrigger/index.js +1 -1
  164. package/src/components/Select/Select.js +4 -0
  165. package/src/env.js +2 -2
  166. package/src/layout-manager/src/isLayoutEqual.js +1 -1
  167. package/src/metamodel/adaptable.metamodel.d.ts +12 -1
  168. package/src/metamodel/adaptable.metamodel.js +1 -1
  169. package/src/migration/VersionUpgrade22.js +9 -0
  170. package/themes/dark.css +2 -3
  171. package/themes/light.css +1 -1
  172. package/tsconfig.esm.tsbuildinfo +1 -1
  173. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +0 -12
  174. package/src/Utilities/Hooks/useAdaptableState.d.ts +0 -3
  175. package/src/Utilities/Hooks/useAdaptableState.js +0 -39
  176. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +0 -8
  177. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +0 -31
  178. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.d.ts +0 -8
  179. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.d.ts → FormatColumnColumnScopeWizardSection.d.ts} +0 -0
  180. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.js → FormatColumnColumnScopeWizardSection.js} +0 -0
@@ -537,6 +537,10 @@ export interface GridApi {
537
537
  * @param rowNodes AG Grid rows
538
538
  */
539
539
  refreshRowNodes(rowNodes?: IRowNode[]): void;
540
+ /**
541
+ * Forces a re-render of the Grid Header
542
+ */
543
+ refreshGridHeader(): void;
540
544
  /**
541
545
  * Forces a re-render of all Group Rows (including aggregations)
542
546
  */
@@ -596,6 +600,10 @@ export interface GridApi {
596
600
  * Opens a window with a transposed view of Grid
597
601
  */
598
602
  showTransposedView(transposeConfig?: TransposeConfig): void;
603
+ /**
604
+ * Closes the transposed view of the Grid (if open)
605
+ */
606
+ closeTransposedView(): void;
599
607
  /**
600
608
  * Return all AG Grid columns
601
609
  */
@@ -19,7 +19,7 @@ export declare abstract class ApiBase {
19
19
  protected _adaptable: IAdaptable;
20
20
  /**
21
21
  * Constructor for all the api classes which simply takes and assigns an instance of Adaptable
22
- * @param _adaptable the core IAdaptable object
22
+ * @param _adaptable core IAdaptable object - for INTERNAL USE ONLY and not part of public API
23
23
  */
24
24
  constructor(_adaptable: IAdaptable);
25
25
  protected getAdatableLogger(): AdaptableLogger;
@@ -5,7 +5,7 @@ export class ApiBase {
5
5
  _adaptable;
6
6
  /**
7
7
  * Constructor for all the api classes which simply takes and assigns an instance of Adaptable
8
- * @param _adaptable the core IAdaptable object
8
+ * @param _adaptable core IAdaptable object - for INTERNAL USE ONLY and not part of public API
9
9
  */
10
10
  constructor(_adaptable) {
11
11
  this._adaptable = _adaptable;
@@ -78,7 +78,7 @@ export declare class ColumnApiImpl extends ApiBase implements ColumnApi {
78
78
  getAggregatableColumns(): AdaptableColumn[];
79
79
  getQueryableColumns(): AdaptableColumn[];
80
80
  getExportableColumns(): AdaptableColumn[];
81
- getAlwaysHiddenColumns(): AdaptableColumn[];
81
+ getUIHiddenColumns(): AdaptableColumn[];
82
82
  private logMissingColumnWarning;
83
83
  getPrimaryKeyColumn(): AdaptableColumn<any>;
84
84
  getDefaultAggFunc(columnId: string): string;
@@ -15,7 +15,7 @@ const ROW_GROUP_COLUMN_DEFAULTS = {
15
15
  readOnly: false,
16
16
  resizable: true,
17
17
  visible: true,
18
- alwaysHidden: false,
18
+ isUIHiddenColumn: false,
19
19
  fieldOnly: false,
20
20
  queryable: false,
21
21
  sortable: false,
@@ -118,7 +118,7 @@ export class ColumnApiImpl extends ApiBase {
118
118
  return this.getGridApi().getInternalState().Columns ?? [];
119
119
  }
120
120
  getUIAvailableColumns() {
121
- return this.getColumns().filter((c) => !c.alwaysHidden &&
121
+ return this.getColumns().filter((c) => !c.isUIHiddenColumn &&
122
122
  !c.isGeneratedSelectionColumn &&
123
123
  // currently (20.0.7) we don't display Pivot Totals in UI
124
124
  !c.isPivotTotalColumn);
@@ -467,8 +467,8 @@ export class ColumnApiImpl extends ApiBase {
467
467
  getExportableColumns() {
468
468
  return this.getColumns().filter((c) => c.exportable);
469
469
  }
470
- getAlwaysHiddenColumns() {
471
- return this.getColumns().filter((c) => c.alwaysHidden);
470
+ getUIHiddenColumns() {
471
+ return this.getColumns().filter((c) => c.isUIHiddenColumn);
472
472
  }
473
473
  logMissingColumnWarning(columnId) {
474
474
  if (this.getColumnOptions().showMissingColumnsWarning === true) {
@@ -138,6 +138,7 @@ export declare class GridApiImpl extends ApiBase implements GridApi {
138
138
  refreshRowNode(rowNode: IRowNode): void;
139
139
  refreshRowNodes(rowNodes?: IRowNode[]): void;
140
140
  refreshGroupRowNodes(): void;
141
+ refreshGridHeader(): void;
141
142
  isCellEditable(gridCell: GridCell): boolean;
142
143
  isCellEdited(gridCell: GridCell): boolean;
143
144
  isEveryCellEditable(gridCells: GridCell[]): boolean;
@@ -152,6 +153,7 @@ export declare class GridApiImpl extends ApiBase implements GridApi {
152
153
  openGridInfoSettingsPanel(): void;
153
154
  getAgGridRowModelType(): RowModelType;
154
155
  showTransposedView(transposeConfig?: TransposeConfig): void;
156
+ closeTransposedView(): void;
155
157
  getAllAgGridColumns(): Column<any>[];
156
158
  updateAgGridColumnState(columnState: ColumnState): void;
157
159
  updateAgGridColumnStates(columnStates: ColumnState[]): void;
@@ -98,15 +98,15 @@ export class GridApiImpl extends ApiBase {
98
98
  async manageGridData(dataRowConfig, dataUpdateConfig) {
99
99
  const transactionResult = await this._adaptable.manageGridRows(dataRowConfig, dataUpdateConfig);
100
100
  if (Array.isArray(transactionResult.removedRows) && transactionResult.removedRows.length) {
101
- const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.dataRows.delete, transactionResult.removedRows, 'Delete');
101
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.deleteRows, transactionResult.removedRows, 'Delete');
102
102
  this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
103
103
  }
104
104
  if (Array.isArray(transactionResult.updatedRows) && transactionResult.updatedRows.length) {
105
- const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.dataRows.update, transactionResult.updatedRows, 'Update');
105
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.updateRows, transactionResult.updatedRows, 'Update');
106
106
  this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
107
107
  }
108
108
  if (Array.isArray(transactionResult.addedRows) && transactionResult.addedRows.length) {
109
- const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.dataRows.add, transactionResult.addedRows, 'Add');
109
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataRowConfig.addRows, transactionResult.addedRows, 'Add');
110
110
  this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
111
111
  }
112
112
  return transactionResult;
@@ -547,6 +547,9 @@ export class GridApiImpl extends ApiBase {
547
547
  this.getAgGridApi().refreshClientSideRowModel('group');
548
548
  this._adaptable.updateRowGroupsAndColumnGroupsExpandedState();
549
549
  }
550
+ refreshGridHeader() {
551
+ this._adaptable.refreshGridHeader();
552
+ }
550
553
  isCellEditable(gridCell) {
551
554
  // If not Grid Cell or Column then return false - GridCell.column may be undefined for cells from synthetic columns created by AG Grid (ex. autoGroup columns)
552
555
  if (!gridCell || !gridCell.column || !gridCell.rowNode) {
@@ -607,7 +610,6 @@ export class GridApiImpl extends ApiBase {
607
610
  showTransposedView(transposeConfig = {}) {
608
611
  const transposedColumnId = transposeConfig.transposedColumnId ?? this.getOptionsApi().getPrimaryKey();
609
612
  const hideTransposedColumn = transposeConfig.hideTransposedColumn ?? true;
610
- const autosize = transposeConfig.autosize ?? true;
611
613
  const columnsToTranspose = transposeConfig.columnsToTranspose;
612
614
  const rowsToTranspose = transposeConfig.rowsToTranspose;
613
615
  this.getAdaptableInternalApi().showPopupWindow({
@@ -618,12 +620,14 @@ export class GridApiImpl extends ApiBase {
618
620
  popupProps: {
619
621
  transposedColumnId,
620
622
  hideTransposedColumn,
621
- autosize,
622
623
  columnsToTranspose,
623
624
  rowsToTranspose,
624
625
  },
625
626
  });
626
627
  }
628
+ closeTransposedView() {
629
+ this.getUserInterfaceApi().closeCustomWindowPopup('WINDOW_SHOW_TRANSPOSED_VIEW');
630
+ }
627
631
  getAllAgGridColumns() {
628
632
  return this._adaptable.getAllGridColumns();
629
633
  }
@@ -1,4 +1,4 @@
1
- import isEqual from 'lodash/isEqual';
1
+ import isEqual from '../../Utilities/utils/isEqual';
2
2
  import { isPivotLayoutModel } from '../../layout-manager/src/isPivotLayoutModel';
3
3
  import { normalizeTableLayoutModel, normalizePivotLayoutModel, } from '../../layout-manager/src/normalizeLayoutModel';
4
4
  import { simplifyTableLayoutModel, simplifyPivotLayoutModel, } from '../../layout-manager/src/simplifyLayoutModel';
@@ -8,4 +8,5 @@ export declare class RowFormApiImpl extends ApiBase implements RowFormApi {
8
8
  displayEditRowForm(primaryKey: any): void;
9
9
  displayCreateRowForm(): void;
10
10
  displayCloneRowForm(primaryKey?: any): void;
11
+ displayDeleteRowForm(primaryKey?: any): void;
11
12
  }
@@ -44,4 +44,17 @@ export class RowFormApiImpl extends ApiBase {
44
44
  },
45
45
  }));
46
46
  }
47
+ displayDeleteRowForm(primaryKey) {
48
+ const rowNode = this.getGridApi().getRowNodeForPrimaryKey(primaryKey);
49
+ if (!rowNode) {
50
+ this.logWarn(`Can NOT delete row: rowNode not found for primaryKey ${primaryKey}`);
51
+ }
52
+ const eventInfo = {
53
+ type: 'rowDeleted',
54
+ rowNode: rowNode,
55
+ ...this.getAdaptableInternalApi().buildBaseContext(),
56
+ };
57
+ this.getEventApi().internalApi.fireRowFormSubmittedEvent(eventInfo);
58
+ this.getRowFormOptions().onRowFormSubmit?.(eventInfo);
59
+ }
47
60
  }
@@ -109,27 +109,10 @@ export class ActionColumnInternalApi extends ApiBase {
109
109
  break;
110
110
  case 'delete':
111
111
  button.onClick = (button, context) => {
112
- const eventInfo = {
113
- type: 'rowDeleted',
114
- rowNode: context.rowNode,
115
- ...this.getAdaptableInternalApi().buildBaseContext(),
116
- };
117
- this.getEventApi().internalApi.fireRowFormSubmittedEvent(eventInfo);
118
- this.getRowFormOptions().onRowFormSubmit?.(eventInfo);
112
+ this.getRowFormApi().displayDeleteRowForm(context.primaryKeyValue);
119
113
  };
120
114
  button.tooltip = button.tooltip ? button.tooltip : 'Delete Row';
121
- button.icon = button.icon ?? {
122
- name: 'delete',
123
- };
124
- break;
125
- case 'edit':
126
- button.onClick = (button, context) => {
127
- this.getRowFormApi().displayEditRowForm(context.primaryKeyValue);
128
- };
129
- button.tooltip = button.tooltip ? button.tooltip : 'Edit Row';
130
- button.icon = button.icon ?? {
131
- name: 'edit',
132
- };
115
+ button.icon = button.icon ?? { name: 'delete' };
133
116
  break;
134
117
  }
135
118
  }
@@ -32,6 +32,6 @@ export declare class ColumnInternalApi extends ApiBase {
32
32
  private buildColumnHeaderContext;
33
33
  hasArrayDataType(column: AdaptableColumn): boolean;
34
34
  getQueryableColumnsForUIEditor(): AdaptableColumn[];
35
- isAlwaysHiddenColumn(columnIdentifier: string | ColDef): boolean;
35
+ isColumnUIHidden(columnIdentifier: string | ColDef): boolean;
36
36
  getColumnDateTypes(): AdaptableColumnDataType[];
37
37
  }
@@ -1,6 +1,6 @@
1
1
  import { ApiBase } from '../Implementation/ApiBase';
2
2
  import { AG_GRID_GROUPED_COLUMN } from '../../Utilities/Constants/GeneralConstants';
3
- import uniq from 'lodash/uniq';
3
+ import uniq from '../../Utilities/utils/uniq';
4
4
  import StringExtensions from '../../Utilities/Extensions/StringExtensions';
5
5
  import { isPivotGrandTotal, isPivotResultColumn } from '../Implementation/ColumnApiImpl';
6
6
  import { destructurePivotColumnId } from '../../layout-manager/src/destructurePivotColumnId';
@@ -277,9 +277,11 @@ export class ColumnInternalApi extends ApiBase {
277
277
  getQueryableColumnsForUIEditor() {
278
278
  return this.getColumnApi()
279
279
  .getQueryableColumns()
280
- .filter((column) => !column.isGeneratedPivotResultColumn && !column.isGeneratedRowGroupColumn && !column.isGeneratedSelectionColumn);
280
+ .filter((column) => !column.isGeneratedPivotResultColumn &&
281
+ !column.isGeneratedRowGroupColumn &&
282
+ !column.isGeneratedSelectionColumn);
281
283
  }
282
- isAlwaysHiddenColumn(columnIdentifier) {
284
+ isColumnUIHidden(columnIdentifier) {
283
285
  return this.getColumnApi().hasColumnType(columnIdentifier, HIDDEN_COLUMN_TYPE);
284
286
  }
285
287
  getColumnDateTypes() {
@@ -1,5 +1,5 @@
1
1
  import { ApiBase } from '../Implementation/ApiBase';
2
- import isEqual from 'lodash/isEqual';
2
+ import isEqual from '../../Utilities/utils/isEqual';
3
3
  export class EventInternalApi extends ApiBase {
4
4
  fireGridSortedEvent() {
5
5
  if (this.isAdapTableReady()) {
@@ -41,7 +41,7 @@ export class ExportInternalApi extends ApiBase {
41
41
  }
42
42
  break;
43
43
  case 'VisibleColumns':
44
- // hope that visibile column property is updated whenever the layout changes... (need to check!)
44
+ // hope that visible column property is updated whenever the layout changes... (need to check!)
45
45
  if (!cellDataChangedInfo.column.visible) {
46
46
  return false;
47
47
  }
@@ -16,4 +16,9 @@ export interface RowFormApi {
16
16
  * @param primaryKey - Primary Key of the duplicated row
17
17
  */
18
18
  displayCloneRowForm(primaryKey?: any): void;
19
+ /**
20
+ * Deletes row from grid (with event fired) - note: no visible Row Form is displayed
21
+ * @param primaryKey - Primary Key of the deleted row
22
+ */
23
+ displayDeleteRowForm(primaryKey?: any): void;
19
24
  }
@@ -1,4 +1,4 @@
1
- import debounce from 'lodash/debounce';
1
+ import debounce from '../../Utilities/utils/debounce';
2
2
  import { MergeStateFunction } from './AdaptableReduxMerger';
3
3
  import { AdaptableLogger } from '../../agGrid/AdaptableLogger';
4
4
  import { buildAdaptableStateFunctionConfig } from './buildAdaptableStateFunctionConfig';
@@ -1,8 +1,7 @@
1
- import mergeWith from 'lodash/mergeWith';
2
- import merge from 'lodash/merge';
3
- import isArray from 'lodash/isArray';
4
- import extend from 'lodash/extend';
5
- import isObject from 'lodash/isObject';
1
+ import mergeWith from '../../Utilities/utils/mergeWith';
2
+ import merge from '../../Utilities/utils/merge';
3
+ import isArray from '../../Utilities/utils/isArray';
4
+ import isObject from '../../Utilities/utils/isObject';
6
5
  import { AdaptableLogger } from '../../agGrid/AdaptableLogger';
7
6
  import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper';
8
7
  function customizer(objValue, srcValue) {
@@ -112,7 +111,7 @@ export function MergeStateFunction(oldState, newState) {
112
111
  }
113
112
  // main merge function
114
113
  export function MergeState(oldState, newState) {
115
- const result = extend({}, oldState);
114
+ const result = Object.assign({}, oldState);
116
115
  for (const key in newState) {
117
116
  if (!newState.hasOwnProperty(key)) {
118
117
  continue;
@@ -18,6 +18,7 @@ export type WeightedAverageConfig = {
18
18
  export declare class CellSummaryModule extends AdaptableModuleBase implements ICellSummaryModule {
19
19
  cachedCellSummary: WeakMap<SelectedCellInfo<any>, CellSummmaryInfo>;
20
20
  constructor(api: AdaptableApi);
21
+ isModuleAvailable(): boolean;
21
22
  getViewAccessLevel(): AccessLevel;
22
23
  createColumnMenuItems(column: AdaptableColumn): import("../Utilities/MenuItem").MenuItemShowPopup<"separator" | "calculated-column-edit" | "cell-summary-show" | "chart-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-group" | "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">[];
23
24
  createContextMenuItems(menuContext: ContextMenuContext): import("../Utilities/MenuItem").MenuItemShowPopup<"calculated-column-edit" | "cell-summary-show" | "column-group" | "column-filter-group" | "column-filter-clear" | "column-filter-suspend" | "column-filter-unsuspend" | "column-info-show" | "dashboard-group" | "dashboard-collapse" | "dashboard-configure" | "dashboard-dock" | "dashboard-expand" | "dashboard-float" | "dashboard-hide" | "dashboard-show" | "data-import" | "grid-group" | "grid-info-show" | "layout-edit" | "settings-panel-open" | "system-status-show" | "menu-group" | "alert-clear" | "bulk-update-apply" | "column-filter-on-cell-value" | "comment-add" | "comment-remove" | "edit-group" | "export-group" | "export-all-data" | "export-all-data-excel-download" | "export-all-data-visualexcel-download" | "export-all-data-csv" | "export-all-data-csv-download" | "export-all-data-csv-clipboard" | "export-all-data-json" | "export-all-data-json-download" | "export-all-data-json-clipboard" | "export-current-layout" | "export-current-layout-excel-download" | "export-current-layout-visualexcel-download" | "export-current-layout-csv" | "export-current-layout-csv-download" | "export-current-layout-csv-clipboard" | "export-current-layout-json" | "export-current-layout-json-download" | "export-current-layout-json-clipboard" | "export-selected-data" | "export-selected-data-excel-download" | "export-selected-data-visualexcel-download" | "export-selected-data-csv" | "export-selected-data-csv-download" | "export-selected-data-csv-clipboard" | "export-selected-data-json" | "export-selected-data-json-download" | "export-selected-data-json-clipboard" | "fdc3-broadcast" | "fdc3-raise-intent" | "flashing-cell-clear" | "flashing-row-clear" | "layout-aggregated-view" | "layout-auto-size" | "layout-clear-selection" | "layout-select-all" | "note-add" | "note-remove" | "smart-edit-apply">[];
@@ -12,6 +12,9 @@ export class CellSummaryModule extends AdaptableModuleBase {
12
12
  constructor(api) {
13
13
  super(ModuleConstants.CellSummaryModuleId, ModuleConstants.CellSummaryFriendlyName, 'cells', 'CellSummaryPopup', 'See summary information on a group of numeric cells using multiple summary operations', api);
14
14
  }
15
+ isModuleAvailable() {
16
+ return super.isModuleAvailable() && this.api.gridApi.isGridRangeSelectable();
17
+ }
15
18
  getViewAccessLevel() {
16
19
  return 'Full';
17
20
  }
@@ -9,7 +9,7 @@ import { MoveFormatColumn } from '../View/FormatColumn/MoveFormatColumn';
9
9
  import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems';
10
10
  import { getRuleViewItems } from '../Utilities/getRuleViewItems';
11
11
  import { getScopeViewItems } from '../Utilities/getScopeViewItems';
12
- import { getFormatColumnSettingsTargetItems } from './Utilities/FormatColumn/getFormatColumnSettingsTargetItems';
12
+ import { getFormatColumnRowTargetItems } from './Utilities/FormatColumn/getFormatColumnRowTargetItems';
13
13
  import { renderFormatColumnStyleSummary } from '../View/FormatColumn/Wizard/FormatColumnStyleWizardSection';
14
14
  export class FormatColumnModule extends AdaptableModuleBase {
15
15
  constructor(api) {
@@ -87,7 +87,7 @@ export class FormatColumnModule extends AdaptableModuleBase {
87
87
  values: [formatColumn.Name],
88
88
  },
89
89
  getScopeViewItems(formatColumn.Scope, this.api),
90
- getFormatColumnSettingsTargetItems(formatColumn),
90
+ getFormatColumnRowTargetItems(formatColumn),
91
91
  formatColumn.Rule && getRuleViewItems(formatColumn.Rule, this.api),
92
92
  {
93
93
  name: 'Style',
@@ -11,7 +11,7 @@ import { getLayoutFilterViewItems } from './Utilities/Layout/getLayoutFilterView
11
11
  import { getLayoutSortViewItems } from './Utilities/Layout/getLayoutSortViewItems';
12
12
  import { WEIGHTED_AVERAGE_AGG_FN_NAME } from '../AdaptableState/Common/AggregationColumns';
13
13
  import { SHOW_PIVOT_COLUMN_DETAILS } from '../View/Components/Popups/WindowPopups/windowFactory';
14
- import flattenDeep from 'lodash/flattenDeep';
14
+ import flattenDeep from '../Utilities/utils/flattenDeep';
15
15
  import StringExtensions from '../Utilities/Extensions/StringExtensions';
16
16
  import { getGridFilterViewItems } from '../View/Layout/Wizard/getGridFilterPreview';
17
17
  import { RowSummaryService } from '../Utilities/Services/RowSummaryService';
@@ -143,24 +143,26 @@ export class LayoutModule extends AdaptableModuleBase {
143
143
  this.api.columnApi.hideColumn(column.columnId);
144
144
  }));
145
145
  }
146
- const hasExistingSelection = this.api.gridApi.getSelectedCellInfo()?.gridCells?.length;
147
- if (hasExistingSelection) {
148
- returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select-preserve', 'Select Column (Preserve Selection)', 'select-fwd', () => {
149
- this.api.columnApi.addColumnToSelection(column.columnId);
150
- }));
151
- returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select-reset', 'Select Column (Reset Selection)', 'tab-unselected', () => {
152
- this.api.columnApi.selectColumn(column.columnId);
153
- }));
154
- }
155
- else {
156
- returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select', 'Select Column', 'tab-unselected', () => {
157
- this.api.columnApi.selectColumn(column.columnId);
146
+ if (this.api.gridApi.isGridRangeSelectable()) {
147
+ const hasExistingSelection = this.api.gridApi.getSelectedCellInfo()?.gridCells?.length;
148
+ if (hasExistingSelection) {
149
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select-preserve', 'Select Column (Preserve Selection)', 'select-fwd', () => {
150
+ this.api.columnApi.addColumnToSelection(column.columnId);
151
+ }));
152
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select-reset', 'Select Column (Reset Selection)', 'tab-unselected', () => {
153
+ this.api.columnApi.selectColumn(column.columnId);
154
+ }));
155
+ }
156
+ else {
157
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-select', 'Select Column', 'tab-unselected', () => {
158
+ this.api.columnApi.selectColumn(column.columnId);
159
+ }));
160
+ }
161
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-grid-select', 'Select Grid', 'select-all', () => {
162
+ this.api.gridApi.selectAll();
158
163
  }));
159
164
  }
160
165
  }
161
- returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-grid-select', 'Select Grid', 'select-all', () => {
162
- this.api.gridApi.selectAll();
163
- }));
164
166
  return returnColumnMenuItems;
165
167
  }
166
168
  createContextMenuItems(menuContext) {
@@ -179,9 +181,11 @@ export class LayoutModule extends AdaptableModuleBase {
179
181
  this.api.gridApi.deselectAll();
180
182
  }));
181
183
  }
182
- returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-select-all', 'Select Grid', 'select-all', () => {
183
- this.api.gridApi.selectAll();
184
- }));
184
+ if (this.api.gridApi.isGridRangeSelectable()) {
185
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-select-all', 'Select Grid', 'select-all', () => {
186
+ this.api.gridApi.selectAll();
187
+ }));
188
+ }
185
189
  returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-auto-size', 'Auto Size', 'arrow-expand', () => {
186
190
  this.api.columnApi.autosizeAllColumns();
187
191
  }));
@@ -12,6 +12,7 @@ export declare class PlusMinusModule extends AdaptableModuleBase implements IPlu
12
12
  private shouldHandleKeyDown;
13
13
  private adaptable;
14
14
  constructor(api: AdaptableApi);
15
+ isModuleAvailable(): boolean;
15
16
  getModuleAdaptableObjects(config?: LayoutExtendedConfig): AdaptableObject[];
16
17
  getExplicitlyReferencedColumnIds(plusMinusNudge: PlusMinusNudge): string[];
17
18
  getReferencedNamedQueryNames(plusMinusNudge: PlusMinusNudge): string[];
@@ -18,6 +18,9 @@ export class PlusMinusModule extends AdaptableModuleBase {
18
18
  this.shouldHandleKeyDown = false;
19
19
  this.adaptable = api.internalApi.getAdaptableInstance();
20
20
  }
21
+ isModuleAvailable() {
22
+ return super.isModuleAvailable() && this.api.gridApi.isGridRangeSelectable();
23
+ }
21
24
  getModuleAdaptableObjects(config) {
22
25
  return this.api.plusMinusApi.getAllPlusMinus(config);
23
26
  }
@@ -36,11 +39,14 @@ export class PlusMinusModule extends AdaptableModuleBase {
36
39
  return this.api.namedQueryApi.internalApi.getReferencedNamedQueryNames(plusMinusNudge.Rule?.BooleanExpression);
37
40
  }
38
41
  onAdaptableReady() {
39
- let plusMinusNudges = this.api.plusMinusApi.getAllPlusMinus();
40
- this.shouldHandleKeyDown = ArrayExtensions.IsNotNullOrEmpty(plusMinusNudges);
42
+ const hasPlusMinusNudges = ArrayExtensions.IsNotNullOrEmpty(this.api.plusMinusApi.getAllPlusMinus());
43
+ this.shouldHandleKeyDown = this.isModuleAvailable() && hasPlusMinusNudges;
41
44
  if (this.shouldHandleKeyDown) {
42
45
  this.setupKeyDownListener();
43
46
  }
47
+ else if (hasPlusMinusNudges && !this.api.gridApi.isGridRangeSelectable()) {
48
+ this.api.consoleWarn('Plus/Minus module is not available because AG Grid is not selectable');
49
+ }
44
50
  }
45
51
  setupKeyDownListener() {
46
52
  this.adaptable._on('KeyDown', (keyDownEvent) => {
@@ -187,14 +187,22 @@ export class StyledColumnModule extends AdaptableModuleBase {
187
187
  });
188
188
  }
189
189
  if (styledColumn.BadgeStyle) {
190
+ let rowTypes = [];
191
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows) {
192
+ rowTypes.push('Data');
193
+ }
194
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows) {
195
+ rowTypes.push('Group');
196
+ }
197
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows) {
198
+ rowTypes.push('Summary');
199
+ }
200
+ if (!styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows) {
201
+ rowTypes.push('Total');
202
+ }
190
203
  specificTypeItems.push({
191
204
  name: 'Rows',
192
- values: [
193
- `Data Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows ? 'No' : 'Yes'}`,
194
- `Group Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows ? 'No' : 'Yes'}`,
195
- `Summary Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows ? 'No' : 'Yes'}`,
196
- `Total Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows ? 'No' : 'Yes'}`,
197
- ],
205
+ values: rowTypes
198
206
  });
199
207
  }
200
208
  if (styledColumn.BadgeStyle) {
@@ -2,13 +2,13 @@ import { AdaptableModuleBase } from './AdaptableModuleBase';
2
2
  import * as ModuleConstants from '../Utilities/Constants/ModuleConstants';
3
3
  import { TEAMSHARING_GET, TEAMSHARING_IMPORT_ITEM, TEAMSHARING_LINK_ITEM, TEAMSHARING_PROCESS_IMPORT, TEAMSHARING_REMOVE_ITEM, TEAMSHARING_SET, TEAMSHARING_SHARE, TEAMSHARING_UPDATE_ITEM, TeamSharingUpdateItem, } from '../Redux/ActionsReducers/TeamSharingRedux';
4
4
  import * as TeamSharingRedux from '../Redux/ActionsReducers/TeamSharingRedux';
5
- import isEqual from 'lodash/isEqual';
5
+ import isEqual from '../Utilities/utils/isEqual';
6
6
  import { LAYOUT_SAVE } from '../Redux/ActionsReducers/LayoutRedux';
7
7
  import { getSharedEntityStaleDepsItemView, SharedEntityTypeItemView, getSharedEntityActiveStatusObjectView, } from '../View/TeamSharing/SharedEntityObjectView';
8
8
  import { TeamSharingApplyButton } from '../View/TeamSharing/TeamSharingApplyButton';
9
9
  import { SharedEntityDependencies } from '../View/TeamSharing/SharedEntityDependencies';
10
10
  import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
11
- import flatten from 'lodash/flatten';
11
+ import flatten from '../Utilities/utils/flatten';
12
12
  import AdaptableHelper from '../Utilities/Helpers/AdaptableHelper';
13
13
  export class TeamSharingModule extends AdaptableModuleBase {
14
14
  SKIP_TEAMSHARING_UPDATE_ACTIONS = [
@@ -1,5 +1,5 @@
1
1
  import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
2
- export declare const getFormatColumnSettingsTargetItems: (formatColumn: FormatColumn) => {
2
+ export declare const getFormatColumnRowTargetItems: (formatColumn: FormatColumn) => {
3
3
  name: string;
4
4
  values: string[];
5
5
  };
@@ -0,0 +1,22 @@
1
+ export const getFormatColumnRowTargetItems = (formatColumn) => {
2
+ let values = [];
3
+ if (formatColumn.RowScope) {
4
+ if (!formatColumn.RowScope.ExcludeDataRows) {
5
+ values.push('Data');
6
+ }
7
+ if (!formatColumn.RowScope.ExcludeGroupRows) {
8
+ values.push('Group');
9
+ }
10
+ if (!formatColumn.RowScope.ExcludeSummaryRows) {
11
+ values.push('Summary');
12
+ }
13
+ if (!formatColumn.RowScope.ExcludeTotalRows) {
14
+ values.push('Total');
15
+ }
16
+ }
17
+ values = values.filter(Boolean);
18
+ return {
19
+ name: 'Rows',
20
+ values: values.length > 0 ? values : ['-'],
21
+ };
22
+ };
@@ -1,18 +1,10 @@
1
1
  export const getFormatColumnSettingsViewItems = (formatColumn) => {
2
2
  let values = [];
3
- if (formatColumn.RowScope) {
4
- if (formatColumn.RowScope.ExcludeDataRows) {
5
- values.push('Exclude Data Rows');
6
- }
7
- if (formatColumn.RowScope.ExcludeGroupRows) {
8
- values.push('Exclude Group Rows');
9
- }
10
- if (formatColumn.RowScope.ExcludeSummaryRows) {
11
- values.push('Exclude Summary Rows');
12
- }
13
- if (formatColumn.RowScope.ExcludeTotalRows) {
14
- values.push('Exclude Total Rows');
15
- }
3
+ if (!formatColumn.Target || formatColumn.Target === 'cell') {
4
+ values.push('Target: Column Cells');
5
+ }
6
+ else {
7
+ values.push('Target: Column Header');
16
8
  }
17
9
  if (formatColumn.ColumnGroupScope) {
18
10
  values.push(`Column Groups: ${formatColumn.ColumnGroupScope === 'Both' ? 'Always' : formatColumn.ColumnGroupScope}`);
@@ -1,4 +1,4 @@
1
- import parseInt from 'lodash/parseInt';
1
+ import parseInt from '../utils/parseInt';
2
2
  import { ExpressionEvaluationError } from '../../parser/src/ExpressionEvaluationError';
3
3
  import { handleColumnFunction, handleWhereFunction, } from './expressionFunctionUtils';
4
4
  import { aggregatedScalarExpressionFunctions, } from './aggregatedScalarExpressionFunctions';
@@ -451,7 +451,7 @@ export const aggregatedScalarExpressionFunctions = {
451
451
  handler(args, context) {
452
452
  const distinctColumnParameter = extractColumnParameter('ONLY', args);
453
453
  const onlyColumnName = distinctColumnParameter.value;
454
- const columnType = validateColumnType(onlyColumnName, ['number'], 'ONLY', context.adaptableApi);
454
+ const columnType = validateColumnType(onlyColumnName, ['number', 'text'], 'ONLY', context.adaptableApi);
455
455
  const groupByParameter = extractParameter('ONLY', 'operand', ['GROUP_BY'], args, {
456
456
  isOptional: true,
457
457
  });
@@ -1,7 +1,7 @@
1
1
  import { ExpressionEvaluationError } from '../../parser/src/ExpressionEvaluationError';
2
2
  import StringExtensions from '../Extensions/StringExtensions';
3
3
  import { filter } from 'rxjs/operators';
4
- import toNumber from 'lodash/toNumber';
4
+ import toNumber from '../utils/toNumber';
5
5
  import { evaluateNode } from '../../parser/src/evaluator';
6
6
  // string functions may be case (in)sensitive, see internalApi.isTextComparisonCaseSensitive()
7
7
  // if case is insensitive, we convert ALL involved strings to lower case
@@ -1,6 +1,6 @@
1
1
  import { defer, of } from 'rxjs';
2
2
  import { count, debounceTime, delay, filter, map, mergeAll, mergeMap, startWith, takeUntil, tap, withLatestFrom, } from 'rxjs/operators';
3
- import parseInt from 'lodash/parseInt';
3
+ import parseInt from '../utils/parseInt';
4
4
  import { ExpressionEvaluationError } from '../../parser/src/ExpressionEvaluationError';
5
5
  import { extractColumnParameter, extractParameter, getDataChangeLog$, getGridChangeLog$, getNumericValue, handleColumnFunction, handleWhereFunction, validateColumnType, } from './expressionFunctionUtils';
6
6
  import { getTypedKeys } from '../Extensions/TypeExtensions';
@@ -1,4 +1,4 @@
1
- import startCase from 'lodash/startCase';
1
+ import startCase from '../utils/startCase';
2
2
  export function IsNull(stringToCheck) {
3
3
  return stringToCheck == null || stringToCheck == undefined;
4
4
  }
@@ -1,5 +1,5 @@
1
- import cloneDeepWith from 'lodash/cloneDeepWith';
2
- import isPlainObject from 'lodash/isPlainObject';
1
+ import cloneDeepWith from '../utils/cloneDeepWith';
2
+ import isPlainObject from '../utils/isPlainObject';
3
3
  import { createUuid } from '../../AdaptableState/Uuid';
4
4
  import packageJson from '../../../package.json';
5
5
  const GET_CURRENT_VERSION = () => {