@adaptabletools/adaptable-cjs 22.0.3 → 22.0.5-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.
package/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer adaptable.reset, adaptable.theming, adaptable.components, adaptable.utilities, adaptable.theme;
4
4
  @layer adaptable.reset {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-cjs",
3
- "version": "22.0.3",
3
+ "version": "22.0.5-canary.0",
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",
@@ -113,97 +113,3 @@ export interface InitialState {
113
113
  */
114
114
  UserInterface?: UserInterfaceState;
115
115
  }
116
- /**
117
- * Deprecated initial state object (now replaced by InitialState)
118
- * @deprecated Use `InitialState` instead - it has the same structure but is more accurately named
119
- */
120
- export interface PredefinedConfig {
121
- /**
122
- * Collection of `AlertDefinitions` which will fire Alerts when the rule is met
123
- */
124
- Alert?: AlertState;
125
- /**
126
- * Empty state section (only populated at Design Time) available for User to store their own data with the rest of AdapTable state.
127
- */
128
- Application?: ApplicationState;
129
- /**
130
- * Collection of *CalculatedColumn* objects that will display a value based on other cells in the row (using a Calculated Column Expression)
131
- */
132
- CalculatedColumn?: CalculatedColumnState;
133
- /**
134
- * Named Charts (wrapping Chart models)
135
- */
136
- Charting?: ChartingState;
137
- /**
138
- * Collection of *Custom Sort* objects to allow some columns to be sorted in non-standard (e.g. non alphabetical) ways
139
- */
140
- CustomSort?: CustomSortState;
141
- /**
142
- * Large series of properties to give users full control over the look and feel of the *Dashboard* - the section (typically above the grid) with toolbars and buttons
143
- */
144
- Dashboard?: DashboardState;
145
- /**
146
- * Collection of *Report* objects, together with name of the Current Report, as part of AdapTable export Module
147
- */
148
- Export?: ExportState;
149
- /***
150
- * Objects which define which cells flash in response to data changes
151
- */
152
- FlashingCell?: FlashingCellState;
153
- /**
154
- * Collection of *FormatColumn* objects that will style an entire column either fully or using a Condition
155
- */
156
- FormatColumn?: FormatColumnState;
157
- /**
158
- * Collection of *FreeText* objects so users can make their own notes in bespoke columns that will get stored with their state (and not with the DataSource). Useful if needing a 'Comments' column.
159
- */
160
- FreeTextColumn?: FreeTextColumnState;
161
- /**
162
- * Collection of *Layouts* to name (and manage) sets of column visibility, order, grouping, sorts, aggregations, filters etc.
163
- */
164
- Layout: LayoutState;
165
- /**
166
- * Named Queries available for use across multiple AdapTable Modules
167
- */
168
- NamedQuery?: NamedQueryState;
169
- /**
170
- * Collection of personal Notes that are edited at Cell level
171
- */
172
- Note?: NoteState;
173
- /**
174
- * Collection of *PlusMinus* rule objects to stipulate what happens when the user clicks '+' or '-' in a numeric cell
175
- */
176
- PlusMinus?: PlusMinusState;
177
- /**
178
- * Configues how Quick Search will run i.e. how and whether to highlight matching cells and to filter out non-matching rows
179
- */
180
- QuickSearch?: QuickSearchState;
181
- /**
182
- * Collection of *Schedule* objects
183
- */
184
- Schedule?: ScheduleState;
185
- /**
186
- * Collection of *Shortcut* objects to aid data entry and prevent 'fat finger' issues
187
- */
188
- Shortcut?: ShortcutState;
189
- /**
190
- * Configures the Adaptable Status Bar
191
- */
192
- StatusBar?: StatusBarState;
193
- /**
194
- * Collection of Special Column Styles
195
- */
196
- StyledColumn?: StyledColumnState;
197
- /**
198
- * Specifies the current Theme and lists the User and System themes available for selection.
199
- */
200
- Theme?: ThemeState;
201
- /**
202
- * Sets the order and visibility of the Tool Panel controls in the AdapTable ToolPanel (on right of grid)
203
- */
204
- ToolPanel?: ToolPanelState;
205
- /**
206
- * Controls AdapTable UI including visibility of AdapTable components
207
- */
208
- UserInterface?: UserInterfaceState;
209
- }
@@ -133,7 +133,7 @@ export interface AdaptableApi {
133
133
  */
134
134
  entitlementApi: EntitlementApi;
135
135
  /**
136
- * Used for listenning / subscribing to the various Events published by AdapTable
136
+ * Used for listening / subscribing to the Events published by AdapTable
137
137
  */
138
138
  eventApi: EventApi;
139
139
  /**
@@ -5,8 +5,8 @@ import { RowFormInternalApi } from '../Internal/RowFormInternalApi';
5
5
  export declare class RowFormApiImpl extends ApiBase implements RowFormApi {
6
6
  internalApi: RowFormInternalApi;
7
7
  constructor(_adaptable: IAdaptable);
8
- displayEditRowForm(primaryKey: any): void;
9
- displayCreateRowForm(): void;
10
- displayCloneRowForm(primaryKey?: any): void;
8
+ displayEditRowForm(primaryKey: any): Promise<void>;
9
+ displayCreateRowForm(): Promise<void>;
10
+ displayCloneRowForm(primaryKey?: any): Promise<void>;
11
11
  displayDeleteRowForm(primaryKey?: any): void;
12
12
  }
@@ -10,12 +10,13 @@ class RowFormApiImpl extends ApiBase_1.ApiBase {
10
10
  super(_adaptable);
11
11
  this.internalApi = new RowFormInternalApi_1.RowFormInternalApi(_adaptable);
12
12
  }
13
- displayEditRowForm(primaryKey) {
13
+ async displayEditRowForm(primaryKey) {
14
14
  const rowNode = this.getGridApi().getRowNodeForPrimaryKey(primaryKey);
15
15
  if (!rowNode) {
16
16
  this.logWarn(`Cannot edit row: rowNode not found for primaryKey ${primaryKey}`);
17
+ return;
17
18
  }
18
- const editForm = this.internalApi.buildRowEditForm(rowNode);
19
+ const editForm = await this.internalApi.buildRowEditForm(rowNode);
19
20
  this.dispatchAction((0, PopupRedux_1.PopupShowForm)({
20
21
  Id: 'edit_row_form',
21
22
  Form: editForm,
@@ -25,19 +26,20 @@ class RowFormApiImpl extends ApiBase_1.ApiBase {
25
26
  },
26
27
  }));
27
28
  }
28
- displayCreateRowForm() {
29
- const createForm = this.internalApi.buildRowCreateForm();
29
+ async displayCreateRowForm() {
30
+ const createForm = await this.internalApi.buildRowCreateForm();
30
31
  this.dispatchAction((0, PopupRedux_1.PopupShowForm)({
31
32
  Id: 'create_row_form',
32
33
  Form: createForm,
33
34
  }));
34
35
  }
35
- displayCloneRowForm(primaryKey) {
36
+ async displayCloneRowForm(primaryKey) {
36
37
  const rowNode = this.getGridApi().getRowNodeForPrimaryKey(primaryKey);
37
38
  if (!rowNode) {
38
39
  this.logWarn(`Can NOT clone row: rowNode not found for primaryKey ${primaryKey}`);
40
+ return;
39
41
  }
40
- const createForm = this.internalApi.buildRowCreateForm(rowNode);
42
+ const createForm = await this.internalApi.buildRowCreateForm(rowNode);
41
43
  this.dispatchAction((0, PopupRedux_1.PopupShowForm)({
42
44
  Id: 'create_row_form',
43
45
  Form: createForm,
@@ -18,16 +18,13 @@ import { ToolPanelState } from '../../AdaptableState/ToolPanelState';
18
18
  import { StateApi } from '../StateApi';
19
19
  import { AdaptableModule, AdaptableStateKey } from '../../AdaptableState/Common/Types';
20
20
  import { AdaptableFilterState, AdaptableSortState, FlashingCellState, InitialState, NamedQueryState, ScheduleState, StatusBarState, StyledColumnState } from '../../types';
21
- import { PredefinedConfig } from '../../AdaptableState/InitialState';
22
21
  import { ChartingState } from '../../AdaptableState/ChartingState';
23
22
  import { NoteState } from '../../AdaptableState/NoteState';
24
23
  export declare class StateApiImpl extends ApiBase implements StateApi {
25
24
  configInit(): void;
26
25
  copyAllStateToClipboard(): void;
27
26
  copyUserStateToClipboard(): void;
28
- getPredefinedConfig(): PredefinedConfig | any;
29
27
  getInitialState(): InitialState | any;
30
- reloadPredefinedConfig(newPredefinedConfig?: PredefinedConfig): void;
31
28
  reloadInitialState(newInitialState?: InitialState): void;
32
29
  getAllState(): AdaptableState;
33
30
  getPersistedState(): AdaptablePersistentState;
@@ -44,17 +44,9 @@ class StateApiImpl extends ApiBase_1.ApiBase {
44
44
  let stringifiedState = JSON.stringify(state);
45
45
  Helper_1.default.copyToClipboard(stringifiedState);
46
46
  }
47
- getPredefinedConfig() {
48
- (0, logDeprecation_1.logDeprecation)(this.getAdatableLogger(), 'StateApi', 'getPredefinedConfig', 'getInitialState');
49
- return this.getInitialState();
50
- }
51
47
  getInitialState() {
52
48
  return this._adaptable.adaptableOptions.initialState;
53
49
  }
54
- reloadPredefinedConfig(newPredefinedConfig) {
55
- (0, logDeprecation_1.logDeprecation)(this.getAdatableLogger(), 'StateApi', 'reloadPredefinedConfig', 'reloadInitialState');
56
- this.reloadInitialState(newPredefinedConfig);
57
- }
58
50
  reloadInitialState(newInitialState) {
59
51
  const adaptableOptions = this.getOptions();
60
52
  const oldState = this.getPersistentState();
@@ -34,7 +34,7 @@ export declare class GridInternalApi extends ApiBase {
34
34
  getDistinctValuesForColumn(columnId: string): Promise<GridCell[]> | undefined;
35
35
  getDistinctEditDisplayValuesForColumn(options: {
36
36
  columnId: string;
37
- gridCell: GridCell;
37
+ gridCell?: GridCell;
38
38
  currentSearchValue: string;
39
39
  }): Promise<EditColumnValueInfo[]> | undefined;
40
40
  /**
@@ -2,8 +2,8 @@ import { IRowNode } from 'ag-grid-enterprise';
2
2
  import { ApiBase } from '../Implementation/ApiBase';
3
3
  import { AdaptableForm, EditRowFormContext, CreateRowFormContext } from '../../types';
4
4
  export declare class RowFormInternalApi extends ApiBase {
5
- buildRowEditForm(rowNode: IRowNode): AdaptableForm<EditRowFormContext>;
6
- buildRowCreateForm(clonedRowNode?: IRowNode): AdaptableForm<CreateRowFormContext>;
5
+ buildRowEditForm(rowNode: IRowNode): Promise<AdaptableForm<EditRowFormContext>>;
6
+ buildRowCreateForm(clonedRowNode?: IRowNode): Promise<AdaptableForm<CreateRowFormContext>>;
7
7
  private buildRowForm;
8
8
  private getFormTitle;
9
9
  private buildFormParamContext;
@@ -4,14 +4,14 @@ exports.RowFormInternalApi = void 0;
4
4
  const ApiBase_1 = require("../Implementation/ApiBase");
5
5
  class RowFormInternalApi extends ApiBase_1.ApiBase {
6
6
  // Row Form Methods
7
- buildRowEditForm(rowNode) {
7
+ async buildRowEditForm(rowNode) {
8
8
  return this.buildRowForm('rowEdited', rowNode);
9
9
  }
10
- buildRowCreateForm(clonedRowNode) {
10
+ async buildRowCreateForm(clonedRowNode) {
11
11
  return this.buildRowForm('rowCreated', clonedRowNode);
12
12
  }
13
- buildRowForm(type, rowNode) {
14
- const formFields = this.buildRowFormFields(type, rowNode);
13
+ async buildRowForm(type, rowNode) {
14
+ const formFields = await this.buildRowFormFields(type, rowNode);
15
15
  const formButtons = this.buidRowFormButtons(type, rowNode, formFields);
16
16
  const formTitle = this.getFormTitle(type, rowNode);
17
17
  const formDescription = this.getFormDescription(type, rowNode);
@@ -107,7 +107,7 @@ class RowFormInternalApi extends ApiBase_1.ApiBase {
107
107
  dataToSave[this.getOptions().primaryKey] = pkValue;
108
108
  return dataToSave;
109
109
  }
110
- buildRowFormFields(rowFormType, rowNode) {
110
+ async buildRowFormFields(rowFormType, rowNode) {
111
111
  const relevantColumns = this.getColumnApi()
112
112
  .getUIAvailableColumns()
113
113
  .filter((column) => {
@@ -115,7 +115,7 @@ class RowFormInternalApi extends ApiBase_1.ApiBase {
115
115
  return !!rowNode || this.isCellEditable(column, rowNode);
116
116
  })
117
117
  .filter((column) => this.showColumnInRowForm(column, rowFormType));
118
- return relevantColumns.map((column) => this.buildRowFormField(rowFormType, column, rowNode));
118
+ return Promise.all(relevantColumns.map((column) => this.buildRowFormField(rowFormType, column, rowNode)));
119
119
  }
120
120
  showColumnInRowForm(adaptableColumn, rowFormType) {
121
121
  if (adaptableColumn.isActionColumn) {
@@ -138,9 +138,9 @@ class RowFormInternalApi extends ApiBase_1.ApiBase {
138
138
  const gridCell = this.getGridApi().getGridCellFromRowNode(rowNode, column.columnId);
139
139
  return this.getGridApi().isCellEditable(gridCell);
140
140
  }
141
- buildRowFormField(type, column, rowNode) {
141
+ async buildRowFormField(type, column, rowNode) {
142
142
  const isCellEditable = this.isCellEditable(column, rowNode);
143
- const fieldValueOptions = this.getFieldValueOptions(column, rowNode);
143
+ const fieldValueOptions = await this.getFieldValueOptions(column, rowNode);
144
144
  const fieldType = isCellEditable
145
145
  ? !!fieldValueOptions?.length
146
146
  ? 'select'
@@ -186,21 +186,25 @@ class RowFormInternalApi extends ApiBase_1.ApiBase {
186
186
  return 'text';
187
187
  }
188
188
  }
189
- getFieldValueOptions(column, rowNode) {
189
+ async getFieldValueOptions(column, rowNode) {
190
190
  const shouldShowSelectCellEditor = this.getUserInterfaceApi().internalApi.shouldShowSelectCellEditor(column);
191
191
  if (!shouldShowSelectCellEditor) {
192
192
  return;
193
193
  }
194
- const returnValues = this.getGridApi().internalApi.getDistinctDisplayValuesForColumnOld(column.columnId);
195
- // FIXME add support for asynchronous custom select cell editor values
196
- // it involves refactoring the AdaptableForm & adaptableFormComponent
197
- // await this.getSelectCellEditorValuesForColumn(
198
- // column,
199
- // gridCell
200
- // );
201
- return returnValues?.map((value) => ({
202
- value,
203
- label: value,
194
+ const gridCell = rowNode
195
+ ? this.getGridApi().getGridCellFromRowNode(rowNode, column.columnId)
196
+ : undefined;
197
+ const valueOptions = await this.getGridApi().internalApi.getDistinctEditDisplayValuesForColumn({
198
+ columnId: column.columnId,
199
+ gridCell,
200
+ currentSearchValue: '',
201
+ });
202
+ if (!valueOptions?.length) {
203
+ return;
204
+ }
205
+ return valueOptions.map((opt) => ({
206
+ value: opt.value,
207
+ label: opt.label ?? String(opt.value),
204
208
  }));
205
209
  }
206
210
  }
@@ -6,16 +6,16 @@ export interface RowFormApi {
6
6
  * Open edit dialog for row with the given primary key value
7
7
  * @param primaryKey - the primary key of the edited row
8
8
  */
9
- displayEditRowForm(primaryKey: any): void;
9
+ displayEditRowForm(primaryKey: any): Promise<void>;
10
10
  /**
11
11
  * Open create dialog for a new row
12
12
  */
13
- displayCreateRowForm(): void;
13
+ displayCreateRowForm(): Promise<void>;
14
14
  /**
15
15
  * Open create dialog for cloning an existing row
16
16
  * @param primaryKey - Primary Key of the duplicated row
17
17
  */
18
- displayCloneRowForm(primaryKey?: any): void;
18
+ displayCloneRowForm(primaryKey?: any): Promise<void>;
19
19
  /**
20
20
  * Deletes row from grid (with event fired) - note: no visible Row Form is displayed
21
21
  * @param primaryKey - Primary Key of the deleted row
@@ -15,7 +15,7 @@ import { AdaptablePersistentState, AdaptableState } from '../AdaptableState/Adap
15
15
  import { FreeTextColumnState } from '../AdaptableState/FreeTextColumnState';
16
16
  import { ToolPanelState } from '../AdaptableState/ToolPanelState';
17
17
  import { AdaptableModule, AdaptableStateKey } from '../AdaptableState/Common/Types';
18
- import { AdaptableFilterState, AdaptableSortState, ChartingState, FlashingCellState, InitialState, NamedQueryState, NoteState, PredefinedConfig, ScheduleState, StatusBarState, StyledColumnState } from '../types';
18
+ import { AdaptableFilterState, AdaptableSortState, ChartingState, FlashingCellState, InitialState, NamedQueryState, NoteState, ScheduleState, StatusBarState, StyledColumnState } from '../types';
19
19
  /**
20
20
  * Range of functions to access Initial and Full Adaptable State
21
21
  */
@@ -33,18 +33,10 @@ export interface StateApi {
33
33
  flushCurrentState?: boolean;
34
34
  progressIndicatorLabel?: string;
35
35
  }): Promise<void>;
36
- /**
37
- * @deprecated use `getInitialState()` instead
38
- */
39
- getPredefinedConfig(): PredefinedConfig | any;
40
36
  /**
41
37
  * Returns the Initial Adaptable State
42
38
  */
43
39
  getInitialState(): InitialState | any;
44
- /**
45
- * @deprecated use `reloadInitialState()` instead
46
- */
47
- reloadPredefinedConfig(newPredefinedConfig?: PredefinedConfig): void;
48
40
  /**
49
41
  * Reloads existing (or supplied) Initial State; clears persistent state by calling `StateOptions.clearState`
50
42
  * @param newInitialState optional new InitialState to load
@@ -11,7 +11,9 @@ class AdaptableModuleBase {
11
11
  api;
12
12
  moduleInfo;
13
13
  AccessLevel;
14
- agGridModuleDepsInfo;
14
+ agGridModuleDepsInfo = {
15
+ hasRequiredAgGridModuleDependencies: true,
16
+ };
15
17
  constructor(module, friendlyName, glyph, popup, description, api) {
16
18
  this.api = api;
17
19
  this.moduleInfo = {
@@ -63,17 +65,10 @@ class AdaptableModuleBase {
63
65
  setAgGridDepsInfo() {
64
66
  const agGridModulesAdapter = this.api.internalApi.getAgGridModulesAdapter();
65
67
  const missingAgGridModuleDependencies = this.getAgGridModuleDependencies().filter((agGridModule) => !agGridModulesAdapter.isAgGridModuleRegistered(agGridModule));
66
- if (missingAgGridModuleDependencies.length) {
67
- this.agGridModuleDepsInfo = {
68
- hasRequiredAgGridModuleDependencies: false,
69
- missingAgGridModuleDependencies,
70
- };
71
- }
72
- else {
73
- this.agGridModuleDepsInfo = {
74
- hasRequiredAgGridModuleDependencies: true,
75
- };
76
- }
68
+ this.agGridModuleDepsInfo = {
69
+ hasRequiredAgGridModuleDependencies: missingAgGridModuleDependencies.length === 0,
70
+ missingAgGridModuleDependencies,
71
+ };
77
72
  }
78
73
  logMissingAgGridDepsInfos() {
79
74
  if (this.isModuleEnabled() &&
@@ -219,6 +219,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
219
219
  private getCleanValue;
220
220
  getNormalisedValueFromRawValue(rawValue: any, column: AdaptableColumn): string | number | boolean | Date | unknown;
221
221
  private __updateColumnModelAndRefreshGrid_already_called;
222
+ private __forceUpdateColumnModel;
222
223
  updateColumnModelAndRefreshGrid(): void;
223
224
  _updateColumnModelAndRefreshGridNow(): void;
224
225
  redrawBody(): void;
@@ -2233,10 +2233,12 @@ class AdaptableAgGrid {
2233
2233
  return rawValue;
2234
2234
  }
2235
2235
  __updateColumnModelAndRefreshGrid_already_called = false;
2236
+ __forceUpdateColumnModel = false;
2236
2237
  updateColumnModelAndRefreshGrid() {
2237
- if (this.__updateColumnModelAndRefreshGrid_already_called) {
2238
+ if (this.__updateColumnModelAndRefreshGrid_already_called && !this.__forceUpdateColumnModel) {
2238
2239
  return;
2239
2240
  }
2241
+ this.__forceUpdateColumnModel = false;
2240
2242
  try {
2241
2243
  this._updateColumnModelAndRefreshGridNow();
2242
2244
  this.__updateColumnModelAndRefreshGrid_already_called = true;
@@ -4285,6 +4287,10 @@ class AdaptableAgGrid {
4285
4287
  // this setGridOption call will also trigger layout.onColumnDefsChanged()
4286
4288
  // which will in turn call updateColumnModelAndRefreshGrid
4287
4289
  this.agGridAdapter.setGridOption('columnDefs', columnDefs);
4290
+ // the setGridOption call above already triggered updateColumnModelAndRefreshGrid,
4291
+ // setting the dedup guard. We force the next call so that the column model
4292
+ // is re-derived after the layout store has been updated.
4293
+ this.__forceUpdateColumnModel = true;
4288
4294
  // this is needed here for when we call setAdaptableStateKey
4289
4295
  // and pass a new config
4290
4296
  this.updateLayoutInManagerAfterStoreHasChanged();
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: 1773422119897 || Date.now(),
6
- VERSION: "22.0.3" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1773920955292 || Date.now(),
6
+ VERSION: "22.0.5-canary.0" || '--current-version--',
7
7
  };
@@ -1282,10 +1282,22 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1282
1282
  this.computeColumnSorts(layout, columnState);
1283
1283
  this.computePinnedColumns(layout, columnState);
1284
1284
  this.computePivotAggregations(layout, columnState);
1285
- // Add pivot result columns to the state for ordering (will be applied with applyOrder: true later)
1285
+ // Add pivot result columns to the state for ordering (will be applied with applyOrder: true later).
1286
+ // Some pivot result columns may already be in the state (e.g. added by computeColumnSorts),
1287
+ // so remove them first and re-add all pivot result columns in the persisted order,
1288
+ // merging any existing state (like sort info) back in.
1286
1289
  if (Array.isArray(layout.PivotResultColumnsOrder)) {
1290
+ const pivotResultColumnsOrderSet = new Set(layout.PivotResultColumnsOrder);
1291
+ const existingPivotResultState = {};
1292
+ columnState.state = columnState.state.filter((colState) => {
1293
+ if (pivotResultColumnsOrderSet.has(colState.colId)) {
1294
+ existingPivotResultState[colState.colId] = colState;
1295
+ return false;
1296
+ }
1297
+ return true;
1298
+ });
1287
1299
  layout.PivotResultColumnsOrder.forEach((colId) => {
1288
- columnState.state.push({ colId });
1300
+ columnState.state.push(existingPivotResultState[colId] || { colId });
1289
1301
  });
1290
1302
  }
1291
1303
  return columnState;
@@ -4239,6 +4239,24 @@ export declare const ADAPTABLE_METAMODEL: {
4239
4239
  defVal: string;
4240
4240
  }[];
4241
4241
  };
4242
+ IPushPullConfig: {
4243
+ name: string;
4244
+ kind: string;
4245
+ desc: string;
4246
+ props: ({
4247
+ name: string;
4248
+ kind: string;
4249
+ desc: string;
4250
+ isOpt?: undefined;
4251
+ defVal?: undefined;
4252
+ } | {
4253
+ name: string;
4254
+ kind: string;
4255
+ desc: string;
4256
+ isOpt: boolean;
4257
+ defVal: string;
4258
+ })[];
4259
+ };
4242
4260
  IPushPullDomain: {
4243
4261
  name: string;
4244
4262
  kind: string;
@@ -4259,12 +4277,21 @@ export declare const ADAPTABLE_METAMODEL: {
4259
4277
  desc: string;
4260
4278
  isOpt: boolean;
4261
4279
  defVal: string;
4280
+ ref?: undefined;
4262
4281
  } | {
4263
4282
  name: string;
4264
4283
  kind: string;
4265
4284
  desc: string;
4266
4285
  isOpt: boolean;
4286
+ ref: string;
4267
4287
  defVal?: undefined;
4288
+ } | {
4289
+ name: string;
4290
+ kind: string;
4291
+ desc: string;
4292
+ isOpt: boolean;
4293
+ defVal?: undefined;
4294
+ ref?: undefined;
4268
4295
  })[];
4269
4296
  };
4270
4297
  IPushPullReport: {
@@ -4904,24 +4931,6 @@ export declare const ADAPTABLE_METAMODEL: {
4904
4931
  kind: string;
4905
4932
  desc: string;
4906
4933
  };
4907
- PredefinedConfig: {
4908
- name: string;
4909
- kind: string;
4910
- desc: string;
4911
- props: ({
4912
- name: string;
4913
- kind: string;
4914
- desc: string;
4915
- isOpt: boolean;
4916
- ref: string;
4917
- } | {
4918
- name: string;
4919
- kind: string;
4920
- desc: string;
4921
- ref: string;
4922
- isOpt?: undefined;
4923
- })[];
4924
- };
4925
4934
  PredicateDefHandlerContext: {
4926
4935
  name: string;
4927
4936
  kind: string;