@adaptabletools/adaptable 11.1.1 → 11.1.4

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 (102) hide show
  1. package/base.css +2 -0
  2. package/bundle.cjs.js +119 -119
  3. package/index.css +3 -0
  4. package/package.json +3 -3
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/IAdaptable.d.ts +3 -2
  8. package/src/AdaptableOptions/AdaptableOptions.d.ts +49 -49
  9. package/src/AdaptableOptions/ContainerOptions.d.ts +1 -1
  10. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -1
  11. package/src/AdaptableOptions/EditOptions.d.ts +4 -0
  12. package/src/AdaptableOptions/LayoutOptions.d.ts +11 -0
  13. package/src/AdaptableOptions/NotificationsOptions.d.ts +2 -2
  14. package/src/AdaptableOptions/SmartEdit.d.ts +34 -0
  15. package/src/AdaptableOptions/SmartEdit.js +2 -0
  16. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  17. package/src/Api/Implementation/ColumnApiImpl.js +1 -1
  18. package/src/Api/Implementation/FilterApiImpl.js +8 -2
  19. package/src/Api/Implementation/GridApiImpl.d.ts +3 -3
  20. package/src/Api/Implementation/GridApiImpl.js +15 -18
  21. package/src/Api/Implementation/InternalApiImpl.js +1 -1
  22. package/src/Api/Implementation/LayoutApiImpl.js +7 -1
  23. package/src/Api/Implementation/SmartEditApiImpl.d.ts +3 -2
  24. package/src/Api/SmartEditApi.d.ts +3 -2
  25. package/src/PredefinedConfig/ExportState.d.ts +0 -5
  26. package/src/PredefinedConfig/PopupState.d.ts +2 -1
  27. package/src/PredefinedConfig/SystemState.d.ts +2 -5
  28. package/src/Redux/ActionsReducers/PopupRedux.d.ts +22 -3
  29. package/src/Redux/ActionsReducers/PopupRedux.js +42 -8
  30. package/src/Redux/ActionsReducers/SystemRedux.d.ts +5 -23
  31. package/src/Redux/ActionsReducers/SystemRedux.js +3 -32
  32. package/src/Strategy/AlertModule.js +28 -6
  33. package/src/Strategy/CalculatedColumnModule.js +5 -0
  34. package/src/Strategy/ExportModule.js +14 -4
  35. package/src/Strategy/FreeTextColumnModule.js +1 -1
  36. package/src/Strategy/Interface/IModule.d.ts +2 -1
  37. package/src/Strategy/LayoutModule.d.ts +23 -0
  38. package/src/Strategy/LayoutModule.js +70 -0
  39. package/src/Strategy/SmartEditModule.d.ts +2 -2
  40. package/src/Strategy/SmartEditModule.js +24 -13
  41. package/src/Strategy/Utilities/getFlashingCellStyleViewItems.d.ts +1 -0
  42. package/src/Strategy/Utilities/getFlashingCellStyleViewItems.js +2 -1
  43. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +3 -0
  44. package/src/Utilities/Defaults/DefaultSettingsPanel.js +1 -1
  45. package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +4 -2
  46. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +0 -3
  47. package/src/Utilities/Helpers/StyleHelper.d.ts +1 -0
  48. package/src/Utilities/Helpers/StyleHelper.js +13 -1
  49. package/src/Utilities/Interface/MessagePopups.d.ts +12 -0
  50. package/src/View/AdaptableView.js +2 -2
  51. package/src/View/AdaptableViewFactory.js +2 -4
  52. package/src/View/ColorPicker.d.ts +4 -2
  53. package/src/View/ColorPicker.js +16 -4
  54. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +24 -19
  55. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +3 -1
  56. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +23 -15
  57. package/src/View/Components/Popups/FormPopups/FormPopups.d.ts +10 -0
  58. package/src/View/Components/Popups/FormPopups/FormPopups.js +37 -0
  59. package/src/View/Components/Popups/WindowPopups/WindowPopups.d.ts +2 -0
  60. package/src/View/Components/Popups/WindowPopups/WindowPopups.js +10 -6
  61. package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +1 -0
  62. package/src/View/Components/Popups/WindowPopups/windowFactory.js +4 -1
  63. package/src/View/Components/RangesComponent.js +4 -6
  64. package/src/View/Components/StyleComponent.js +6 -9
  65. package/src/View/Components/ValueSelector/index.d.ts +1 -0
  66. package/src/View/Components/ValueSelector/index.js +1 -1
  67. package/src/View/Dashboard/CustomToolbarWrapper.js +9 -1
  68. package/src/View/DataSource/DataSourceViewPanel.d.ts +3 -3
  69. package/src/View/DataSource/DataSourceViewPanel.js +15 -13
  70. package/src/View/Export/ExportViewPanel.d.ts +1 -3
  71. package/src/View/Export/ExportViewPanel.js +1 -17
  72. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +2 -3
  73. package/src/View/GridInfo/AdaptableObjectsSummary.d.ts +2 -0
  74. package/src/View/GridInfo/AdaptableObjectsSummary.js +26 -0
  75. package/src/View/GridInfo/GridInfoPopup.js +13 -5
  76. package/src/View/Layout/LayoutEditorStandalonePopup.js +3 -4
  77. package/src/View/Layout/LayoutRadioSelector.d.ts +5 -0
  78. package/src/View/Layout/LayoutRadioSelector.js +18 -0
  79. package/src/View/Layout/Wizard/LayoutEditor/index.js +1 -4
  80. package/src/View/Layout/Wizard/LayoutEditorWizard.js +6 -1
  81. package/src/View/Query/ExpandedQueryPopup.d.ts +2 -18
  82. package/src/View/Query/ExpandedQueryPopup.js +42 -57
  83. package/src/View/Query/QueryViewPanel.js +8 -5
  84. package/src/View/SmartEdit/SmartEditPopup.d.ts +3 -3
  85. package/src/View/SmartEdit/SmartEditPopup.js +15 -3
  86. package/src/View/SmartEdit/SmartEditViewPanel.d.ts +3 -4
  87. package/src/View/SmartEdit/SmartEditViewPanel.js +15 -6
  88. package/src/agGrid/Adaptable.d.ts +7 -5
  89. package/src/agGrid/Adaptable.js +63 -56
  90. package/src/components/ExpressionEditor/index.js +0 -1
  91. package/src/components/OverlayTrigger/index.js +1 -0
  92. package/src/components/Radio/index.d.ts +1 -1
  93. package/src/components/Radio/index.js +2 -2
  94. package/src/metamodel/adaptable.metamodel.d.ts +5 -0
  95. package/src/metamodel/adaptable.metamodel.js +17 -5
  96. package/src/types.d.ts +1 -1
  97. package/version.d.ts +1 -1
  98. package/version.js +1 -1
  99. package/src/View/Export/ExportCustomDestinationDialog.d.ts +0 -11
  100. package/src/View/Export/ExportCustomDestinationDialog.js +0 -47
  101. package/src/View/Export/ExportCustomDestinationFormPopups.d.ts +0 -5
  102. package/src/View/Export/ExportCustomDestinationFormPopups.js +0 -15
