@adaptabletools/adaptable 24.0.0-canary.5 → 24.0.0-canary.7

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 (138) hide show
  1. package/devtools.d.ts +182 -1
  2. package/index.css +300 -275
  3. package/package.json +2 -1
  4. package/src/AdaptableInterfaces/IAdaptable.d.ts +4 -4
  5. package/src/AdaptableOptions/DefaultAdaptableOptions.js +5 -5
  6. package/src/AdaptableOptions/FlashingCellOptions.d.ts +3 -3
  7. package/src/AdaptableOptions/SettingsPanelOptions.d.ts +6 -4
  8. package/src/AdaptableOptions/StateOptions.d.ts +37 -13
  9. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +4 -6
  10. package/src/AdaptableState/AdaptableState.d.ts +2 -0
  11. package/src/AdaptableState/QuickSearchState.d.ts +4 -0
  12. package/src/AdaptableState/StyledColumns/GradientStyle.d.ts +4 -0
  13. package/src/Api/Implementation/ColumnScopeApiImpl.js +3 -3
  14. package/src/Api/Implementation/QuickSearchApiImpl.js +2 -2
  15. package/src/Api/Implementation/StateApiImpl.d.ts +1 -1
  16. package/src/Api/Implementation/StateApiImpl.js +4 -3
  17. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +0 -1
  18. package/src/Api/Implementation/UserInterfaceApiImpl.js +9 -15
  19. package/src/Api/Internal/AdaptableInternalApi.js +5 -3
  20. package/src/Api/Internal/CalculatedColumnInternalApi.js +1 -1
  21. package/src/Api/Internal/StateInternalApi.d.ts +1 -1
  22. package/src/Api/Internal/StateInternalApi.js +6 -5
  23. package/src/Api/StateApi.d.ts +2 -2
  24. package/src/Api/UserInterfaceApi.d.ts +0 -4
  25. package/src/Redux/ActionsReducers/QuickSearchRedux.d.ts +9 -4
  26. package/src/Redux/ActionsReducers/QuickSearchRedux.js +12 -7
  27. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.d.ts +8 -0
  28. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +12 -12
  29. package/src/Redux/Store/AdaptableStore.d.ts +8 -5
  30. package/src/Redux/Store/AdaptableStore.js +51 -21
  31. package/src/Redux/Store/Interface/IAdaptableStore.d.ts +5 -5
  32. package/src/Redux/Store/Interface/IStorageEngine.d.ts +4 -4
  33. package/src/Redux/Store/StateOptionsGuards.d.ts +58 -0
  34. package/src/Redux/Store/StateOptionsGuards.js +112 -0
  35. package/src/Redux/Store/isTransientReduxAction.d.ts +5 -0
  36. package/src/Redux/Store/isTransientReduxAction.js +19 -0
  37. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  38. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -0
  39. package/src/Utilities/Constants/ReduxConstants.d.ts +2 -2
  40. package/src/Utilities/Constants/ReduxConstants.js +5 -5
  41. package/src/Utilities/Helpers/AlertTypeHelper.d.ts +1 -1
  42. package/src/Utilities/Helpers/SettingsPanelHelper.d.ts +14 -0
  43. package/src/Utilities/Helpers/SettingsPanelHelper.js +37 -1
  44. package/src/Utilities/Helpers/UIHelper.d.ts +12 -14
  45. package/src/Utilities/Helpers/UIHelper.js +12 -35
  46. package/src/Utilities/ObjectFactory.js +3 -3
  47. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +9 -11
  48. package/src/View/Components/StyleComponent.js +2 -2
  49. package/src/View/Dashboard/Dashboard.d.ts +1 -1
  50. package/src/View/Dashboard/Dashboard.js +1 -1
  51. package/src/View/Dashboard/DashboardPopupSections.js +1 -1
  52. package/src/View/GridInfo/GridInfoPopup.js +62 -25
  53. package/src/View/QuickSearch/QuickSearchInput.js +1 -1
  54. package/src/View/QuickSearch/QuickSearchPopup.d.ts +1 -1
  55. package/src/View/QuickSearch/QuickSearchPopup.js +1 -1
  56. package/src/View/QuickSearch/Utilities/useQuickSearchDebounced.d.ts +2 -2
  57. package/src/View/StyledColumn/RangesComponent.js +13 -16
  58. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +0 -2
  59. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +2 -2
  60. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +2 -3
  61. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.d.ts +0 -3
  62. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +3 -3
  63. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +7 -11
  64. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +6 -6
  65. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +2 -2
  66. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +2 -2
  67. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +8 -8
  68. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +4 -4
  69. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +2 -2
  70. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +4 -4
  71. package/src/View/Wizard/CollapsibleWizardCard.d.ts +3 -1
  72. package/src/View/Wizard/CollapsibleWizardCard.js +17 -9
  73. package/src/agGrid/AdaptableAgGrid.d.ts +4 -4
  74. package/src/agGrid/AdaptableAgGrid.js +2 -0
  75. package/src/agGrid/AgGridColumnAdapter.d.ts +1 -1
  76. package/src/agGrid/AgGridColumnAdapter.js +4 -4
  77. package/src/components/ColorField/index.d.ts +14 -0
  78. package/src/components/ColorField/index.js +6 -0
  79. package/src/components/aql/QueryBuilder/QueryBuilderInputs.js +1 -1
  80. package/src/env.js +2 -2
  81. package/src/layout-manager/src/normalizeLayoutModel.d.ts +1 -1
  82. package/src/layout-manager/src/simplifyLayoutModel.d.ts +1 -1
  83. package/src/migration/AdaptableUpgradeHelper.d.ts +7 -2
  84. package/src/migration/VersionUpgrade17.js +13 -8
  85. package/src/migration/VersionUpgrade24.d.ts +9 -0
  86. package/src/migration/VersionUpgrade24.js +27 -0
  87. package/src/setupDevTools.js +605 -112
  88. package/src/types.d.ts +1 -1
  89. package/tsconfig.esm.tsbuildinfo +1 -1
  90. package/vendor/components/Button/index.d.ts +1 -1
  91. package/vendor/components/Button/index.d.ts.map +1 -1
  92. package/vendor/components/Button/index.js.map +1 -1
  93. package/vendor/components/CheckBox/index.d.ts +1 -1
  94. package/vendor/components/CheckBox/index.d.ts.map +1 -1
  95. package/vendor/components/CheckBox/index.js.map +1 -1
  96. package/vendor/components/ColorField/index.d.ts +43 -0
  97. package/vendor/components/ColorField/index.d.ts.map +1 -0
  98. package/vendor/components/ColorField/index.js +81 -0
  99. package/vendor/components/ColorField/index.js.map +1 -0
  100. package/vendor/components/ColorPicker/colorPickerTab.d.ts +4 -0
  101. package/vendor/components/ColorPicker/colorPickerTab.d.ts.map +1 -0
  102. package/vendor/components/ColorPicker/colorPickerTab.js +28 -0
  103. package/vendor/components/ColorPicker/colorPickerTab.js.map +1 -0
  104. package/vendor/components/ColorPicker/index.d.ts +59 -0
  105. package/vendor/components/ColorPicker/index.d.ts.map +1 -0
  106. package/vendor/components/ColorPicker/index.js +204 -0
  107. package/vendor/components/ColorPicker/index.js.map +1 -0
  108. package/vendor/components/ColorPicker/themeColors.d.ts +53 -0
  109. package/vendor/components/ColorPicker/themeColors.d.ts.map +1 -0
  110. package/vendor/components/ColorPicker/themeColors.js +110 -0
  111. package/vendor/components/ColorPicker/themeColors.js.map +1 -0
  112. package/vendor/components/Combobox/VirtualizedList.d.ts +1 -1
  113. package/vendor/components/Combobox/VirtualizedList.d.ts.map +1 -1
  114. package/vendor/components/Combobox/VirtualizedList.js.map +1 -1
  115. package/vendor/components/Combobox/index.d.ts +1 -1
  116. package/vendor/components/Combobox/index.d.ts.map +1 -1
  117. package/vendor/components/Combobox/index.js.map +1 -1
  118. package/vendor/components/NumberInput/index.d.ts +51 -0
  119. package/vendor/components/NumberInput/index.d.ts.map +1 -0
  120. package/vendor/components/NumberInput/index.js +82 -0
  121. package/vendor/components/NumberInput/index.js.map +1 -0
  122. package/vendor/components/index.css +280 -24
  123. package/vendor/components/index.d.ts +6 -0
  124. package/vendor/components/index.d.ts.map +1 -1
  125. package/vendor/components/index.js +3 -0
  126. package/vendor/components/index.js.map +1 -1
  127. package/vendor/components/ui/combobox.d.ts.map +1 -1
  128. package/vendor/components/ui/combobox.js +1 -1
  129. package/vendor/components/ui/combobox.js.map +1 -1
  130. package/vendor/components/ui/input-group.d.ts.map +1 -1
  131. package/vendor/components/ui/input-group.js +5 -4
  132. package/vendor/components/ui/input-group.js.map +1 -1
  133. package/src/components/ColorPicker/ColorPicker.d.ts +0 -12
  134. package/src/components/ColorPicker/ColorPicker.js +0 -48
  135. package/src/components/ColorPicker/OptionalColorPicker.d.ts +0 -12
  136. package/src/components/ColorPicker/OptionalColorPicker.js +0 -13
  137. package/src/components/ColorPicker/index.d.ts +0 -2
  138. package/src/components/ColorPicker/index.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "24.0.0-canary.5",
