@adaptabletools/adaptable-cjs 20.0.0-canary.21 → 20.0.0-canary.22

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-cjs",
3
- "version": "20.0.0-canary.21",
3
+ "version": "20.0.0-canary.22",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -98,7 +98,7 @@ const DefaultAdaptableOptions = {
98
98
  exportDataFormat: 'rawValue',
99
99
  exportDateFormat: undefined,
100
100
  customDestinations: undefined,
101
- externalReports: undefined,
101
+ processExport: undefined,
102
102
  appendFileTimestamp: false,
103
103
  systemReportNames: GeneralConstants_1.SYSTEM_REPORT_NAMES,
104
104
  systemReportFormats: GeneralConstants_1.SYSTEM_REPORT_FORMATS,
@@ -25,10 +25,6 @@ export interface ExportOptions<TData = any> {
25
25
  * User-provided Report Destinations (in addition to those shipped in AdapTable)
26
26
  */
27
27
  customDestinations?: CustomDestination[];
28
- /**
29
- * Reports generated entirely by users (and not evaluated AdapTable)
30
- */
31
- externalReports?: ExternalReport[];
32
28
  /**
33
29
  * System Reports to use; leave blank for all, empty array for none
34
30
  *
@@ -67,10 +63,6 @@ export interface ExportOptions<TData = any> {
67
63
  * @defaultValue true
68
64
  */
69
65
  isColumnExportable?: (context: AdaptableColumnContext) => boolean;
70
- /**
71
- * Function invoked before a Report is run, enabling users to preload the data before it is exported
72
- */
73
- preProcessExport?: (preProcessExportContext: PreProcessExportContext) => boolean | Promise<ReportData | boolean>;
74
66
  /**
75
67
  * Separator for CSV exports
76
68
  *
@@ -87,6 +79,15 @@ export interface ExportOptions<TData = any> {
87
79
  * Function to provide the Detail Rows when exporting in Master-Detail grids. This function will be invoked for each master row node.
88
80
  */
89
81
  getDetailRows?: (context: GetDetailRowsContext<TData>) => CsvDetailRow[] | ExcelDetailRow[] | undefined;
82
+ /**
83
+ * Provides custom handling of the Export process before the default export is executed.
84
+ *
85
+ * @returns A Promise resolving to one of:
86
+ * - `true` - Continue with the default export process
87
+ * - `false` - Cancel the export process
88
+ * - `ExportResultData` - Custom export data (useful for server-side data)
89
+ */
90
+ processExport?: (processExportContext: ProcessExportContext) => Promise<ExportResultData | boolean>;
90
91
  }
91
92
  /**
92
93
  * Detail Row Data in a CSV format; technically an array of AG Grid {@link https://www.ag-grid.com/javascript-data-grid/csv-export/#csvcell | CsvCell}s
@@ -129,43 +130,10 @@ export interface GetDetailRowsContext<TData = any> extends BaseExportContext {
129
130
  */
130
131
  createCellExcel: (cellContent: any, cellType: ExcelDataType) => ExcelCell;
131
132
  }
132
- /**
133
- * Context provided to `ExportOptions.processExport()` callback used when pre-processing Export
134
- */
135
- export interface PreProcessExportContext extends BaseContext {
136
- /**
137
- * Report being exported
138
- */
139
- report: Report;
140
- /**
141
- * Returns Columns to export based on Report's `ReportColumnScope`
142
- * @param includePrimaryKey - whether to include the primary key column (defaults to `false`)
143
- */
144
- getReportColumns: (includePrimaryKey?: boolean) => AdaptableColumn[];
145
- /**
146
- * Returns row data which would typically be exported based on the Report's `ReportRowScope`
147
- * @param reportColumns - the columns to include in the report
148
- * @param includePrimaryKey - whether to include the primary key column (defaults to `false`)
149
- */
150
- getReportRowData: (reportColumns: AdaptableColumn[], includePrimaryKey?: boolean) => Record<string, any>[];
151
- }
152
133
  /**
153
134
  * Format of exported Data - 'rawValue' or 'formattedValue'
154
135
  */
155
136
  export type DataFormatType = 'rawValue' | 'formattedValue';