package/index.css CHANGED
@@ -3645,6 +3645,9 @@ html.ab--theme-dark .ab-ListBoxFilterForm--aggrid-style {
3645
3645
  max-height: 100%;
3646
3646
  box-shadow: var(--ab-cmp-adaptable-window-popup__box-shadow); }
3647
3647
 
3648
+ .ab-Window-Modal .ab-Dialog__close-button {
3649
+ top: 3px; }
3650
+
3648
3651
  .ab-Window-Modal .ab-Panel {
3649
3652
  max-height: initial; }
3650
3653
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "11.1.1",
3
+ "version": "11.1.4",
4
4
  "description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
5
5
  "keywords": [
6
6
  "web-components",
@@ -39,10 +39,10 @@
39
39
  "normalize.css": "^8.0.1",
40
40
  "prop-types": "^15.6.2",
41
41
  "re-resizable": "^6.9.1",
42
- "react": ">=16.8.0",
42
+ "react": "^16.8.0 || ^17.0.0",
43
43
  "react-beautiful-dnd": "13.1.0",
44
44
  "react-day-picker": "8.0.0-beta.38",
45
- "react-dom": ">=16.8.0",
45
+ "react-dom": "^16.8.0 || ^17.0.0",
46
46
  "react-redux": "7.2.4",
47
47
  "react-remove-scroll": "2.4.2",
48
48
  "react-toastify": "8.1.0",
@@ -1,2 +1,2 @@
1
- declare const _default: 1648553646478;
1
+ declare const _default: 1649274832417;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1648553646478;
3
+ exports.default = 1649274832417;
@@ -151,7 +151,7 @@ export interface IAdaptable {
151
151
  }>;
152
152
  getDistinctCustomSortValuesForColumn(column: AdaptableColumn, visibleRowsOnly: boolean, skipRowNode?: RowNode): Promise<GridCell[]>;
153
153
  getDistinctBulkUpdateValuesForColumn(column: AdaptableColumn, visibleRowsOnly: boolean, selectedGridCells: GridCell[], skipRowNode?: RowNode): Promise<GridCell[]>;
154
- getDisplayValue(id: any, columnId: string): string;
154
+ getDisplayValue(id: any, columnId: string): string | undefined;
155
155
  getGridCellFromRowNode(rowNode: RowNode, columnId: string): GridCell | undefined;
156
156
  getRawValueFromRowNode(rowNode: RowNode, columnId: string): any;
157
157
  getDisplayValueFromRowNode(rowNode: RowNode, columnId: string): string | undefined;
@@ -164,7 +164,8 @@ export interface IAdaptable {
164
164
  lookupPlugins(propertyName: string, ...args: any): any;
165
165
  getPluginProperty(pluginId: string, propertyName: string, ...args: any): any;
166
166
  getPlugin(pluginId: string): AdaptablePlugin;
167
- setValue(cellDataChangedInfo: CellDataChangedInfo): void;
167
+ setDataValue(value: any, column: AdaptableColumn, primaryKeyValue: any, rowNode?: RowNode): void;
168
+ setCellValue(cellDataChangedInfo: CellDataChangedInfo): void;
168
169
  cancelEdit(): any;
169
170
  isCellEditable(rowNode: RowNode, column: Column): boolean;
170
171
  getFirstRowNode(): RowNode;
@@ -33,10 +33,6 @@ export interface AdaptableOptions {
33
33
  * @gridInfoItem
34
34
  */
35
35
  adaptableId?: string;
36
- /**
37
- * Commercial license key. If the license is not provided or is expired, various visual information notes will be displayed and some functionality may be limited.
38
- */
39
- licenseKey?: string;
40
36
  /**
41
37
  * Identifier used as localStorage persistence key for AdaptableState
42
38
  *
@@ -44,6 +40,27 @@ export interface AdaptableOptions {
44
40
  * @gridInfoItem
45
41
  */
46
42
  adaptableStateKey?: string;
43
+ /**
44
+ * Will autogenerate a Primary Key; only use as a last resort if no unique column is available, as limits some Adaptable functionalities
45
+ *
46
+ * @defaultValue false
47
+ * @gridInfoItem
48
+ */
49
+ autogeneratePrimaryKey?: boolean;
50
+ /**
51
+ * The AG Grid object which AdapTable interacts with. Note: if using AdapTable React or AdapTable Angular, no need to populate this property as AdapTable wires it up differently
52
+ *
53
+ * @defaultValue n/a (Mandatory)
54
+ */
55
+ gridOptions?: GridOptions;
56
+ /**
57
+ * Commercial license key. If the license is not provided or is expired, various visual information notes will be displayed and some functionality may be limited.
58
+ */
59
+ licenseKey?: string;
60
+ /**
61
+ * AG Grid Modules that should be provided - needs to be provided separately
62
+ */
63
+ modules?: Module[];
47
64
  /**
48
65
  * User State set at design-time and shipped with AdapTable for first use; can be `PredefinedConfig` object or url to file containing config
49
66
  *
@@ -57,13 +74,6 @@ export interface AdaptableOptions {
57
74
  * @gridInfoItem
58
75
  */
59
76
  primaryKey: string;
60
- /**
61
- * Will autogenerate a Primary Key; only use as a last resort if no unique column is available, as limits some Adaptable functionalities
62
- *
63
- * @defaultValue false
64
- * @gridInfoItem
65
- */
66
- autogeneratePrimaryKey?: boolean;
67
77
  /**
68
78
  * Name of current AdapTable user
69
79
  *
@@ -72,21 +82,9 @@ export interface AdaptableOptions {
72
82
  */
73
83
  userName?: string;
74
84
  /**
75
- * The AG Grid object which AdapTable interacts with. Note: if using AdapTable React or AdapTable Angular, no need to populate this property as AdapTable wires it up differently
76
- *
77
- * @defaultValue n/a (Mandatory)
78
- */
79
- gridOptions?: GridOptions;
80
- /**
81
- * AG Grid Modules that should be provided - needs to be provided separately
82
- */
83
- modules?: Module[];
84
- /**
85
- * Options for managing Notifications in AdapTable
86
- *
87
- * @gridInfoContainer
85
+ * Options for managing AdapTableQL
88
86
  */
89
- notificationsOptions?: NotificationsOptions;
87
+ adaptableQLOptions?: AdaptableQLOptions;
90
88
  /**
91
89
  * Options for managing Alerts in AdapTable
92
90
  *
@@ -97,12 +95,22 @@ export interface AdaptableOptions {
97
95
  * Options for setting the 'Div' elements in which AdapTable, AG Grid, popups are placed
98
96
  */
99
97
  containerOptions?: ContainerOptions;
98
+ /**
99
+ * Predicate definitions provided by developers at Design-Time
100
+ */
101
+ customPredicateDefs?: AdaptablePredicateDef[];
100
102
  /**
101
103
  * Options related to managing the Dashboard in AdapTable
102
104
  *
103
105
  * @gridInfoContainer
104
106
  */
105
107
  dashboardOptions?: DashboardOptions;
108
+ /**
109
+ * Options to manage Data Change History Module which provides an overview of all data changes
110
+ *
111
+ * @gridInfoContainer
112
+ */
113
+ dataChangeHistoryOptions?: DataChangeHistoryOptions;
106
114
  /**
107
115
  * Options related to Editing in AdapTable including Server Validation
108
116
  *
@@ -121,6 +129,12 @@ export interface AdaptableOptions {
121
129
  * @gridInfoContainer
122
130
  */
123
131
  exportOptions?: ExportOptions;
132
+ /**
133
+ * Options for managing Filtering in AdapTable
134
+ *
135
+ * @gridInfoContainer
136
+ */
137
+ filterOptions?: FilterOptions;
124
138
  /**
125
139
  * Options for managing Flashing Cells - primarily default values
126
140
  *
@@ -145,6 +159,12 @@ export interface AdaptableOptions {
145
159
  * @gridInfoContainer
146
160
  */
147
161
  menuOptions?: MenuOptions;
162
+ /**
163
+ * Options for managing Notifications in AdapTable
164
+ *
165
+ * @gridInfoContainer
166
+ */
167
+ notificationsOptions?: NotificationsOptions;
148
168
  /**
149
169
  * Options for managing Search related functions in AdapTable
150
170
  *
@@ -152,11 +172,11 @@ export interface AdaptableOptions {
152
172
  */
153
173
  searchOptions?: SearchOptions;
154
174
  /**
155
- * Options for managing Filtering in AdapTable
175
+ * Setting panel options
156
176
  *
157
177
  * @gridInfoContainer
158
178
  */
159
- filterOptions?: FilterOptions;
179
+ settingsPanelOptions?: SettingsPanelOptions;
160
180
  /**
161
181
  * Options related to state hydration / dehydration - allows users to intercept state persistence and state loading and change default behavior of saving to local storage
162
182
  */
@@ -167,12 +187,6 @@ export interface AdaptableOptions {
167
187
  * @gridInfoContainer
168
188
  */
169
189
  teamSharingOptions?: TeamSharingOptions;
170
- /**
171
- * Options for managing the User Interface elements of AdapTable, i.e. Action Columns, Color Palette etc.
172
- *
173
- * @gridInfoContainer
174
- */
175
- userInterfaceOptions?: UserInterfaceOptions;
176
190
  /**
177
191
  * Options related to managing the Tool Panel elements in AdapTable
178
192
  *
@@ -180,27 +194,13 @@ export interface AdaptableOptions {
180
194
  */
181
195
  toolPanelOptions?: ToolPanelOptions;
182
196
  /**
183
- * Options for managing AdapTableQL
184
- */
185
- adaptableQLOptions?: AdaptableQLOptions;
186
- /**
187
- * Options to manage Data Change History Module which provides an overview of all data changes
197
+ * Options for managing the User Interface elements of AdapTable, i.e. Action Columns, Color Palette etc.
188
198
  *
189
199
  * @gridInfoContainer
190
200
  */
191
- dataChangeHistoryOptions?: DataChangeHistoryOptions;
201
+ userInterfaceOptions?: UserInterfaceOptions;
192
202
  /**
193
203
  * Used for managing the AdapTable Plugins
194
204
  */
195
205
  plugins?: AdaptablePlugin[];
196
- /**
197
- * Predicate definitions provided by developers at Design-Time
198
- */
199
- customPredicateDefs?: AdaptablePredicateDef[];
200
- /**
201
- * Setting panel options
202
- *
203
- * @gridInfoContainer
204
- */
205
- settingsPanelOptions?: SettingsPanelOptions;
206
206
  }
@@ -17,7 +17,7 @@ export interface ContainerOptions {
17
17
  */
18
18
  agGridContainer?: string | HTMLElement;
19
19
  /**
20
- * how long AdapTable waits for AG Grid before giving up connecting to it; useful when AG Grid is instantiated separately (eg: by AdapTable React or AdapTable Angular)
20
+ * How long AdapTable waits for AG Grid before giving up connecting to it
21
21
  *
22
22
  * @defaultValue 60s
23
23
  * @gridInfoItem
@@ -30,7 +30,7 @@ export interface DashboardOptions {
30
30
  */
31
31
  customToolbars?: CustomToolbar[];
32
32
  /**
33
- * Position in the Dashboard to show the Module and Custom Buttons
33
+ * Where in Dashboard to display Module and Custom Buttons
34
34
  * @defaultValue 'right'
35
35
  */
36
36
  buttonsLocation?: 'left' | 'right';
@@ -1,5 +1,6 @@
1
1
  import { CellDataChangedInfo } from '../PredefinedConfig/Common/CellDataChangedInfo';
2
2
  import { GridCell } from '../PredefinedConfig/Selection/GridCell';
3
+ import { SmartEditCustomOperation } from './SmartEdit';
3
4
  /**
4
5
  * Options related to Editing in Adaptable.
5
6
  *
@@ -21,6 +22,9 @@ export interface EditOptions {
21
22
  * Function which checks if given Grid Cell is editable
22
23
  */
23
24
  isCellEditable?: (gridCell: GridCell) => boolean;
25
+ smartEdit?: {
26
+ customOperations?: SmartEditCustomOperation[];
27
+ };
24
28
  }
25
29
  /**
26
30
  * Used for Server Validation ie. after an edit has been made in Adaptable which should be checked on the Server
@@ -42,4 +42,15 @@ export interface LayoutOptions {
42
42
  * @gridInfoItem
43
43
  */
44
44
  createDefaultLayout?: boolean;
45
+ /**
46
+ * Options to customize how layout items are shown in Settings Panel
47
+ */
48
+ view?: {
49
+ /**
50
+ * How many columns to display in the inline layout preview
51
+ *
52
+ * @defaultValue 10
53
+ */
54
+ maxColumnsToDisplay?: number;
55
+ };
45
56
  }
@@ -59,7 +59,7 @@ export interface NotificationsOptions {
59
59
  */
60
60
  transition?: 'Bounce' | 'Slide' | 'Zoom' | 'Flip';
61
61
  /**
62
- * Display an Alert when a System Status Message is set
62
+ * Display System Status Messages as Notifications
63
63
  *
64
64
  * @defaultValue false
65
65
  * @gridInfoItem
@@ -73,7 +73,7 @@ export interface NotificationsOptions {
73
73
  */
74
74
  maxSystemMessagesInStore?: number;
75
75
  /**
76
- * Displays the application icon in Notifications (if provided in `UserInterfaceOptions`)
76
+ * Displays the application icon in Notifications
77
77
  * @defaultValue false
78
78
  */
79
79
  showApplicationIcon?: boolean;
@@ -0,0 +1,34 @@
1
+ import { MathOperation } from '../PredefinedConfig/Common/Enums';
2
+ import { AdaptableApi, AdaptableColumn, GridCell } from '../types';
3
+ export declare type SmartEditCustomOperation = {
4
+ /**
5
+ * Name of the operation, appears in the UI
6
+ */
7
+ Name: string;
8
+ /**
9
+ * Custom operation function
10
+ */
11
+ Operation: (context: {
12
+ /**
13
+ * Selected Cell Value
14
+ */
15
+ value: number;
16
+ /**
17
+ * Smart edit cell value
18
+ */
19
+ smartEditValue: number;
20
+ /**
21
+ * Selected column
22
+ */
23
+ column: AdaptableColumn;
24
+ /**
25
+ * Adaptable Api
26
+ */
27
+ adaptableApi: AdaptableApi;
28
+ /**
29
+ * Selected grid cell
30
+ */
31
+ selectedCell: GridCell;
32
+ }) => number;
33
+ };
34
+ export declare type SmartEditOperation = SmartEditCustomOperation | MathOperation;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -244,4 +244,4 @@ export interface BulkUpdatePermittedValuesParams extends BaseParams {
244
244
  gridCells: GridCell[];
245
245
  }
246
246
  export declare type GridInfoSections = GridInfoSection[];
247
- export declare type GridInfoSection = 'GridSummary' | 'AdaptableOptions' | 'ColumnInfo';
247
+ export declare type GridInfoSection = 'GridSummary' | 'AdaptableOptions' | 'ColumnInfo' | 'AdaptableObjectsSummary';
@@ -291,7 +291,7 @@ class ColumnApiImpl extends ApiBase_1.ApiBase {
291
291
  const { gridCells, suppressClientSideFilter } = await this.adaptable.getDistinctFilterValuesForColumn(abColumn, false, filter);
292
292
  return {
293
293
  values: this.sortDistinctValues(gridCells, abColumn).map((cv) => {
294
- return cv.normalisedValue;
294
+ return cv.displayValue;
295
295
  }),
296
296
  suppressClientSideFilter,
297
297
  };
@@ -156,7 +156,7 @@ class FilterApiImpl extends ApiBase_1.ApiBase {
156
156
  return columnFilters.map((cf) => this.columnFilterToString(cf)).join(', ');
157
157
  }
158
158
  evaluateColumnFilter(columnFilter, node) {
159
- var _a;
159
+ var _a, _b;
160
160
  if (!columnFilter.Predicate) {
161
161
  return true;
162
162
  }
@@ -171,8 +171,14 @@ class FilterApiImpl extends ApiBase_1.ApiBase {
171
171
  if (!gridCell) {
172
172
  return true;
173
173
  }
174
+ let value = gridCell.normalisedValue;
175
+ if (((_b = columnFilter.Predicate) === null || _b === void 0 ? void 0 : _b.PredicateId) === 'Contains' && column.dataType === 'Date') {
176
+ // although 'Contains' Predicate is NOT relevant for Date columns, we have to handle the special case of QuickSearching
177
+ // in that case, we have to evaluate the displayedValue of the cell, not the normalisedValue (it's a textual search after all)
178
+ value = gridCell.displayValue;
179
+ }
174
180
  return this.adaptable.api.predicateApi.handlePredicate(columnFilter.Predicate, {
175
- value: gridCell.normalisedValue,
181
+ value: value,
176
182
  oldValue: null,
177
183
  displayValue: gridCell.normalisedValue,
178
184
  node,
@@ -59,9 +59,9 @@ export declare class GridApiImpl extends ApiBase implements GridApi {
59
59
  getFirstRowNode(): RowNode;
60
60
  getFirstDisplayedRowNode(): RowNode;
61
61
  getVisibleRowNodes(): RowNode[];
62
- getGridCellFromRowNode(rowwNode: RowNode, columnId: string): GridCell | undefined;
63
- getRawValueFromRowNode(rowwNode: RowNode, columnId: string): any | undefined;
64
- getDisplayValueFromRowNode(rowwNode: RowNode, columnId: string): any | undefined;
62
+ getGridCellFromRowNode(rowNode: RowNode, columnId: string): GridCell | undefined;
63
+ getRawValueFromRowNode(rowNode: RowNode, columnId: string): any | undefined;
64
+ getDisplayValueFromRowNode(rowNode: RowNode, columnId: string): any | undefined;
65
65
  getFormattedValueFromRawValue(columnId: string, rawValue: any): string | undefined;
66
66
  getNormalisedValueFromRowNode(rowNode: RowNode, columnId: string): any | undefined;
67
67
  getRowNodesForPrimaryKeys(primaryKeyValues: any[]): RowNode[];
@@ -6,6 +6,7 @@ const ApiBase_1 = require("./ApiBase");
6
6
  const GridRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/GridRedux"));
7
7
  const SystemRedux_1 = require("../../Redux/ActionsReducers/SystemRedux");
8
8
  const ModuleConstants = tslib_1.__importStar(require("../../Utilities/Constants/ModuleConstants"));
9
+ const LoggingHelper_1 = require("../../Utilities/Helpers/LoggingHelper");
9
10
  class GridApiImpl extends ApiBase_1.ApiBase {
10
11
  getGridState() {
11
12
  return this.getAdaptableState().Grid;
@@ -48,22 +49,20 @@ class GridApiImpl extends ApiBase_1.ApiBase {
48
49
  }
49
50
  setCellValue(columnId, newValue, primaryKeyValue) {
50
51
  const abColumn = this.adaptable.api.columnApi.getColumnFromId(columnId);
51
- if (!abColumn || abColumn.readOnly) {
52
+ if (!abColumn) {
53
+ LoggingHelper_1.LogAdaptableWarning(`setCellValue() - column not found for columnId: ${columnId}`);
52
54
  return;
53
55
  }
54
56
  const rowNode = this.getRowNodeForPrimaryKey(primaryKeyValue);
57
+ if (!rowNode) {
58
+ LoggingHelper_1.LogAdaptableWarning(`setCellValue() - rowNode not found for primaryKeyValue: ${primaryKeyValue}`);
59
+ return;
60
+ }
55
61
  if (!this.adaptable.isCellEditable(rowNode, this.adaptable.getAgGridColumnForColumnId(columnId))) {
62
+ LoggingHelper_1.LogAdaptableInfo(`setCellValue() - cell is not editable (primaryKeyValue: ${primaryKeyValue},columnId: ${columnId},value: ${newValue})`);
56
63
  return;
57
64
  }
58
- const gridCell = {
59
- primaryKeyValue: primaryKeyValue,
60
- rawValue: newValue,
61
- displayValue: newValue,
62
- normalisedValue: newValue,
63
- rowNode: rowNode,
64
- column: abColumn,
65
- };
66
- this.adaptable.api.internalApi.setGridCell(gridCell);
65
+ this.adaptable.setDataValue(newValue, abColumn, primaryKeyValue, rowNode);
67
66
  }
68
67
  setCellsValue(gridCells) {
69
68
  gridCells === null || gridCells === void 0 ? void 0 : gridCells.forEach((gridCell) => this.setCellValue(gridCell.columnId, gridCell.newValue, gridCell.primaryKeyValue));
@@ -193,16 +192,14 @@ class GridApiImpl extends ApiBase_1.ApiBase {
193
192
  getVisibleRowNodes() {
194
193
  return this.adaptable.getVisibleRowNodes();
195
194
  }
196
- getGridCellFromRowNode(rowwNode, columnId) {
197
- return this.adaptable.getGridCellFromRowNode(rowwNode, columnId);
195
+ getGridCellFromRowNode(rowNode, columnId) {
196
+ return this.adaptable.getGridCellFromRowNode(rowNode, columnId);
198
197
  }
199
- getRawValueFromRowNode(rowwNode, columnId) {
200
- const gridCell = this.getGridCellFromRowNode(rowwNode, columnId);
201
- return gridCell ? gridCell.rawValue : undefined;
198
+ getRawValueFromRowNode(rowNode, columnId) {
199
+ return this.adaptable.getRawValueFromRowNode(rowNode, columnId);
202
200
  }
203
- getDisplayValueFromRowNode(rowwNode, columnId) {
204
- const gridCell = this.getGridCellFromRowNode(rowwNode, columnId);
205
- return gridCell ? gridCell.displayValue : undefined;
201
+ getDisplayValueFromRowNode(rowNode, columnId) {
202
+ return this.adaptable.getDisplayValueFromRowNode(rowNode, columnId);
206
203
  }
207
204
  getFormattedValueFromRawValue(columnId, rawValue) {
208
205
  return this.adaptable.getDisplayValueFromRawValue(columnId, rawValue);
@@ -198,7 +198,7 @@ class InternalApiImpl extends ApiBase_1.ApiBase {
198
198
  }
199
199
  setGridCell(gridCell) {
200
200
  const cellDataChangedInfo = this.createDataChangedInfoFromGridCell(gridCell);
201
- this.adaptable.setValue(cellDataChangedInfo);
201
+ this.adaptable.setCellValue(cellDataChangedInfo);
202
202
  }
203
203
  buildDataChangedInfo(config) {
204
204
  var _a;
@@ -252,14 +252,20 @@ class LayoutApiImpl extends ApiBase_1.ApiBase {
252
252
  }
253
253
  showLayoutEditor(layoutName, action = 'Edit') {
254
254
  const layout = layoutName ? this.getLayoutByName(layoutName) : this.getCurrentLayout();
255
+ const moduleInfo = this.adaptable.ModuleService.getModuleInfoByModule(ModuleConstants.LayoutModuleId);
255
256
  let preparedAction = action;
256
257
  if (!['Edit', 'New', 'Clone'].includes(action)) {
257
258
  preparedAction = 'Edit';
258
259
  LoggingHelper_1.LogAdaptableError(`When opening the layout editor the action must be one of: New, Clone, Edit; given: ${action}`);
259
260
  }
261
+ let title = 'Layout Editor';
262
+ if (action === 'Edit') {
263
+ title = `Edit Layout${(layout === null || layout === void 0 ? void 0 : layout.Name) ? `: ${layout.Name}` : ''}`;
264
+ }
260
265
  this.dispatchAction(PopupRedux.PopupShowWindow({
261
266
  Id: windowFactory_1.WINDOW_LAYOUT_EDITOR,
262
- Title: `Edit Layout: ${layout.Name}`,
267
+ Title: title,
268
+ Icon: moduleInfo.Glyph,
263
269
  PopupProps: {
264
270
  action: preparedAction,
265
271
  layout,
@@ -1,9 +1,10 @@
1
1
  import { ApiBase } from './ApiBase';
2
2
  import { SmartEditApi } from '../SmartEditApi';
3
3
  import { GridCell } from '../../PredefinedConfig/Selection/GridCell';
4
+ import { SmartEditOperation } from '../../AdaptableOptions/SmartEdit';
4
5
  export declare class SmartEditApiImpl extends ApiBase implements SmartEditApi {
5
- setSmartEditOperation(mathOperation: 'Add' | 'Subtract' | 'Multiply' | 'Divide'): void;
6
- getSmartEditOperation(): string;
6
+ setSmartEditOperation(mathOperation: SmartEditOperation): void;
7
+ getSmartEditOperation(): SmartEditOperation;
7
8
  setSmartEditValue(smartEditValue: number): void;
8
9
  getSmartEditValue(): number;
9
10
  showSmartEditPopup(): void;
@@ -1,3 +1,4 @@
1
+ import { SmartEditOperation } from '../AdaptableOptions/SmartEdit';
1
2
  import { GridCell } from '../PredefinedConfig/Selection/GridCell';
2
3
  /**
3
4
  * Provides run-time access to the Smart Edit Module
@@ -7,11 +8,11 @@ export interface SmartEditApi {
7
8
  * Sets Smart Edit operation: ('Add','Subtract','Multiply','Divide'
8
9
  * @param operation operation to run
9
10
  */
10
- setSmartEditOperation(operation: 'Add' | 'Subtract' | 'Multiply' | 'Divide'): void;
11
+ setSmartEditOperation(operation: SmartEditOperation): void;
11
12
  /**
12
13
  * Gets current Smart Edit Operation
13
14
  */
14
- getSmartEditOperation(): string;
15
+ getSmartEditOperation(): SmartEditOperation;
15
16
  /**
16
17
  * Sets Smart Edit Value
17
18
  * @param smartEditValue the value to use in Smart Edit Operation
@@ -6,11 +6,6 @@ import { AdaptableObject } from './Common/AdaptableObject';
6
6
  import { AdaptableFormData } from './Common/AdaptableForm';
7
7
  import { AdaptableBooleanQuery } from './Common/AdaptableQuery';
8
8
  import { ExportDestination } from './Common/Enums';
9
- import { CustomDestination } from '../types';
10
- export interface ExportCustomDestinationPopup {
11
- ExportDestination: CustomDestination;
12
- ReportName: Report['Name'];
13
- }
14
9
  /**
15
10
  * Predefined Configuration for Export Module
16
11
  */
@@ -1,4 +1,4 @@
1
- import { ScreenPopup, AlertPopup, ConfirmationPopup, PromptPopup, LoadingPopup, WindowPopup } from '../Utilities/Interface/MessagePopups';
1
+ import { ScreenPopup, AlertPopup, ConfirmationPopup, PromptPopup, LoadingPopup, WindowPopup, FormPopup } from '../Utilities/Interface/MessagePopups';
2
2
  import { InternalState } from './InternalState';
3
3
  /**
4
4
  * Internal state to manage open popups - NOT persisted by Redux
@@ -6,6 +6,7 @@ import { InternalState } from './InternalState';
6
6
  export interface PopupState extends InternalState {
7
7
  ScreenPopup: ScreenPopup;
8
8
  WindowPopup: WindowPopup;
9
+ FormPopup: FormPopup;
9
10
  AlertPopup: AlertPopup;
10
11
  ConfirmationPopup: ConfirmationPopup;
11
12
  PromptPopup: PromptPopup;
@@ -13,7 +13,7 @@ import { CachedQuery } from './QueryState';
13
13
  import { AdaptableFlashingCell } from './Common/AdaptableFlashingCell';
14
14
  import { TypeUuid } from './Uuid';
15
15
  import { SummaryOperation } from './Common/Enums';
16
- import { ExportCustomDestinationPopup } from './ExportState';
16
+ import { SmartEditOperation } from '../AdaptableOptions/SmartEdit';
17
17
  export type { IPushPullReport, IPushPullDomain };
18
18
  export type { Glue42Report };
19
19
  export type { OpenFinReport };
@@ -25,9 +25,6 @@ export declare type DataChangeHistoryMode = 'ACTIVE' | 'INACTIVE' | 'SUSPENDED';
25
25
  */
26
26
  export interface SystemState extends InternalState, IPushPullState, Glue42State, OpenFinState {
27
27
  AdaptableAlerts: AdaptableAlert[];
28
- Export: {
29
- CustomDestinationPopups: ExportCustomDestinationPopup[];
30
- };
31
28
  AdaptableFlashingCells: Record<ROW_PRIMARY_KEY, Record<COLUMN_ID_OR_WHOLE_ROW_LABEL, TypeUuid>>;
32
29
  AdaptableFlashingCellsMap: Record<TypeUuid, AdaptableFlashingCell>;
33
30
  SystemStatusMessages: SystemStatusMessageInfo[];
@@ -43,7 +40,7 @@ export interface SystemState extends InternalState, IPushPullState, Glue42State,
43
40
  CachedQueries: CachedQuery[];
44
41
  BulkUpdateValue?: string;
45
42
  SmartEditValue?: number;
46
- SmartEditOperation?: 'Add' | 'Subtract' | 'Multiply' | 'Divide';
43
+ SmartEditOperation?: SmartEditOperation;
47
44
  CellSummaryOperation?: SummaryOperation | string;
48
45
  ProgressIndicator: ProgressIndicator;
49
46
  License: {
@@ -4,6 +4,7 @@ import { InputAction, UIPrompt, UIConfirmation } from '../../Utilities/Interface
4
4
  import { ModuleParams } from '../../View/Components/SharedProps/ModuleViewPopupProps';
5
5
  import { AdaptableModule } from '../../PredefinedConfig/Common/Types';
6
6
  import { AdaptableAlert } from '../../PredefinedConfig/Common/AdaptableAlert';
7
+ import { AdaptableForm, ButtonContext } from '../../types';
7
8
  export declare const POPUP_SHOW_SCREEN = "POPUP_SHOW_SCREEN";
8
9
  export declare const POPUP_HIDE_SCREEN = "POPUP_HIDE_SCREEN";
9
10
  export declare const POPUP_SHOW_LOADING = "POPUP_SHOW_LOADING";
@@ -17,8 +18,10 @@ export declare const POPUP_SHOW_CONFIRMATION = "POPUP_SHOW_CONFIRMATION";
17
18
  export declare const POPUP_CONFIRM_CONFIRMATION = "POPUP_CONFIRM_CONFIRMATION";
18
19
  export declare const POPUP_CANCEL_CONFIRMATION = "POPUP_CANCEL_CONFIRMATION";
19
20
  export declare const POPUP_CLEAR_PARAM = "POPUP_CLEAR_PARAM";
20
- export declare const POPUP_WINDOW_SHOW_SCREEN = "POPUP_WINDOW_SHOW_SCREEN";
21
- export declare const POPUP_WINDOW_HIDE_SCREEN = "POPUP_WINDOW_HIDE_SCREEN";
21
+ export declare const POPUP_SHOW_WINDOW = "POPUP_SHOW_WINDOW";
22
+ export declare const POPUP_HIDE_WINDOW = "POPUP_HIDE_WINDOW";
23
+ export declare const POPUP_SHOW_FORM = "POPUP_SHOW_FORM";
24
+ export declare const POPUP_HIDE_FORM = "POPUP_FORM_HIDE";
22
25
  export interface PopupShowScreenAction extends Redux.Action {
23
26
  ComponentModule: AdaptableModule;
24
27
  ComponentName: string;
@@ -38,6 +41,15 @@ export interface PopupShowWindowAction extends Redux.Action {
38
41
  export interface PopupHideWindowAction extends Redux.Action {
39
42
  Id: string;
40
43
  }
44
+ export interface PopupShowFormAction extends Redux.Action {
45
+ Id: string;
46
+ Form: AdaptableForm<ButtonContext>;
47
+ FormProps: any;
48
+ prepareContext?: (context: ButtonContext) => Promise<ButtonContext> | ButtonContext;
49
+ }
50
+ export interface PopupHideFormAction extends Redux.Action {
51
+ Id: string;
52
+ }
41
53
  export interface PopupShowLoadingAction extends Redux.Action {
42
54
  }
43
55
  export interface PopupHideLoadingAction extends Redux.Action {
@@ -74,7 +86,14 @@ export declare const PopupShowWindow: (config: {
74
86
  PopupProps?: any;
75
87
  Icon?: string;
76
88
  }) => PopupShowWindowAction;
77
- export declare const PopupWindowHide: (id: string) => PopupHideWindowAction;
89
+ export declare const PopupHideWindow: (id: string) => PopupHideWindowAction;
90
+ export declare const PopupShowForm: (config: {
91
+ Id: string;
92
+ Form: AdaptableForm<ButtonContext>;
93
+ FormProps?: any;
94
+ prepareContext?: (context: ButtonContext) => Promise<ButtonContext> | ButtonContext;
95
+ }) => PopupShowFormAction;
96
+ export declare const PopupHideForm: (id: string) => PopupHideFormAction;
78
97
  export declare const PopupShowAlert: (alert: AdaptableAlert) => PopupShowAlertAction;
79
98
  export declare const PopupHideAlert: () => PopupHideAlertAction;
80
99
  export declare const PopupShowLoading: () => PopupShowLoadingAction;