3
+ "version": "24.0.0-canary.7",
4
4
  "description": "Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -59,6 +59,7 @@
59
59
  "normalize.css": "^8.0.1",
60
60
  "re-resizable": "6.10.3",
61
61
  "react": "^18.0.0 || ^19.0.0",
62
+ "react-colorful": "^5.8.1",
62
63
  "react-day-picker": "^9.14.0",
63
64
  "react-dom": "^18.0.0 || ^19.0.0",
64
65
  "react-redux": "9.2.0",
@@ -9,7 +9,7 @@ import { SelectedCellInfo } from '../AdaptableState/Selection/SelectedCellInfo';
9
9
  import { AdaptableTheme } from '../AdaptableState/ThemeState';
10
10
  import { IAdaptableStore } from '../Redux/Store/Interface/IAdaptableStore';
11
11
  import { IModuleCollection } from '../Strategy/Interface/IModule';
12
- import { AdaptableMenuItem, AdaptableOptions, AdaptablePlugin, AdaptableState, ChartDefinition, InFilterValueResult, SelectedRowInfo } from '../types';
12
+ import { AdaptableMenuItem, AdaptableOptions, AdaptablePersistentState, AdaptablePlugin, ChartDefinition, InFilterValueResult, SelectedRowInfo } from '../types';
13
13
  import { ICalculatedColumnExpressionService } from '../Utilities/Services/Interface/ICalculatedColumnExpressionService';
14
14
  import { IDataService } from '../Utilities/Services/Interface/IDataService';
15
15
  import { CommentsService } from '../Utilities/Services/CommentsService';
@@ -326,17 +326,17 @@ export interface IAdaptable {
326
326
  canExportToExcel(): boolean;
327
327
  canExportToCsv(): boolean;
328
328
  silentUpdateCurrentLayoutModel(layoutModel?: TableLayoutModel | PivotLayoutModel): void;
329
- normalizeAdaptableState(state: AdaptableState, options: NormalizeAdaptableStateOptions): AdaptableState;
329
+ normalizeAdaptableState(state: Partial<AdaptablePersistentState>, options: NormalizeAdaptableStateOptions): Partial<AdaptablePersistentState>;
330
330
  /**
331
331
  * Runs the startup upgrade chain when `stateOptions.autoMigrateState` is on.
332
332
  * A no-op when migration is disabled or the state is already current.
333
333
  */
334
- migrateLoadedAdaptableState(state: AdaptableState): AdaptableState;
334
+ migrateLoadedAdaptableState<T extends Partial<AdaptablePersistentState>>(state: T): T;
335
335
  /**
336
336
  * `loadStore` hook used at startup and when the state key changes:
337
337
  * migrate (when enabled), then normalise.
338
338
  */
339
- buildPostLoadHook(gridOptions: NormalizeAdaptableStateOptions): (state: AdaptableState) => AdaptableState;
339
+ buildPostLoadHook(gridOptions: NormalizeAdaptableStateOptions): (state: Partial<AdaptablePersistentState>) => Partial<AdaptablePersistentState>;
340
340
  refreshLayout(): void;
341
341
  }