156
- /**
157
- * Defines a Report where all the data is provided entirely by the user
158
- */
159
- export interface ExternalReport {
160
- /**
161
- * Name of the Report
162
- */
163
- name: string;
164
- /**
165
- * Function invoked to return the data (in the form of a `ExportResultData` object)
166
- */
167
- onExport: (context: ExternalReportContext) => Promise<ExportResultData>;
168
- }
169
137
  /**
170
138
  * Defines a custom Export destination
171
139
  */
@@ -226,7 +194,6 @@ export type SystemExportDestination =
226
194
  */
227
195
  | 'Clipboard';
228
196
  export type ExportDestinationType = TypeHint<string, SystemExportDestination>;
229
- export type ExportDestination = SystemExportDestination | CustomDestination;
230
197
  /**
231
198
  * Context information available in all Export-related functions
232
199
  */
@@ -235,6 +202,10 @@ export interface BaseExportContext extends BaseContext {
235
202
  * Name of the Report being run
236
203
  */
237
204
  reportName: ReportNameType;
205
+ /**
206
+ * The Report Configuration being run
207
+ */
208
+ report: Report;
238
209
  /**
239
210
  * Format of the Report being run
240
211
  */
@@ -248,18 +219,23 @@ export interface BaseExportContext extends BaseContext {
248
219
  * Report Context sent when using Custom Export Destinations
249
220
  */
250
221
  export interface ReportContext extends BaseExportContext {
251
- /**
252
- * Definition of Report being Run
253
- */
254
- report: Report;
255
222
  /**
256
223
  * Export Data for the Report
257
224
  */
258
225
  reportData: ExportResultData;
259
226
  }
260
- export interface ExternalReportContext extends BaseExportContext {
261
- getGridReportColumns: () => ReportColumn[];
227
+ export interface ProcessExportContext extends BaseExportContext {
228
+ /**
229
+ * Returns Columns to export based on Report's `ReportColumnScope`
230
+ */
231
+ getReportColumns: () => ReportColumn[];
232
+ /**
233
+ * Converts the Report Data to Excel format
234
+ */
262
235
  convertToExcel: (reportData: ReportData) => Blob;
236
+ /**
237
+ * Converts the Report Data to CSV format
238
+ */
263
239
  convertToCsv: (reportData: ReportData) => string;
264
240
  }
265
241
  /**
@@ -1,6 +1,6 @@
1
1
  import { AdaptableForm } from '../PredefinedConfig/Common/AdaptableForm';
2
2
  import { ExportState, Report, ReportFormatType, ReportNameType, SystemReportFormat, SystemReportName } from '../PredefinedConfig/ExportState';
3
- import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, ExternalReport, SystemExportDestination } from '../AdaptableOptions/ExportOptions';
3
+ import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, SystemExportDestination } from '../AdaptableOptions/ExportOptions';
4
4
  import { AdaptableColumn } from '../types';
5
5
  /**
6
6
  * Provides run-time access to the Export Module and Report state
@@ -44,7 +44,7 @@ export interface ExportApi {
44
44
  */
45
45
  getReportById(id: Report['Uuid']): Report;
46
46
  /**
47
- * Retrieves all available Reports - System, External and User-created Reports
47
+ * Retrieves all available Reports - System and User-created Reports
48
48
  * @returns reports
49
49
  */
50
50
  getAllReports(): Report[];
@@ -52,10 +52,6 @@ export interface ExportApi {
52
52
  * Retrieves all Custom Reports that have been created by the User
53
53
  */
54
54
  getCustomReports(): Report[];
55
- /**
56
- * Returns all External Reports that have been provided to Export Options
57
- */
58
- getExternalReports(): ExternalReport[];
59
55
  /**
60
56
  * Retrieves all Report Formats that are available
61
57
  */
@@ -134,11 +130,6 @@ export interface ExportApi {
134
130
  * @param destination Custom Destination for which to get Form Def
135
131
  */
136
132
  getExportDestinationForm(destinationName: ExportDestinationType): AdaptableForm<ExportFormContext> | undefined;
137
- /**
138
- * Is given Report user-generated
139
- * @param report Report to Check
140
- */
141
- isExternalReport(report: Report): boolean;
142
133
  /**
143
134
  * Returns whether the given column is exportable
144
135
  */
@@ -149,7 +140,7 @@ export interface ExportApi {
149
140
  * @param format - format of the report
150
141
  * @param destination - destination to export to
151
142
  */
152
- exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): void;
143
+ exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): Promise<void>;
153
144
  /**
154
145
  * Gets the data for the Report with the given Name in the given Format
155
146
  * @param reportName - name of the report
@@ -2,7 +2,7 @@ import { ExportApi } from '../ExportApi';
2
2
  import { ExportState, Report, ReportFormatType, ReportNameType, SystemReportFormat, SystemReportName } from '../../PredefinedConfig/ExportState';
3
3
  import { ApiBase } from './ApiBase';
4
4
  import { AdaptableForm } from '../../PredefinedConfig/Common/AdaptableForm';
5
- import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, ExternalReport, SystemExportDestination } from '../../AdaptableOptions/ExportOptions';
5
+ import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, SystemExportDestination } from '../../AdaptableOptions/ExportOptions';
6
6
  import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
7
7
  import { ExportInternalApi } from '../Internal/ExportInternalApi';
8
8
  import { AdaptableColumn } from '../../types';
@@ -34,10 +34,9 @@ export declare class ExportApiImpl extends ApiBase implements ExportApi {
34
34
  updateReport(report: Report): Report;
35
35
  updateReports(reports: Report[]): Report[];
36
36
  getCustomReports(): Report[];
37
- getExternalReports(): ExternalReport[];
38
- isExternalReport(report: Report): boolean;
39
37
  isColumnExportable(adaptableColumn: AdaptableColumn): boolean;
40
38
  getSupportedExportDestinations(reportFormat: ReportFormatType): ExportDestinationType[];
41
- exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): void;
39
+ exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): Promise<void>;
42
40
  getReportData(reportName: ReportNameType, format: ReportFormatType): Promise<ExportResultData>;
41
+ private processExport;
43
42
  }
@@ -5,8 +5,6 @@ const tslib_1 = require("tslib");
5
5
  const ExportRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/ExportRedux"));
6
6
  const ApiBase_1 = require("./ApiBase");
7
7
  const ModuleConstants = tslib_1.__importStar(require("../../Utilities/Constants/ModuleConstants"));
8
- const ObjectFactory_1 = tslib_1.__importDefault(require("../../Utilities/ObjectFactory"));
9
- const ArrayExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/ArrayExtensions"));
10
8
  const ExportInternalApi_1 = require("../Internal/ExportInternalApi");
11
9
  const GeneralConstants_1 = require("../../Utilities/Constants/GeneralConstants");
12
10
  class ExportApiImpl extends ApiBase_1.ApiBase {
@@ -33,10 +31,6 @@ class ExportApiImpl extends ApiBase_1.ApiBase {
33
31
  if (customReport) {
34
32
  return customReport;
35
33
  }
36
- const externalReport = this.getExternalReports()?.find((r) => r.name == reportName);
37
- if (externalReport) {
38
- return ObjectFactory_1.default.CreateExternalReport(externalReport.name);
39
- }
40
34
  }
41
35
  getReportById(id) {
42
36
  return this.getAllReports()?.find((report) => report.Uuid === id);
@@ -78,12 +72,6 @@ class ExportApiImpl extends ApiBase_1.ApiBase {
78
72
  const reports = this.getAvailableSystemReports()
79
73
  .map((s) => this.getReportByName(s))
80
74
  .concat(this.getExportState().Reports);
81
- const externalReports = this.getExternalReports();
82
- if (ArrayExtensions_1.default.IsNotNullOrEmpty(externalReports)) {
83
- reports.push(...externalReports.map((c) => {
84
- return ObjectFactory_1.default.CreateExternalReport(c.name);
85
- }));
86
- }
87
75
  return reports;
88
76
  }
89
77
  selectReport(reportName) {
@@ -130,12 +118,6 @@ class ExportApiImpl extends ApiBase_1.ApiBase {
130
118
  getCustomReports() {
131
119
  return this.getExportState().Reports ?? [];
132
120
  }
133
- getExternalReports() {
134
- return this.getExportOptions().externalReports ?? [];
135
- }
136
- isExternalReport(report) {
137
- return this.getExternalReports()?.find((cr) => cr.name == report.Name) != null;
138
- }
139
121
  isColumnExportable(adaptableColumn) {
140
122
  const isExportableFn = this.getExportOptions().isColumnExportable;
141
123
  if (typeof isExportableFn === 'function') {
@@ -161,52 +143,74 @@ class ExportApiImpl extends ApiBase_1.ApiBase {
161
143
  return true;
162
144
  });
163
145
  }
164
- exportReport(reportName, format, destination = 'Download') {
146
+ async exportReport(reportName, format, destination = 'Download') {
165
147
  let report = this.getReportByName(reportName);
166
- if (this.checkItemExists(report, reportName, 'Report')) {
167
- if (this.isExternalReport(report)) {
168
- // Handle external report
169
- this.internalApi
170
- .getExternalReportData(reportName, format, destination)
171
- .then((reportData) => {
172
- if (reportData) {
173
- this.internalApi.sendReportToDestination(reportData, report, format, destination);
174
- }
175
- })
176
- .catch((error) => {
177
- this.logWarn(`Failed to get external report data for '${reportName}': ${error}`);
178
- });
179
- return;
180
- }
181
- this._adaptable.agGridExportAdapter
182
- .exportData({
148
+ if (!this.checkItemExists(report, reportName, 'Report')) {
149
+ return;
150
+ }
151
+ this.logInfo(`Start Export of ${reportName} in format ${format} to ${destination}`);
152
+ const processExportResult = await this.processExport(report, format, destination);
153
+ // if FALSE, cancel export
154
+ if (!processExportResult) {
155
+ this.logInfo(`Cancel Export of ${reportName}`);
156
+ return;
157
+ }
158
+ // if TRUE, continue with standard export
159
+ if (processExportResult === true) {
160
+ const exportedReport = await this._adaptable.agGridExportAdapter.exportData({
183
161
  report,
184
162
  format,
185
163
  destination,
186
164
  showProgressIndicator: true,
187
- })
188
- .then((reportResult) => {
189
- if (destination === 'Download' &&
190
- (format === 'Excel' || format === 'VisualExcel' || format === 'Csv')) {
191
- return;
192
- }
193
- this.internalApi.sendReportToDestination(reportResult, report, format, destination);
194
165
  });
166
+ if (destination === 'Download' &&
167
+ (format === 'Excel' || format === 'VisualExcel' || format === 'Csv')) {
168
+ return;
169
+ }
170
+ this.internalApi.sendReportToDestination(exportedReport, report, format, destination);
195
171
  }
172
+ else {
173
+ // in this case the user has returned a custom ExportResultData object
174
+ const userProcessedExportResult = processExportResult;
175
+ if (!userProcessedExportResult) {
176
+ this.logWarn(`Processing of Export ${reportName} to ${destination} returned null or undefined`);
177
+ return;
178
+ }
179
+ this.internalApi.sendReportToDestination(userProcessedExportResult, report, format, destination);
180
+ }
181
+ this.logInfo(`Finished Export of ${reportName} in format ${format} to ${destination}`);
196
182
  }
197
183
  async getReportData(reportName, format) {
198
184
  let report = this.getReportByName(reportName);
199
- if (this.checkItemExists(report, reportName, 'Report')) {
200
- this.logInfo(`Start getting Report Data for ${reportName} in format ${format}`);
201
- const reportData = await this._adaptable.agGridExportAdapter.exportData({
185
+ if (!this.checkItemExists(report, reportName, 'Report')) {
186
+ return;
187
+ }
188
+ this.logInfo(`Start getting Report Data for ${reportName} in format ${format}`);
189
+ const processExportResult = await this.processExport(report, format, 'Clipboard');
190
+ let reportData;
191
+ // handle Export processing
192
+ if (typeof processExportResult?.type === 'string') {
193
+ reportData = processExportResult;
194
+ }
195
+ else {
196
+ reportData = await this._adaptable.agGridExportAdapter.exportData({
202
197
  report,
203
198
  format,
204
199
  destination: 'Clipboard',
205
200
  showProgressIndicator: false,
206
201
  });
207
- this.logInfo(`Finished getting Report Data for ${reportName} in format ${format}`);
208
- return reportData;
209
202
  }
203
+ this.logInfo(`Finished getting Report Data for ${reportName} in format ${format}`);
204
+ return reportData;
205
+ }
206
+ async processExport(report, format, destination) {
207
+ const processExportFn = this.getExportOptions().processExport;
208
+ if (!processExportFn) {
209
+ return true;
210
+ }
211
+ this.logInfo(`Process Export of ${report.Name} in format ${format} to ${destination}`);
212
+ const processExportContext = this.internalApi.buildProcessExportContext(report, format, destination);
213
+ return processExportFn(processExportContext);
210
214
  }
211
215
  }
212
216
  exports.ExportApiImpl = ExportApiImpl;
@@ -3,7 +3,7 @@ import { CellDataChangedInfo } from '../../PredefinedConfig/Common/CellDataChang
3
3
  import { Report, ReportData, ReportFormatType, ReportNameType, SystemReportName } from '../../PredefinedConfig/ExportState';
4
4
  import { CsvCell, ExcelCell, ExcelDataType, IRowNode } from 'ag-grid-enterprise';
5
5
  import { AdaptableColumn, AdaptableColumnDataType } from '../../PredefinedConfig/Common/AdaptableColumn';
6
- import { BaseExportContext, DataFormatType, ExportDestinationType, ExportResultData } from '../../AdaptableOptions/ExportOptions';
6
+ import { BaseExportContext, DataFormatType, ExportDestinationType, ExportResultData, ProcessExportContext } from '../../AdaptableOptions/ExportOptions';
7
7
  export declare class ExportInternalApi extends ApiBase {
8
8
  /**
9
9
  * Value Items for Report Name Selection
@@ -34,8 +34,7 @@ export declare class ExportInternalApi extends ApiBase {
34
34
  createCellCsv(cellContent: any): CsvCell;
35
35
  createCellExcel(cellContent: any, cellType: ExcelDataType): ExcelCell;
36
36
  createCellHeader(cellContent: any): ExcelCell;
37
- getExternalReportData(externalReportName: ReportNameType, reportFormat: ReportFormatType, exportDestination: ExportDestinationType): Promise<ExportResultData | undefined>;
38
- private buildGridReportColumns;
37
+ buildProcessExportContext(report: Report, format: ReportFormatType, destination: ExportDestinationType): ProcessExportContext;
39
38
  private buildExcelConverter;
40
39
  private buildCsvConverter;
41
40
  private executeGridExport;
@@ -25,10 +25,6 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
25
25
  if (report.Name == 'All Data') {
26
26
  return true;
27
27
  }
28
- // if its a Custom Report then the User has to run it so we just ignore completely
29
- if (this.getExportApi().isExternalReport(report)) {
30
- return false;
31
- }
32
28
  // Start with the DataChanged Column and go through all possibilities
33
29
  switch (report.ReportColumnScope) {
34
30
  case 'AllColumns':
@@ -172,9 +168,6 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
172
168
  return true;
173
169
  }
174
170
  getReportColumnScopeShortDescription(report) {
175
- if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
176
- return ['[Custom Columns]'];
177
- }
178
171
  switch (report.ReportColumnScope) {
179
172
  case 'AllColumns':
180
173
  return ['[All Columns]'];
@@ -190,9 +183,6 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
190
183
  }
191
184
  }
192
185
  getReportColumnScopeLongDescription(report) {
193
- if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
194
- return '[Custom Columns]';
195
- }
196
186
  switch (report.ReportColumnScope) {
197
187
  case 'AllColumns':
198
188
  return '[All Columns]';
@@ -205,9 +195,6 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
205
195
  }
206
196
  }
207
197
  getReportExpressionDescription(report, cols) {
208
- if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
209
- return '[Custom Data]';
210
- }
211
198
  if (this.isSystemReport(report.Name)) {
212
199
  return `[${report.Name}]`;
213
200
  }
@@ -356,8 +343,10 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
356
343
  }
357
344
  }
358
345
  buildBaseExportContext(reportName, reportFormat, exportDestination) {
346
+ const report = this.getExportApi().getReportByName(reportName);
359
347
  return {
360
348
  ...this.getAdaptableInternalApi().buildBaseContext(),
349
+ report,
361
350
  reportName,
362
351
  reportFormat,
363
352
  exportDestination,
@@ -386,23 +375,21 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
386
375
  },
387
376
  };
388
377
  }
389
- getExternalReportData(externalReportName, reportFormat, exportDestination) {
390
- const externalReport = this.getExportApi()
391
- .getExternalReports()
392
- ?.find((cr) => cr.name == externalReportName);
393
- if (!externalReport) {
394
- this.logWarn(`External Report '${externalReportName}' not found!`);
395
- return undefined;
396
- }
397
- return externalReport.onExport({
398
- ...this.buildBaseExportContext(externalReportName, reportFormat, exportDestination),
399
- convertToExcel: this.buildExcelConverter(externalReportName, reportFormat, exportDestination),
400
- convertToCsv: this.buildCsvConverter(externalReportName, reportFormat, exportDestination),
401
- getGridReportColumns: this.buildGridReportColumns(),
378
+ buildProcessExportContext(report, format, destination) {
379
+ const { exportContext } = this._adaptable.agGridExportAdapter.buildExportProcessData({
380
+ report,
381
+ format,
382
+ destination,
383
+ showProgressIndicator: false,
402
384
  });
403
- }
404
- buildGridReportColumns() {
405
- return () => this.getAdaptableApi().columnApi.getColumns();
385
+ return {
386
+ ...this.buildBaseExportContext(report.Name, format, destination),
387
+ convertToExcel: this.buildExcelConverter(report.Name, format, destination),
388
+ convertToCsv: this.buildCsvConverter(report.Name, format, destination),
389
+ getReportColumns: () => exportContext.exportedColumnIds
390
+ .map((colId) => this.getAdaptableApi().columnApi.getColumnWithColumnId(colId, false))
391
+ .filter(Boolean),
392
+ };
406
393
  }
407
394
  buildExcelConverter(externalReportName, reportFormat, exportDestination) {
408
395
  return (reportData) => {
@@ -423,9 +410,14 @@ class ExportInternalApi extends ApiBase_1.ApiBase {
423
410
  colId: col.columnId,
424
411
  field: col.field ?? col.columnId,
425
412
  headerName: col.friendlyName ?? col.columnId,
426
- type: col.dataType ?? 'text',
413
+ cellDataType: col.dataType ?? 'text',
427
414
  }));
428
- const gridOptions = { columnDefs, rowData: reportData.rows };
415
+ const gridOptions = {
416
+ columnDefs,
417
+ rowData: reportData.rows,
418
+ theme: this.getAgGridApi().getGridOption('theme'),
419
+ dataTypeDefinitions: this.getAgGridApi().getGridOption('dataTypeDefinitions'),
420
+ };
429
421
  const gridParams = {
430
422
  modules: this.getAdaptableApi()
431
423
  .internalApi.getAdaptableInstance()
@@ -22,6 +22,7 @@ export declare const HALF_SECOND: number;
22
22
  export declare const QUARTER_SECOND: number;
23
23
  export declare const GROUP_PATH_SEPARATOR: string;
24
24
  export declare const AG_GRID_GROUPED_COLUMN: string;
25
+ export declare const AG_GRID_SELECTION_COLUMN: string;
25
26
  export declare const AG_GRID_PIVOT_COLUMN: string;
26
27
  export declare const AG_GRID_CHART_WINDOW = "AG Grid Window";
27
28
  export declare const ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = "(FDC3ActionColumn)";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LAYOUT_NEW_TABLE_OR_PIVOT_TOOLTIP = exports.LAYOUT_NEW_PIVOT_TOOLTIP = exports.LAYOUT_NEW_TABLE_TOOLTIP = exports.THEME_STYLE = exports.SYSTEM_EXPORT_DESTINATIONS = exports.CLIPBOARD_EXPORT_DESTINATION = exports.DOWNLOAD_EXPORT_DESTINATION = exports.SELECT_REPORT_FORMAT_STRING = exports.SELECT_REPORT_STRING = exports.SYSTEM_REPORT_FORMATS = exports.JSON_FORMAT_REPORT = exports.CSV_FORMAT_REPORT = exports.VISUAL_EXCEL_FORMAT_REPORT = exports.EXCEL_FORMAT_REPORT = exports.SYSTEM_REPORT_NAMES = exports.SELECTED_DATA_REPORT = exports.CURRENT_LAYOUT_REPORT = exports.ALL_DATA_REPORT = exports.SERVER_VALIDATION_MESSAGE_TYPE = exports.SERVER_VALIDATION_HEADER = exports.DEFAULT_LIVE_REPORT_THROTTLE_TIME = exports.MENU_SEPARATOR = exports.QUICK_SEARCH_DEBOUNCE_TIME = exports.DEFAULT_DOUBLE_DISPLAY_VALUE = exports.DEFAULT_INTEGER_DISPLAY_VALUE = exports.DEFAULT_STRING_DISPLAY_VALUE = exports.DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME = exports.DEFAULT_DATE_FORMAT_PATTERN = exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = exports.AG_GRID_CHART_WINDOW = exports.AG_GRID_PIVOT_COLUMN = exports.AG_GRID_GROUPED_COLUMN = exports.GROUP_PATH_SEPARATOR = exports.QUARTER_SECOND = exports.HALF_SECOND = exports.EMPTY_ARRAY = exports.EMPTY_STRING = exports.READ_ONLY_STYLE = exports.AGGRID_TOOLPANEL_COLUMNS = exports.AGGRID_TOOLPANEL_FILTERS = exports.ADAPTABLE_TOOLPANEL_COMPONENT = exports.ADAPTABLE_TOOLPANEL_ID = exports.ADAPTABLE_ID = exports.ADAPTABLE = exports.ERROR_LAYOUT = exports.OS_THEME = exports.DARK_THEME = exports.LIGHT_THEME = exports.MISSING_COLUMN = exports.AUTOGENERATED_PK_COLUMN = void 0;
4
- exports.OBSERVABLE_EXPRESSION_ROW_REMOVED = exports.OBSERVABLE_EXPRESSION_ROW_ADDED = exports.STANDALONE_MODULE_POPUPS = exports.LAYOUT_DELETE_TOOLTIP = exports.LAYOUT_CLONE_TOOLTIP = exports.LAYOUT_EDIT_TOOLTIP = exports.LAYOUT_SAVE_TOOLTIP = void 0;
3
+ exports.LAYOUT_NEW_PIVOT_TOOLTIP = exports.LAYOUT_NEW_TABLE_TOOLTIP = exports.THEME_STYLE = exports.SYSTEM_EXPORT_DESTINATIONS = exports.CLIPBOARD_EXPORT_DESTINATION = exports.DOWNLOAD_EXPORT_DESTINATION = exports.SELECT_REPORT_FORMAT_STRING = exports.SELECT_REPORT_STRING = exports.SYSTEM_REPORT_FORMATS = exports.JSON_FORMAT_REPORT = exports.CSV_FORMAT_REPORT = exports.VISUAL_EXCEL_FORMAT_REPORT = exports.EXCEL_FORMAT_REPORT = exports.SYSTEM_REPORT_NAMES = exports.SELECTED_DATA_REPORT = exports.CURRENT_LAYOUT_REPORT = exports.ALL_DATA_REPORT = exports.SERVER_VALIDATION_MESSAGE_TYPE = exports.SERVER_VALIDATION_HEADER = exports.DEFAULT_LIVE_REPORT_THROTTLE_TIME = exports.MENU_SEPARATOR = exports.QUICK_SEARCH_DEBOUNCE_TIME = exports.DEFAULT_DOUBLE_DISPLAY_VALUE = exports.DEFAULT_INTEGER_DISPLAY_VALUE = exports.DEFAULT_STRING_DISPLAY_VALUE = exports.DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME = exports.DEFAULT_DATE_FORMAT_PATTERN = exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = exports.AG_GRID_CHART_WINDOW = exports.AG_GRID_PIVOT_COLUMN = exports.AG_GRID_SELECTION_COLUMN = exports.AG_GRID_GROUPED_COLUMN = exports.GROUP_PATH_SEPARATOR = exports.QUARTER_SECOND = exports.HALF_SECOND = exports.EMPTY_ARRAY = exports.EMPTY_STRING = exports.READ_ONLY_STYLE = exports.AGGRID_TOOLPANEL_COLUMNS = exports.AGGRID_TOOLPANEL_FILTERS = exports.ADAPTABLE_TOOLPANEL_COMPONENT = exports.ADAPTABLE_TOOLPANEL_ID = exports.ADAPTABLE_ID = exports.ADAPTABLE = exports.ERROR_LAYOUT = exports.OS_THEME = exports.DARK_THEME = exports.LIGHT_THEME = exports.MISSING_COLUMN = exports.AUTOGENERATED_PK_COLUMN = void 0;
4
+ exports.OBSERVABLE_EXPRESSION_ROW_REMOVED = exports.OBSERVABLE_EXPRESSION_ROW_ADDED = exports.STANDALONE_MODULE_POPUPS = exports.LAYOUT_DELETE_TOOLTIP = exports.LAYOUT_CLONE_TOOLTIP = exports.LAYOUT_EDIT_TOOLTIP = exports.LAYOUT_SAVE_TOOLTIP = exports.LAYOUT_NEW_TABLE_OR_PIVOT_TOOLTIP = void 0;
5
5
  exports.AUTOGENERATED_PK_COLUMN = '__ADAPTABLE_PK__';
6
6
  exports.MISSING_COLUMN = ' [MISSING]';
7
7
  exports.LIGHT_THEME = 'light';
@@ -25,6 +25,7 @@ exports.HALF_SECOND = 500;
25
25
  exports.QUARTER_SECOND = 250;
26
26
  exports.GROUP_PATH_SEPARATOR = '/';
27
27
  exports.AG_GRID_GROUPED_COLUMN = 'ag-Grid-AutoColumn';
28
+ exports.AG_GRID_SELECTION_COLUMN = 'ag-Grid-SelectionColumn';
28
29
  exports.AG_GRID_PIVOT_COLUMN = 'pivot_';
29
30
  exports.AG_GRID_CHART_WINDOW = 'AG Grid Window';
30
31
  exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = '(FDC3ActionColumn)';
@@ -39,7 +39,7 @@ const ExportViewPanel = (props) => {
39
39
  React.createElement(ButtonEdit_1.ButtonEdit, { onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, {
40
40
  action: 'Edit',
41
41
  source: 'Toolbar',
42
- })), tooltip: "Edit Report", className: `ab-${elementType}__Export__edit`, disabled: currentReport == null || exportApi.isExternalReport(currentReport), accessLevel: accessLevel }),
42
+ })), tooltip: "Edit Report", className: `ab-${elementType}__Export__edit`, disabled: currentReport == null, accessLevel: accessLevel }),
43
43
  React.createElement(ButtonNew_1.ButtonNew, { variant: "text", className: `ab-${elementType}__Export__new`, tone: "neutral", children: null, onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, {
44
44
  action: 'New',
45
45
  source: 'Toolbar',
@@ -456,7 +456,9 @@ class AgGridExportAdapter {
456
456
  formatColumnsWithDisplayFormatMemo[columnId] = formatColumns;
457
457
  return formatColumns;
458
458
  };
459
- const agGridDisplayedColumns = this.agGridApi.getAllDisplayedColumns();
459
+ const agGridDisplayedColumns = this.agGridApi
460
+ .getAllDisplayedColumns()
461
+ .filter((agCol) => agCol.getId() !== GeneralConstants_1.AG_GRID_SELECTION_COLUMN);
460
462
  const colDefs = agGridDisplayedColumns.map((column) => {
461
463
  return column.getColDef();
462
464
  });
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1742312380937 || Date.now(),
6
- VERSION: "20.0.0-canary.21" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1742409311229 || Date.now(),
6
+ VERSION: "20.0.0-canary.22" || '--current-version--',
7
7
  };
@@ -3206,16 +3206,6 @@ export declare const ADAPTABLE_METAMODEL: {
3206
3206
  isOpt: boolean;
3207
3207
  }[];
3208
3208
  };
3209
- ExternalReport: {
3210
- name: string;
3211
- kind: string;
3212
- desc: string;
3213
- props: {
3214
- name: string;
3215
- kind: string;
3216
- desc: string;
3217
- }[];
3218
- };
3219
3209
  FDC3ActionColumn: {
3220
3210
  name: string;
3221
3211
  kind: string;
@@ -4473,22 +4463,6 @@ export declare const ADAPTABLE_METAMODEL: {
4473
4463
  kind: string;
4474
4464
  desc: string;
4475
4465
  };
4476
- PreProcessExportContext: {
4477
- name: string;
4478
- kind: string;
4479
- desc: string;
4480
- props: ({
4481
- name: string;
4482
- kind: string;
4483
- desc: string;
4484
- ref?: undefined;
4485
- } | {
4486
- name: string;
4487
- kind: string;
4488
- desc: string;
4489
- ref: string;
4490
- })[];
4491
- };
4492
4466
  PreprocessRowDataContext: {
4493
4467
  name: string;
4494
4468
  kind: string;