342
342
  export type NormalizeAdaptableStateOptions = Pick<GridOptions, 'rowModelType' | 'treeData' | 'columnDefs' | 'autoGroupColumnDef' | 'defaultColDef' | 'pivotMode'>;
@@ -1,5 +1,5 @@
1
1
  import * as GeneralConstants from '../Utilities/Constants/GeneralConstants';
2
- import { getGraySwatchColor, getSwatchColorVar } from '../Utilities/Helpers/UIHelper';
2
+ import { themeColorVar } from '../Utilities/Helpers/UIHelper';
3
3
  import { ACCESS_LEVEL_FULL, EMPTY_STRING, EMPTY_ARRAY, DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME, SYSTEM_REPORT_NAMES, SYSTEM_REPORT_FORMATS, SYSTEM_EXPORT_DESTINATIONS, } from '../Utilities/Constants/GeneralConstants';
4
4
  import { addUuidsToInitialState } from '../Utilities/Helpers/AdaptableHelper';
5
5
  import { defaultsDeep } from '../Utilities/Extensions/ObjectExtensions';
@@ -200,13 +200,13 @@ const DefaultAdaptableOptions = {
200
200
  defaultFlashDuration: 500,
201
201
  defaultFlashTarget: 'cell',
202
202
  defaultDownChangeStyle: {
203
- BackColor: getSwatchColorVar(18),
203
+ BackColor: themeColorVar('flash-down'),
204
204
  },
205
205
  defaultUpChangeStyle: {
206
- BackColor: getSwatchColorVar(7),
206
+ BackColor: themeColorVar('flash-up'),
207
207
  },
208
208
  defaultNeutralChangeStyle: {
209
- BackColor: getGraySwatchColor(),
209
+ BackColor: themeColorVar('flash-neutral'),
210
210
  },
211
211
  },
212
212
  formatColumnOptions: {
@@ -279,7 +279,7 @@ const DefaultAdaptableOptions = {
279
279
  position: undefined,
280
280
  size: undefined,
281
281
  customSettingsPanels: undefined,
282
- gridInfoTabs: ['Grid Options', 'Grid Summary', 'Grid State'],
282
+ gridInfoTabs: ['Grid Summary', 'Layout', 'Grid State', 'Grid Options'],
283
283
  },
284
284
  wizardOptions: {
285
285
  popupType: undefined,
@@ -10,17 +10,17 @@ export interface FlashingCellOptions {
10
10
  defaultFlashTarget?: FlashTarget;
11
11
  /**
12
12
  * Style for 'Down' value changes
13
- * @defaultValue Red BackColour
13
+ * @defaultValue BackColor of `var(--ab-color-flash-down)` (red in the shipped themes)
14
14
  */
15
15
  defaultDownChangeStyle?: AdaptableStyle;
16
16
  /**
17
17
  * Style for 'Up' value changes
18
- * @defaultValue Green BackColour
18
+ * @defaultValue BackColor of `var(--ab-color-flash-up)` (green in the shipped themes)
19
19
  */
20
20
  defaultUpChangeStyle?: AdaptableStyle;
21
21
  /**
22
22
  * Style for 'Neutral' value changes
23
- * @defaultValue Gray BackColour
23
+ * @defaultValue BackColor of `var(--ab-color-flash-neutral)` (gray in the shipped themes)
24
24
  */
25
25
  defaultNeutralChangeStyle?: AdaptableStyle;
26
26
  /**
@@ -74,9 +74,11 @@ export interface SettingsPanelOptions {
74
74
  */
75
75
  customSettingsPanels?: CustomSettingsPanel[];
76
76
  /**
77
- * Which Tabs can be used to display Grid Info: 'Grid Options', 'Grid Summary' or 'Grid State'
77
+ * Which Tabs to show in Grid Info: 'Grid Summary', 'Layout', 'Grid State' or 'Grid Options'
78
78
  *
79
- * @defaultValue ['Grid Options', 'Grid Summary', 'Grid State']
79
+ * Tab labels in the UI are Summary, Layout, State and Options
80
+ *
81
+ * @defaultValue ['Grid Summary', 'Layout', 'Grid State', 'Grid Options']
80
82
  */
81
83
  gridInfoTabs?: GridInfoTabs;
82
84
  }
@@ -182,6 +184,6 @@ export type PopupType = 'modal' | 'window';
182
184
  */
183
185
  export type GridInfoTabs = GridInfoTab[];
184
186
  /**
185
- * Tab to use for Grid Info: 'Grid Options', 'Grid Summary' or 'Grid State'
187
+ * Tab to use for Grid Info: 'Grid Summary', 'Layout', 'Grid State' or 'Grid Options'
186
188
  */
187
- export type GridInfoTab = 'Grid Options' | 'Grid Summary' | 'Grid State';
189
+ export type GridInfoTab = 'Grid Summary' | 'Layout' | 'Grid State' | 'Grid Options';
@@ -1,12 +1,22 @@
1
- import { AdaptableState } from '../AdaptableState/AdaptableState';
1
+ import { AdaptablePersistentState } from '../AdaptableState/AdaptableState';
2
2
  import { AdaptableApi } from '../Api/AdaptableApi';
3
3
  /**
4
4
  * Options related to Adaptable State hydration / dehydration; allows users to intercept state persistence and loading with custom functionality
5
+ *
6
+ * All functions deal with `AdaptablePersistentState` - the persisted subset of `AdaptableState`.
7
+ * Transient sections (`Internal`, `Popup`, `Comment`, `Plugins`) are never passed to, nor expected from, these functions.
8
+ *
9
+ * Hydration flow: `loadState()` -> (merge with `initialState`) -> `applyState()`
10
+ *
11
+ * Dehydration flow: `saveState()` -> `persistState()`
12
+ *
13
+ * To store Adaptable State in a custom format (e.g. wrapped in an envelope, compressed, encrypted) do the wrapping in `persistState()` and the unwrapping in `loadState()` - these are the only functions which own the storage format.
14
+ * `saveState()` and `applyState()` always operate on Adaptable State, as `loadState()`'s result is merged with `initialState` section by section before `applyState()` is called.
5
15
  */
6
16
  export interface StateOptions {
7
17
  /**
8
18
  * Retrieves saved Adaptable State from storage or external source
9
- * @returns Promise resolving to the retrieved state object
19
+ * @returns Promise resolving to the retrieved (possibly partial) state object, or to nothing if no state was persisted yet
10
20
  */
11
21
  loadState?: AdaptableLoadStateFunction;
12
22
  /**
@@ -15,7 +25,7 @@ export interface StateOptions {
15
25
  */
16
26
  persistState?: AdaptablePersistStateFunction;
17
27
  /**
18
- * Transforms state before applying it to the application. Called after `loadState()` but before the state is used.
28
+ * Transforms state before applying it to the application. Called after `loadState()` (and after merging with `initialState`) but before the state is used.
19
29
  * @returns The transformed state object
20
30
  */
21
31
  applyState?: AdaptableApplyStateFunction;
@@ -74,63 +84,77 @@ export interface AdaptableStateFunctionConfig {
74
84
  */
75
85
  actionName?: string;
76
86
  /**
77
- * Previous state before the action was applied.
87
+ * Previous (persistent) state before the action was applied.
78
88
  * This is useful for comparing changes or reverting if necessary.
79
89
  */
80
- previousState?: AdaptableState;
90
+ previousState?: AdaptablePersistentState;
81
91
  }
82
92
  /**
83
93
  * Function that handles persisting state to storage systems (localStorage, server, etc.).
84
94
  * Called after `saveState()` to store the prepared state.
85
95
  *
96
+ * This is the place to apply any custom storage format (envelope, compression, encryption, etc.); the matching `loadState()` is expected to undo it.
97
+ *
86
98
  * @example
87
99
  * ```
88
100
  * persistState = (state, stateFunctionConfig) => {
89
- * localStorage.setItem(stateFunctionConfig.adaptableStateKey, JSON.stringify(state))
101
+ * localStorage.setItem(stateFunctionConfig.adaptableStateKey, JSON.stringify(state));
102
+ * return Promise.resolve();
90
103
  * }
91
104
  * ```
92
105
  *
93
106
  * @param state The state to be persisted
94
107
  * @param adaptableStateFunctionConfig Configuration details for the current Adaptable instance
95
- * @returns Promise resolving once persistence is complete
108
+ * @returns Promise resolving once persistence is complete; the resolved value is ignored
96
109
  */
97
110
  export interface AdaptablePersistStateFunction {
98
- (state: any, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): Promise<any>;
111
+ (state: AdaptablePersistentState, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): Promise<unknown>;
99
112
  }
100
113
  /**
101
114
  * Function that clears persisted state from the storage system.
102
115
  * Only invoked during `StateApi.reloadInitialState()` operations.
116
+ *
117
+ * @returns Promise resolving once the persisted state is cleared; the resolved value is ignored
103
118
  */
104
119
  export interface AdaptableClearStateFunction {
105
- (adaptableStateFunctionConfig: AdaptableStateFunctionConfig): Promise<any>;
120
+ (adaptableStateFunctionConfig: AdaptableStateFunctionConfig): Promise<unknown>;
106
121
  }
107
122
  /**
108
123
  * Function that transforms state before persistence. Called first in the persistence flow, before `persistState()`.
109
124
  *
125
+ * The received state is the full persistent state of the current Adaptable instance (transient sections are already stripped).
126
+ *
110
127
  * @param state The Adaptable state to transform before saving
111
128
  * @param adaptableStateFunctionConfig Configuration details for the current Adaptable instance
112
129
  * @returns The modified state ready for persistence
113
130
  */
114
131
  export interface AdaptableSaveStateFunction {
115
- (state: AdaptableState, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): any;
132
+ (state: AdaptablePersistentState, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): AdaptablePersistentState;
116
133
  }
117
134
  /**
118
135
  * Function that retrieves Adaptable state from storage or external source. Called during initialization to hydrate the application state.
119
136
  *
137
+ * The result is merged with `AdaptableOptions.initialState` before being passed to `applyState()`, so it may be partial (only the sections which were persisted) or empty / nullish (nothing was persisted yet).
138
+ *
139
+ * This is the place to undo any custom storage format applied in `persistState()`.
140
+ *
120
141
  * @param config Configuration details for the current Adaptable instance
121
142
  * @returns Promise resolving to the retrieved state object
122
143
  */
123
144
  export interface AdaptableLoadStateFunction {
124
- (config: AdaptableStateFunctionConfig): Promise<any>;
145
+ (config: AdaptableStateFunctionConfig): Promise<Partial<AdaptablePersistentState> | null | void>;
125
146
  }
126
147
  /**
127
- * Function that applies the loaded state to the application. Called after `loadState()` but before the state is used.
148
+ * Function that applies the loaded state to the application. Called after `loadState()` (and after the result was merged with `initialState`) but before the state is used.
128
149
  * This allows for any necessary transformations or adjustments before the state is applied.
150
+ *
151
+ * The state is partial, as only the sections present in either the persisted state or `initialState` are available at this point; missing sections are initialised with their defaults afterwards.
152
+ *
129
153
  * @param state The loaded state to transform
130
154
  * @param adaptableStateFunctionConfig Configuration details for the current Adaptable instance
131
155
  *
132
156
  * @returns The transformed state object
133
157
  */
134
158
  export interface AdaptableApplyStateFunction {
135
- (state: any, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): any;
159
+ (state: Partial<AdaptablePersistentState>, adaptableStateFunctionConfig: AdaptableStateFunctionConfig): Partial<AdaptablePersistentState>;
136
160
  }
@@ -29,10 +29,6 @@ export interface UserInterfaceOptions<TData = any> {
29
29
  *
30
30
  */
31
31
  dateInputOptions?: DateInputOptions;
32
- /**
33
- * @deprecated Override `--ab-color-swatch-*`, `--ab-color-palette-*`, and semantic `--ab-color-*` variables in light/dark theme instead; will be removed in future release
34
- */
35
- colorPalette?: string[] | ((currentTheme: string) => string[]);
36
32
  /**
37
33
  * Style to set for editable Cells
38
34
  */
@@ -52,9 +48,11 @@ export interface UserInterfaceOptions<TData = any> {
52
48
  */
53
49
  styleClassNames?: string[];
54
50
  /**
55
- * Optional list of AdaptableObjectTags that can be associated with AdaptableObjects
51
+ * Optional list of AdaptableObjectTags that can be associated with AdaptableObjects.
52
+ *
53
+ * When provided as a function, return `undefined` to provide no tags.
56
54
  */
57
- objectTags?: AdaptableObjectTag[] | ((context: ObjectTagsContext) => AdaptableObjectTag[]);
55
+ objectTags?: AdaptableObjectTag[] | ((context: ObjectTagsContext) => AdaptableObjectTag[] | undefined);
58
56
  /**
59
57
  * Provide links to AdapTable documentation (in Module popups and Expression Editor)
60
58
  *
@@ -32,6 +32,8 @@ export interface AdaptableState extends AdaptablePersistentState, AdaptableTrans
32
32
  }
33
33
  /**
34
34
  * The state object of Adaptable which is persisted
35
+ *
36
+ * This is the state shape handled by all `StateOptions` functions (`saveState`, `persistState`, `loadState`, `applyState`)
35
37
  */
36
38
  export interface AdaptablePersistentState {
37
39
  Application: ApplicationState;
@@ -14,10 +14,14 @@ export interface QuickSearchState extends BaseState {
14
14
  CellMatchStyle?: Omit<AdaptableStyle, 'ClassName'>;
15
15
  /**
16
16
  * Style used to highlight matching text within a cell (not availale in SSRM)
17
+ *
18
+ * @defaultValue `var(--ab-color-quick-search-match)` background and `var(--ab-color-quick-search-match-foreground)` text
17
19
  */
18
20
  TextMatchStyle?: Omit<AdaptableStyle, 'ClassName'>;
19
21
  /**
20
22
  * Style used to highlight matching text within current match (not availale in SSRM)
23
+ *
24
+ * @defaultValue `var(--ab-color-quick-search-current-match)` background, `var(--ab-color-quick-search-current-match-foreground)` text, bold
21
25
  */
22
26
  CurrentTextMatchStyle?: Omit<AdaptableStyle, 'ClassName'>;
23
27
  }
@@ -7,10 +7,14 @@ import { NumericStyledColumn } from './Common/NumericStyledColumn';
7
7
  export interface ZeroCentredColors {
8
8
  /**
9
9
  * Colour applied to negative cell values (`Col-Min`…`0`)
10
+ *
11
+ * @defaultValue `var(--ab-color-destructive)`
10
12
  */
11
13
  NegativeColor: string;
12
14
  /**
13
15
  * Colour applied to positive cell values (`0`…`Col-Max`)
16
+ *
17
+ * @defaultValue `var(--ab-color-success)`
14
18
  */
15
19
  PositiveColor: string;
16
20
  }
@@ -1,6 +1,6 @@
1
1
  import { ApiBase } from './ApiBase';
2
2
  import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
3
- import { getGraySwatchColor } from '../../Utilities/Helpers/UIHelper';
3
+ import { getDefaultRangeColor } from '../../Utilities/Helpers/UIHelper';
4
4
  export class ColumnScopeApiImpl extends ApiBase {
5
5
  isColumnInScope(column, scope) {
6
6
  if (!column) {
@@ -238,7 +238,7 @@ export class ColumnScopeApiImpl extends ApiBase {
238
238
  {
239
239
  Min: 0,
240
240
  Max: 0,
241
- Color: getGraySwatchColor(),
241
+ Color: getDefaultRangeColor(),
242
242
  },
243
243
  ];
244
244
  }
@@ -246,7 +246,7 @@ export class ColumnScopeApiImpl extends ApiBase {
246
246
  {
247
247
  Min: 'Col-Min',
248
248
  Max: 'Col-Max',
249
- Color: getGraySwatchColor(),
249
+ Color: getDefaultRangeColor(),
250
250
  },
251
251
  ];
252
252
  }
@@ -8,10 +8,10 @@ export class QuickSearchApiImpl extends ApiBase {
8
8
  return this.getAdaptableState().QuickSearch;
9
9
  }
10
10
  runQuickSearch(quickSearchText) {
11
- this.dispatchAction(QuickSearchRedux.QuickSearchRun(quickSearchText));
11
+ this.dispatchAction(QuickSearchRedux.QuickSearchTextAction(quickSearchText));
12
12
  }
13
13
  clearQuickSearch() {
14
- this.dispatchAction(QuickSearchRedux.QuickSearchRun(''));
14
+ this.dispatchAction(QuickSearchRedux.QuickSearchClear());
15
15
  }
16
16
  gotoNextMatch() {
17
17
  this.getAdaptableApi().agGridApi.findNext();
@@ -43,7 +43,7 @@ export declare class StateApiImpl extends ApiBase implements StateApi {
43
43
  flushCurrentState?: boolean;
44
44
  progressIndicatorLabel?: string;
45
45
  }): Promise<void>;
46
- persistAdaptableState(): Promise<AdaptableState>;
46
+ persistAdaptableState(): Promise<AdaptablePersistentState>;
47
47
  getDescriptionForModule(module: AdaptableModule): string;
48
48
  getHelpPageForModule(module: AdaptableModule): string;
49
49
  getUserStateByStateKey(stateKey: AdaptableStateKey, returnJson?: boolean): BaseState | string;
@@ -1,4 +1,6 @@
1
1
  import { InitState } from '../../Redux/Store/AdaptableStore';
2
+ import { runAsyncStateFunction } from '../../Redux/Store/StateOptionsGuards';
3
+ import { loadState as defaultLoadState } from '../../Redux/Store/AdaptableReduxLocalStorageEngine';
2
4
  import { ApiBase } from './ApiBase';
3
5
  import Helper from '../../Utilities/Helpers/Helper';
4
6
  import { addUuidsToInitialState } from '../../Utilities/Helpers/AdaptableHelper';
@@ -56,7 +58,7 @@ export class StateApiImpl extends ApiBase {
56
58
  localStorage.removeItem(adaptableOptions.adaptableStateKey);
57
59
  return Promise.resolve(true);
58
60
  });
59
- const clearStatePromise = clearStateFn(this.internalApi.buildAdaptableStateFunctionConfig());
61
+ const clearStatePromise = runAsyncStateFunction('clearState', clearStateFn, [this.internalApi.buildAdaptableStateFunctionConfig()], this._adaptable.logger);
60
62
  return clearStatePromise.then(() => {
61
63
  this.setAdaptableStateKey(adaptableOptions.adaptableStateKey, {
62
64
  initialState: newInitialState || adaptableOptions.initialState,
@@ -82,8 +84,7 @@ export class StateApiImpl extends ApiBase {
82
84
  }
83
85
  async remergePersistedState() {
84
86
  const config = this.internalApi.buildAdaptableStateFunctionConfig();
85
- const loadState = this.getOptions().stateOptions.loadState;
86
- const userState = await loadState(config);
87
+ const userState = await runAsyncStateFunction('loadState', this.getOptions().stateOptions.loadState || defaultLoadState, [config], this._adaptable.logger);
87
88
  return this.internalApi.applyMergedInitialAndUserState(this.getInitialState(), userState);
88
89
  }
89
90
  getAllState() {
@@ -11,7 +11,6 @@ export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfa
11
11
  internalApi: UserInterfaceInternalApi;
12
12
  private showProgressIndicatorTimeout;
13
13
  constructor(_adaptable: IAdaptable);
14
- getColorPalette(): string[];
15
14
  getCustomIcons(): CustomIcon[];
16
15
  getStyleClassNames(): string[] | undefined;
17
16
  getEditableCellStyle(): AdaptableStyle | undefined;
@@ -1,8 +1,6 @@
1
1
  import * as PopupRedux from '../../Redux/ActionsReducers/PopupRedux';
2
2
  import { ArrayExtensions } from '../../Utilities/Extensions/ArrayExtensions';
3
3
  import { resolveValueOrFunction } from '../../Utilities/Helpers/ValueOrFunctionHelper';
4
- import { logDeprecation } from '../../Utilities/logDeprecation';
5
- import UIHelper from '../../Utilities/Helpers/UIHelper';
6
4
  import { CUSTOM_WINDOW_FACTORY_ID } from '../../View/Components/Popups/WindowPopups/WindowPopups';
7
5
  import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
8
6
  import { ApiBase } from './ApiBase';
@@ -15,16 +13,6 @@ export class UserInterfaceApiImpl extends ApiBase {
15
13
  super(_adaptable);
16
14
  this.internalApi = new UserInterfaceInternalApi(_adaptable);
17
15
  }
18
- getColorPalette() {
19
- const colorPalette = this.getUserInterfaceOptions().colorPalette;
20
- if (colorPalette != null) {
21
- logDeprecation(this._adaptable.logger, 'UserInterfaceOptions', 'colorPalette', undefined, 'Override `--ab-color-swatch-*`, `--ab-color-palette-*`, and semantic `--ab-color-*` variables in your light or dark theme CSS instead. `colorPalette` will be removed in a future major release.');
22
- if (typeof colorPalette === 'function' || Array.isArray(colorPalette)) {
23
- return resolveValueOrFunction(colorPalette, this.getThemeApi().getCurrentTheme());
24
- }
25
- }
26
- return UIHelper.getDefaultColorPalette();
27
- }
28
16
  getCustomIcons() {
29
17
  return resolveValueOrFunction(this.getUserInterfaceOptions().customIcons) ?? [];
30
18
  }
@@ -42,9 +30,15 @@ export class UserInterfaceApiImpl extends ApiBase {
42
30
  }
43
31
  getAdaptableObjectTags() {
44
32
  const objectTags = this.getUserInterfaceOptions().objectTags;
45
- const resolvedTags = resolveValueOrFunction(objectTags, this.getAdaptableInternalApi().buildBaseContext());
46
- if (resolvedTags && ArrayExtensions.IsNotNullOrEmpty(resolvedTags)) {
47
- return resolvedTags;
33
+ if (typeof objectTags === 'function') {
34
+ const tags = objectTags(this.getAdaptableInternalApi().buildBaseContext());
35
+ if (!Array.isArray(tags)) {
36
+ return;
37
+ }
38
+ return tags.filter((tag) => typeof tag === 'string');
39
+ }
40
+ if (objectTags && ArrayExtensions.IsNotNullOrEmpty(objectTags)) {
41
+ return objectTags;
48
42
  }
49
43
  }
50
44
  getAdaptableObjectsWithTag(tag, adaptableModule) {
@@ -276,9 +276,11 @@ export class AdaptableInternalApi extends ApiBase {
276
276
  return userInterfaceOptions.objectTags;
277
277
  }
278
278
  if (typeof userInterfaceOptions.objectTags === 'function') {
279
- return userInterfaceOptions
280
- .objectTags(this.buildBaseContext())
281
- .filter((tag) => typeof tag === 'string');
279
+ const tags = userInterfaceOptions.objectTags(this.buildBaseContext());
280
+ if (!Array.isArray(tags)) {
281
+ return;
282
+ }
283
+ return tags.filter((tag) => typeof tag === 'string');
282
284
  }
283
285
  }
284
286
  dispatchReduxAction(action) {
@@ -221,7 +221,7 @@ export class CalculatedColumnInternalApi extends ApiBase {
221
221
  if (calculatedColumnSettings.ShowToolTip != null &&
222
222
  calculatedColumnSettings.ShowToolTip == true) {
223
223
  newColDef.tooltipComponent = TwoLineTooltip;
224
- newColDef.tooltipValueGetter = (params) => {
224
+ newColDef.tooltip = (params) => {
225
225
  const formulaText = this.getAdaptableInternalApi().getAdaptableQueryExpressionText(calculatedColumn.Expression);
226
226
  if (!isPerRowCalculatedColumnType(getCalculatedColumnType(calculatedColumn)) ||
227
227
  !params?.node ||
@@ -7,7 +7,7 @@ export declare class StateInternalApi extends ApiBase {
7
7
  * Startup-equivalent merge: Initial State + user state → store, layout/theme/cells, persist.
8
8
  * Does not clear persistence and does not call `loadState` (caller supplies user state).
9
9
  */
10
- applyMergedInitialAndUserState(initialState: InitialState, userState: AdaptablePersistentState | Record<string, unknown> | null | undefined): Promise<void>;
10
+ applyMergedInitialAndUserState(initialState: InitialState, userState: Partial<AdaptablePersistentState> | null | void): Promise<void>;
11
11
  getAllStateForDevTools(): AdaptableState;
12
12
  /**
13
13
  * Replaces persisted Adaptable state with the supplied snapshot (e.g. from DevTools).
@@ -1,5 +1,6 @@
1
1
  import { getPersistableState, LoadState, InitState } from '../../Redux/Store/AdaptableStore';
2
2
  import { MergeStateFunction } from '../../Redux/Store/AdaptableReduxMerger';
3
+ import { runSyncStateFunction } from '../../Redux/Store/StateOptionsGuards';
3
4
  import { addUuidsToInitialState } from '../../Utilities/Helpers/AdaptableHelper';
4
5
  import { ApiBase } from '../Implementation/ApiBase';
5
6
  function deepClone(value) {
@@ -23,8 +24,7 @@ export class StateInternalApi extends ApiBase {
23
24
  const initialForMerge = addUuidsToInitialState(deepClone(initialState));
24
25
  const userForMerge = deepClone(userState ?? {});
25
26
  let merged = MergeStateFunction(initialForMerge, userForMerge);
26
- const stateFunctionConfig = this.buildAdaptableStateFunctionConfig();
27
- merged = this.getOptions().stateOptions.applyState(merged, stateFunctionConfig);
27
+ merged = runSyncStateFunction('applyState', this.getOptions().stateOptions.applyState, merged, this.buildAdaptableStateFunctionConfig(), this._adaptable.logger);
28
28
  merged = this._adaptable.migrateLoadedAdaptableState(merged);
29
29
  const agGridOptions = {
30
30
  columnDefs: this._adaptable.agGridAdapter.getGridOption('columnDefs'),
@@ -92,14 +92,15 @@ export class StateInternalApi extends ApiBase {
92
92
  rowModelType: this._adaptable.agGridAdapter.getGridOption('rowModelType'),
93
93
  treeData: this._adaptable.agGridAdapter.getGridOption('treeData'),
94
94
  };
95
- const clonedState = state.Internal
96
- ? JSON.parse(JSON.stringify(state))
97
- : getPersistableState(JSON.parse(JSON.stringify(state)));
95
+ const clonedState = getPersistableState(JSON.parse(JSON.stringify(state)));
98
96
  let processedState = this._adaptable.migrateLoadedAdaptableState(clonedState);
99
97
  processedState = this._adaptable.normalizeAdaptableState(processedState, agGridOptions);
98
+ const oldState = this.getAdaptableApi().stateApi.getPersistentState();
100
99
  this.getAdaptableStore().TheStore.dispatch(LoadState(processedState));
101
100
  this.getAdaptableStore().TheStore.dispatch(InitState());
102
101
  this._adaptable.refreshLayout();
102
+ const newState = this.getAdaptableApi().stateApi.getPersistentState();
103
+ this.getEventApi().internalApi.fireAdaptableStateReloadedEvent(oldState, newState);
103
104
  void this.getAdaptableStore()
104
105
  .saveStateNow(this._adaptable)
105
106
  .then(() => resolve())
@@ -224,7 +224,7 @@ export interface StateApi {
224
224
  * This method first calls StateOption.saveState() to prepare the state
225
225
  * and then StateOptions.persistState() to save it to the configured storage.
226
226
  *
227
- * @returns Promise<AdaptableState> - A promise that resolves to the persisted state
227
+ * @returns A promise that resolves to the persisted state
228
228
  */
229
- persistAdaptableState(): Promise<AdaptableState>;
229
+ persistAdaptableState(): Promise<AdaptablePersistentState>;
230
230
  }
@@ -8,10 +8,6 @@ import { UserInterfaceState } from '../AdaptableState/UserInterfaceState';
8
8
  * Functions relating to User Interface section of Adaptable State
9
9
  */
10
10
  export interface UserInterfaceApi {
11
- /**
12
- * Retrieves Color Palette currently being used
13
- */
14
- getColorPalette(): string[];
15
11
  /**
16
12
  * Retrieves Custom Icons provided by users
17
13
  */
@@ -1,10 +1,6 @@
1
1
  import * as Redux from 'redux';
2
2
  import { QuickSearchState } from '../../AdaptableState/QuickSearchState';
3
3
  import { AdaptableStyle } from '../../AdaptableState/Common/AdaptableStyle';
4
- export declare const QUICK_SEARCH_DEFAULT_CELL_MATCH_STYLE: {
5
- BackColor: string;
6
- ForeColor: string;
7
- };
8
4
  export declare const QUICK_SEARCH_DEFAULT_TEXT_MATCH_STYLE: {
9
5
  BackColor: string;
10
6
  ForeColor: string;
@@ -18,6 +14,10 @@ export declare const QUICK_SEARCH_DEFAULT_CURRENT_TEXT_MATCH_STYLE: {
18
14
  * @ReduxAction Runs Quick Search
19
15
  */
20
16
  export declare const QUICK_SEARCH_RUN = "QUICK_SEARCH_RUN";
17
+ /**
18
+ * @ReduxAction Clears Quick Search text
19
+ */
20
+ export declare const QUICK_SEARCH_CLEAR = "QUICK_SEARCH_CLEAR";
21
21
  /**
22
22
  * @ReduxAction Sets Quick Search whole-cell style (SSRM / legacy)
23
23
  */
@@ -37,6 +37,8 @@ export declare const QUICK_SEARCH_READY = "QUICK_SEARCH_READY";
37
37
  export interface QuickSearchRunAction extends Redux.Action {
38
38
  quickSearchText: string;
39
39
  }
40
+ export interface QuickSearchClearAction extends Redux.Action {
41
+ }
40
42
  export interface QuickSearchSetMatchingCellStyleAction extends Redux.Action {
41
43
  matchingCellStyle: AdaptableStyle;
42
44
  }
@@ -50,6 +52,9 @@ export interface QuickSearchReadyAction extends Redux.Action {
50
52
  quickSearchState: QuickSearchState;
51
53
  }
52
54
  export declare const QuickSearchRun: (quickSearchText: string) => QuickSearchRunAction;
55
+ export declare const QuickSearchClear: () => QuickSearchClearAction;
56
+ /** Runs Quick Search, or clears it when the text is empty. */
57
+ export declare const QuickSearchTextAction: (quickSearchText: string) => QuickSearchRunAction | QuickSearchClearAction;
53
58
  export declare const QuickSearchSetCellMatchingStyle: (matchingCellStyle: AdaptableStyle) => QuickSearchSetMatchingCellStyleAction;
54
59
  export declare const QuickSearchSetTextMatchingStyle: (textMatchStyle: AdaptableStyle) => QuickSearchSetTextMatchingStyleAction;
55
60
  export declare const QuickSearchSetCurrentTextMatchingStyle: (currentTextMatchStyle: AdaptableStyle) => QuickSearchSetCurrentTextMatchingStyleAction;
@@ -1,19 +1,16 @@
1
- import { QUICK_SEARCH_DEFAULT_CELL_BACK_COLOR, QUICK_SEARCH_DEFAULT_CURRENT_BACK_COLOR, QUICK_SEARCH_DEFAULT_FORE_COLOR, QUICK_SEARCH_DEFAULT_TEXT_BACK_COLOR, } from '../../Utilities/Constants/ReduxConstants';
1
+ import { QUICK_SEARCH_DEFAULT_CURRENT_BACK_COLOR, QUICK_SEARCH_DEFAULT_CURRENT_FORE_COLOR, QUICK_SEARCH_DEFAULT_TEXT_BACK_COLOR, QUICK_SEARCH_DEFAULT_TEXT_FORE_COLOR, } from '../../Utilities/Constants/ReduxConstants';
2
2
  import { EMPTY_STRING } from '../../Utilities/Constants/GeneralConstants';
3
- export const QUICK_SEARCH_DEFAULT_CELL_MATCH_STYLE = {
4
- BackColor: QUICK_SEARCH_DEFAULT_CELL_BACK_COLOR,
5
- ForeColor: QUICK_SEARCH_DEFAULT_FORE_COLOR,
6
- };
7
3
  export const QUICK_SEARCH_DEFAULT_TEXT_MATCH_STYLE = {
8
4
  BackColor: QUICK_SEARCH_DEFAULT_TEXT_BACK_COLOR,
9
- ForeColor: QUICK_SEARCH_DEFAULT_FORE_COLOR,
5
+ ForeColor: QUICK_SEARCH_DEFAULT_TEXT_FORE_COLOR,
10
6
  };
11
7
  export const QUICK_SEARCH_DEFAULT_CURRENT_TEXT_MATCH_STYLE = {
12
8
  BackColor: QUICK_SEARCH_DEFAULT_CURRENT_BACK_COLOR,
13
- ForeColor: QUICK_SEARCH_DEFAULT_FORE_COLOR,
9
+ ForeColor: QUICK_SEARCH_DEFAULT_CURRENT_FORE_COLOR,
14
10
  FontWeight: 'Bold',
15
11
  };
16
12
  export const QUICK_SEARCH_RUN = 'QUICK_SEARCH_RUN';
13
+ export const QUICK_SEARCH_CLEAR = 'QUICK_SEARCH_CLEAR';
17
14
  export const QUICK_SEARCH_SET_CELL_MATCHING_STYLE = 'QUICK_SEARCH_SET_CELL_MATCHING_STYLE';
18
15
  export const QUICK_SEARCH_SET_TEXT_MATCHING_STYLE = 'QUICK_SEARCH_SET_TEXT_MATCHING_STYLE';
19
16
  export const QUICK_SEARCH_SET_CURRENT_TEXT_MATCHING_STYLE = 'QUICK_SEARCH_SET_CURRENT_TEXT_MATCHING_STYLE';
@@ -22,6 +19,10 @@ export const QuickSearchRun = (quickSearchText) => ({
22
19
  type: QUICK_SEARCH_RUN,
23
20
  quickSearchText,
24
21
  });
22
+ export const QuickSearchClear = () => ({
23
+ type: QUICK_SEARCH_CLEAR,
24
+ });
25
+ export const QuickSearchTextAction = (quickSearchText) => quickSearchText ? QuickSearchRun(quickSearchText) : QuickSearchClear();
25
26
  export const QuickSearchSetCellMatchingStyle = (matchingCellStyle) => ({
26
27
  type: QUICK_SEARCH_SET_CELL_MATCHING_STYLE,
27
28
  matchingCellStyle: matchingCellStyle,
@@ -47,6 +48,10 @@ export const QuickSearchReducer = (state = initialState, action) => {
47
48
  return Object.assign({}, state, {
48
49
  QuickSearchText: action.quickSearchText,
49
50
  });
51
+ case QUICK_SEARCH_CLEAR:
52
+ return Object.assign({}, state, {
53
+ QuickSearchText: EMPTY_STRING,
54
+ });
50
55
  case QUICK_SEARCH_SET_CELL_MATCHING_STYLE:
51
56
  return Object.assign({}, state, {
52
57
  CellMatchStyle: action.matchingCellStyle,