@adaptabletools/adaptable 22.0.0-canary.0 → 22.0.0-canary.10

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 (395) hide show
  1. package/README.md +4 -6
  2. package/agGrid.d.ts +9 -9
  3. package/agGrid.js +1 -0
  4. package/index.css +1280 -1400
  5. package/index.css.map +1 -1
  6. package/index.d.ts +66 -0
  7. package/index.js +73 -0
  8. package/package.json +3 -3
  9. package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -1
  10. package/src/AdaptableOptions/ActionColumnOptions.d.ts +2 -2
  11. package/src/AdaptableOptions/AdaptablePlugin.js +6 -1
  12. package/src/AdaptableOptions/ColumnOptions.d.ts +2 -2
  13. package/src/AdaptableOptions/ContainerOptions.d.ts +55 -15
  14. package/src/AdaptableOptions/CustomSortOptions.d.ts +4 -0
  15. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -2
  16. package/src/AdaptableOptions/ExportOptions.d.ts +1 -2
  17. package/src/AdaptableOptions/FilterOptions.d.ts +3 -0
  18. package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -2
  19. package/src/AdaptableState/AdaptableState.d.ts +2 -0
  20. package/src/AdaptableState/AlertState.d.ts +5 -2
  21. package/src/AdaptableState/ChartingState.d.ts +2 -2
  22. package/src/AdaptableState/Common/AdaptableAlert.d.ts +2 -2
  23. package/src/AdaptableState/Common/AdaptableButton.d.ts +2 -2
  24. package/src/AdaptableState/Common/AdaptableColumn.d.ts +16 -10
  25. package/src/AdaptableState/Common/AdaptableColumnContext.d.ts +9 -0
  26. package/src/AdaptableState/Common/AdaptableFlashingCell.d.ts +2 -2
  27. package/src/AdaptableState/Common/AdaptableObject.d.ts +20 -2
  28. package/src/AdaptableState/Common/AdaptableRowContext.d.ts +11 -0
  29. package/src/AdaptableState/Common/AdaptableStyle.d.ts +8 -0
  30. package/src/AdaptableState/Common/BaseContext.d.ts +2 -0
  31. package/src/AdaptableState/Common/ColumnHighlightInfo.d.ts +18 -0
  32. package/src/AdaptableState/Common/DataUpdateConfig.d.ts +17 -0
  33. package/src/AdaptableState/Common/NamedObject.d.ts +10 -0
  34. package/src/AdaptableState/Common/NamedObject.js +1 -0
  35. package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
  36. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  37. package/src/AdaptableState/Common/Schedule.d.ts +8 -5
  38. package/src/AdaptableState/Common/SystemStatusMessageInfo.d.ts +2 -2
  39. package/src/AdaptableState/Common/TransposeConfig.d.ts +12 -10
  40. package/src/AdaptableState/CustomSortState.d.ts +5 -1
  41. package/src/AdaptableState/DashboardState.d.ts +1 -1
  42. package/src/AdaptableState/ExportState.d.ts +1 -1
  43. package/src/AdaptableState/FlashingCellState.d.ts +6 -2
  44. package/src/AdaptableState/FormatColumnState.d.ts +5 -9
  45. package/src/AdaptableState/InitialState.d.ts +10 -1
  46. package/src/AdaptableState/InternalState.d.ts +2 -0
  47. package/src/AdaptableState/LayoutState.d.ts +7 -3
  48. package/src/AdaptableState/NamedQueryState.d.ts +1 -1
  49. package/src/AdaptableState/PlusMinusState.d.ts +5 -1
  50. package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
  51. package/src/AdaptableState/ShortcutState.d.ts +5 -1
  52. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  53. package/src/AdaptableState/ThemeState.d.ts +1 -1
  54. package/src/AdaptableState/UserInterfaceState.d.ts +14 -0
  55. package/src/AdaptableState/UserInterfaceState.js +1 -0
  56. package/src/Api/AlertApi.d.ts +6 -0
  57. package/src/Api/CustomSortApi.d.ts +12 -3
  58. package/src/Api/DataSetApi.d.ts +1 -1
  59. package/src/Api/FlashingCellApi.d.ts +6 -0
  60. package/src/Api/FormatColumnApi.d.ts +10 -4
  61. package/src/Api/GridApi.d.ts +29 -4
  62. package/src/Api/Implementation/ActionColumnApiImpl.js +1 -0
  63. package/src/Api/Implementation/AdaptableApiImpl.js +52 -0
  64. package/src/Api/Implementation/AlertApiImpl.d.ts +1 -0
  65. package/src/Api/Implementation/AlertApiImpl.js +6 -6
  66. package/src/Api/Implementation/ApiBase.d.ts +1 -1
  67. package/src/Api/Implementation/ApiBase.js +2 -1
  68. package/src/Api/Implementation/CalculatedColumnApiImpl.js +1 -0
  69. package/src/Api/Implementation/ChartingApiImpl.js +6 -2
  70. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -1
  71. package/src/Api/Implementation/ColumnApiImpl.js +1 -0
  72. package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -0
  73. package/src/Api/Implementation/CommentsApiImpl.js +1 -0
  74. package/src/Api/Implementation/CustomSortApiImpl.d.ts +6 -1
  75. package/src/Api/Implementation/CustomSortApiImpl.js +6 -2
  76. package/src/Api/Implementation/DashboardApiImpl.js +1 -0
  77. package/src/Api/Implementation/DataChangeHistoryApiImpl.js +12 -15
  78. package/src/Api/Implementation/DataImportApiImpl.js +1 -0
  79. package/src/Api/Implementation/DataSetApiImpl.js +1 -0
  80. package/src/Api/Implementation/EntitlementApiImpl.js +1 -0
  81. package/src/Api/Implementation/EventApiImpl.js +16 -14
  82. package/src/Api/Implementation/ExportApiImpl.js +1 -0
  83. package/src/Api/Implementation/ExpressionApiImpl.js +1 -0
  84. package/src/Api/Implementation/Fdc3ApiImpl.js +1 -0
  85. package/src/Api/Implementation/FilterApiImpl.js +3 -0
  86. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
  87. package/src/Api/Implementation/FlashingCellApiImpl.js +4 -0
  88. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +6 -5
  89. package/src/Api/Implementation/FormatColumnApiImpl.js +7 -5
  90. package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -0
  91. package/src/Api/Implementation/GridApiImpl.d.ts +10 -1
  92. package/src/Api/Implementation/GridApiImpl.js +36 -5
  93. package/src/Api/Implementation/GridFilterApiImpl.js +1 -0
  94. package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -0
  95. package/src/Api/Implementation/LayoutApiImpl.js +5 -1
  96. package/src/Api/Implementation/LayoutHelpers.js +7 -0
  97. package/src/Api/Implementation/NamedQueryApiImpl.js +3 -2
  98. package/src/Api/Implementation/NoteApiImpl.js +1 -0
  99. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +1 -0
  100. package/src/Api/Implementation/PlusMinusApiImpl.js +3 -0
  101. package/src/Api/Implementation/PredicateApiImpl.js +1 -0
  102. package/src/Api/Implementation/RowFormApiImpl.js +1 -0
  103. package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -0
  104. package/src/Api/Implementation/ScheduleApiImpl.js +4 -0
  105. package/src/Api/Implementation/ShortcutApiImpl.d.ts +1 -0
  106. package/src/Api/Implementation/ShortcutApiImpl.js +3 -0
  107. package/src/Api/Implementation/StyledColumnApiImpl.js +1 -0
  108. package/src/Api/Implementation/SystemStatusApiImpl.js +8 -9
  109. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -0
  110. package/src/Api/Implementation/ThemeApiImpl.js +1 -0
  111. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +5 -0
  112. package/src/Api/Implementation/UserInterfaceApiImpl.js +15 -1
  113. package/src/Api/Internal/CalculatedColumnInternalApi.js +2 -2
  114. package/src/Api/Internal/ColumnInternalApi.js +1 -1
  115. package/src/Api/Internal/FormatColumnInternalApi.d.ts +0 -10
  116. package/src/Api/Internal/FormatColumnInternalApi.js +1 -19
  117. package/src/Api/Internal/FreeTextColumnInternalApi.js +2 -2
  118. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  119. package/src/Api/Internal/NamedQueryInternalApi.js +4 -4
  120. package/src/Api/LayoutApi.d.ts +6 -0
  121. package/src/Api/PlusMinusApi.d.ts +6 -0
  122. package/src/Api/ScheduleApi.d.ts +6 -0
  123. package/src/Api/ShortcutApi.d.ts +6 -0
  124. package/src/Api/UserInterfaceApi.d.ts +17 -0
  125. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +8 -0
  126. package/src/Redux/ActionsReducers/FormatColumnRedux.js +15 -0
  127. package/src/Redux/ActionsReducers/InternalRedux.d.ts +15 -0
  128. package/src/Redux/ActionsReducers/InternalRedux.js +36 -0
  129. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +1 -1
  130. package/src/Redux/ActionsReducers/NoteRedux.js +1 -1
  131. package/src/Redux/ActionsReducers/UserInterfaceRedux.d.ts +11 -0
  132. package/src/Redux/ActionsReducers/UserInterfaceRedux.js +21 -0
  133. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
  134. package/src/Redux/Store/AdaptableStore.js +121 -64
  135. package/src/Strategy/AdaptableModuleBase.js +4 -0
  136. package/src/Strategy/AlertModule.js +5 -0
  137. package/src/Strategy/BulkUpdateModule.js +8 -8
  138. package/src/Strategy/CalculatedColumnModule.js +1 -0
  139. package/src/Strategy/CellSummaryModule.js +1 -1
  140. package/src/Strategy/CustomSortModule.js +4 -0
  141. package/src/Strategy/DataChangeHistoryModule.js +1 -0
  142. package/src/Strategy/FlashingCellModule.js +6 -0
  143. package/src/Strategy/FormatColumnModule.js +4 -0
  144. package/src/Strategy/FreeTextColumnModule.js +1 -0
  145. package/src/Strategy/LayoutModule.js +6 -5
  146. package/src/Strategy/PlusMinusModule.js +7 -1
  147. package/src/Strategy/QuickSearchModule.js +1 -1
  148. package/src/Strategy/ScheduleModule.js +5 -0
  149. package/src/Strategy/SettingsPanelModule.js +11 -7
  150. package/src/Strategy/ShortcutModule.js +6 -0
  151. package/src/Strategy/SmartEditModule.js +10 -10
  152. package/src/Strategy/TeamSharingModule.js +10 -10
  153. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +0 -3
  154. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +18 -17
  155. package/src/Utilities/Constants/DocumentationLinkConstants.js +18 -17
  156. package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
  157. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +3 -3
  158. package/src/Utilities/Extensions/StringExtensions.d.ts +2 -0
  159. package/src/Utilities/Extensions/StringExtensions.js +16 -0
  160. package/src/Utilities/Helpers/FormatHelper.js +9 -2
  161. package/src/Utilities/Helpers/StyleHelper.js +14 -0
  162. package/src/Utilities/MenuItem.js +18 -0
  163. package/src/Utilities/ObjectFactory.js +16 -3
  164. package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
  165. package/src/Utilities/Services/AlertService.js +6 -4
  166. package/src/Utilities/Services/AnnotationsService.js +4 -1
  167. package/src/Utilities/Services/CalculatedColumnExpressionService.js +2 -1
  168. package/src/Utilities/Services/ChartingService.js +1 -0
  169. package/src/Utilities/Services/DataService.js +11 -3
  170. package/src/Utilities/Services/Fdc3Service.js +9 -7
  171. package/src/Utilities/Services/FlashingCellService.js +5 -0
  172. package/src/Utilities/Services/LicenseService/index.js +1 -1
  173. package/src/Utilities/Services/MetamodelService.js +2 -2
  174. package/src/Utilities/Services/ModuleService.js +39 -41
  175. package/src/Utilities/Services/QueryLanguageService.js +6 -5
  176. package/src/Utilities/Services/RowFormService.js +1 -0
  177. package/src/Utilities/Services/RowSummaryService.js +10 -7
  178. package/src/Utilities/Services/TeamSharingService.js +3 -1
  179. package/src/Utilities/Services/ThemeService.js +13 -15
  180. package/src/Utilities/Services/ValidationService.js +2 -1
  181. package/src/Utilities/createAgStatusPanelComponent.js +3 -0
  182. package/src/Utilities/logDeprecation.js +3 -4
  183. package/src/Utilities/resolveContainerElement.d.ts +23 -0
  184. package/src/Utilities/resolveContainerElement.js +44 -0
  185. package/src/View/AdaptablePopover/index.d.ts +1 -0
  186. package/src/View/AdaptablePopover/index.js +1 -1
  187. package/src/View/Alert/ActiveAlertsPanel.js +8 -0
  188. package/src/View/Alert/AlertViewPanel.js +13 -9
  189. package/src/View/Alert/Utilities/getAlertButtonStyle.d.ts +1 -0
  190. package/src/View/Alert/Utilities/getAlertButtonStyle.js +8 -0
  191. package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +1 -0
  192. package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +5 -2
  193. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +47 -12
  194. package/src/View/Alert/Wizard/AlertWizard.js +14 -10
  195. package/src/View/Alert/Wizard/isValidAlertRules.js +1 -1
  196. package/src/View/BulkUpdate/BulkUpdateViewPanel.js +24 -11
  197. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +2 -2
  198. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
  199. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  200. package/src/View/CellSummary/CellSummaryViewPanel.js +16 -17
  201. package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +2 -2
  202. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +2 -2
  203. package/src/View/Components/AdaptableDateInput/index.js +1 -1
  204. package/src/View/Components/Buttons/ButtonApply.js +1 -1
  205. package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
  206. package/src/View/Components/Buttons/ButtonClear.d.ts +1 -0
  207. package/src/View/Components/Buttons/EntityListActionButtons.d.ts +1 -2
  208. package/src/View/Components/Buttons/EntityListActionButtons.js +18 -18
  209. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.d.ts +1 -2
  210. package/src/View/Components/CellPopup/index.js +1 -1
  211. package/src/View/Components/ColumnFilter/FloatingFilter.js +41 -3
  212. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
  213. package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +54 -2
  214. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -1
  215. package/src/View/Components/EntityRulesEditor/Utilities.js +5 -5
  216. package/src/View/Components/NewScopeComponent.js +3 -3
  217. package/src/View/Components/Panels/PanelDashboard/index.js +8 -8
  218. package/src/View/Components/Panels/PanelToolPanel/index.js +7 -7
  219. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -1
  220. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +1 -1
  221. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +1 -1
  222. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +1 -8
  223. package/src/View/Components/Popups/AdaptablePopupConfirmation.js +1 -1
  224. package/src/View/Components/Popups/WindowPopups/WindowPopups.js +36 -1
  225. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +19 -18
  226. package/src/View/Components/StyleComponent.d.ts +1 -0
  227. package/src/View/Components/StyleComponent.js +94 -24
  228. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
  229. package/src/View/Components/WizardSummaryPage.js +1 -1
  230. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  231. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +41 -15
  232. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
  233. package/src/View/CustomSort/Wizard/CustomSortWizard.js +4 -4
  234. package/src/View/Dashboard/CustomToolbar.js +1 -1
  235. package/src/View/Dashboard/DashboardPopup.js +4 -5
  236. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -0
  237. package/src/View/DataChangeHistory/DataChangeHistoryViewPanel.js +1 -1
  238. package/src/View/Export/ExportDestinationPicker.js +1 -1
  239. package/src/View/Export/ExportStatusBar.js +4 -2
  240. package/src/View/Export/ExportViewPanel.js +25 -18
  241. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.d.ts +2 -1
  242. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +34 -14
  243. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +14 -10
  244. package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +1 -1
  245. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +46 -51
  246. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +2 -2
  247. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +20 -9
  248. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  249. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +3 -3
  250. package/src/View/GridFilter/GridFilterExpressionEditor.js +6 -1
  251. package/src/View/GridFilter/GridFilterViewPanel.js +33 -70
  252. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +57 -65
  253. package/src/View/Layout/LayoutViewPanel.js +1 -1
  254. package/src/View/Layout/TransposedPopup.js +144 -138
  255. package/src/View/Layout/Wizard/sections/AggregationsSection.js +1 -1
  256. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  257. package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
  258. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +3 -3
  259. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +8 -0
  260. package/src/View/Layout/Wizard/sections/RowSummarySection.js +1 -1
  261. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +2 -2
  262. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +35 -12
  263. package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +20 -15
  264. package/src/View/QuickSearch/QuickSearchPopup.js +4 -1
  265. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsIPushPull.js +12 -1
  266. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsOpenFin.js +12 -1
  267. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +14 -4
  268. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +12 -1
  269. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +2 -1
  270. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +19 -10
  271. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.d.ts +2 -1
  272. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +25 -4
  273. package/src/View/Shortcut/Wizard/ShortcutWizard.js +18 -14
  274. package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
  275. package/src/View/StateManagement/handleExportState.js +1 -1
  276. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  277. package/src/View/Theme/ThemePopup.js +13 -16
  278. package/src/View/UIHelper.d.ts +4 -1
  279. package/src/View/UIHelper.js +23 -14
  280. package/src/agGrid/Adaptable.js +15 -11
  281. package/src/agGrid/AdaptableAgGrid.d.ts +16 -3
  282. package/src/agGrid/AdaptableAgGrid.js +306 -103
  283. package/src/agGrid/AdaptableFilterHandler.js +4 -0
  284. package/src/agGrid/AdaptableLogger.d.ts +3 -0
  285. package/src/agGrid/AdaptableLogger.js +10 -0
  286. package/src/agGrid/AgGridAdapter.js +19 -9
  287. package/src/agGrid/AgGridColumnAdapter.d.ts +1 -0
  288. package/src/agGrid/AgGridColumnAdapter.js +20 -22
  289. package/src/agGrid/AgGridExportAdapter.js +15 -14
  290. package/src/agGrid/AgGridFilterAdapter.js +4 -0
  291. package/src/agGrid/AgGridFloatingFilterAdapter.js +4 -1
  292. package/src/agGrid/AgGridMenuAdapter.js +10 -1
  293. package/src/agGrid/AgGridModulesAdapter.js +2 -1
  294. package/src/agGrid/AgGridOptionsService.js +3 -0
  295. package/src/agGrid/AgGridThemeAdapter.js +4 -2
  296. package/src/agGrid/cellRenderers/ActionColumnRenderer.js +5 -0
  297. package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -0
  298. package/src/agGrid/cellRenderers/PercentBarRenderer.js +1 -0
  299. package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -3
  300. package/src/agGrid/editors/AdaptableNumberEditor/index.js +16 -12
  301. package/src/agGrid/editors/AdaptablePercentageEditor/index.js +17 -13
  302. package/src/agGrid/index.d.ts +6 -0
  303. package/src/agGrid/index.js +6 -0
  304. package/src/components/CheckBox/index.js +1 -1
  305. package/src/components/ColorPicker/ColorPicker.js +5 -4
  306. package/src/components/Dashboard/DashboardToolbar.js +1 -1
  307. package/src/components/Datepicker/index.js +1 -1
  308. package/src/components/Dropdown/Arrows.js +1 -1
  309. package/src/components/ExpressionEditor/DataTableEditor.js +3 -3
  310. package/src/components/ExpressionEditor/EditorInput.js +19 -3
  311. package/src/components/ExpressionEditor/ExpressionFunctionDocumentation.js +1 -1
  312. package/src/components/FormLayout/index.js +1 -1
  313. package/src/components/OverlayTrigger/index.js +1 -1
  314. package/src/components/Select/Select.js +79 -16
  315. package/src/components/Tree/TreeDropdown/index.js +2 -2
  316. package/src/components/overlayBaseZIndex.js +1 -1
  317. package/src/components/utils/useContainerScrollObserver/index.js +17 -14
  318. package/src/devTools/index.js +54 -53
  319. package/src/env.js +2 -2
  320. package/src/layout-manager/src/LMEmitter.js +11 -11
  321. package/src/layout-manager/src/LMLogger.js +7 -0
  322. package/src/layout-manager/src/LayoutManagerModel.d.ts +1 -0
  323. package/src/layout-manager/src/index.js +81 -58
  324. package/src/layout-manager/src/normalizeLayoutModel.js +3 -0
  325. package/src/metamodel/adaptable.metamodel.d.ts +177 -8
  326. package/src/metamodel/adaptable.metamodel.js +1 -1
  327. package/src/migration/AdaptableUpgradeHelper.js +8 -3
  328. package/src/migration/VersionUpgrade.js +1 -0
  329. package/src/migration/VersionUpgrade17.js +5 -6
  330. package/src/migration/VersionUpgrade20.js +4 -4
  331. package/src/migration/VersionUpgrade22.d.ts +21 -0
  332. package/src/migration/VersionUpgrade22.js +187 -0
  333. package/src/parser/src/ExpressionEvaluationError.js +1 -0
  334. package/src/types.d.ts +9 -7
  335. package/themes/dark.css +30 -30
  336. package/themes/light.css +4 -2
  337. package/tsconfig.esm.tsbuildinfo +1 -1
  338. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/FinanceForm.js +0 -632
  339. package/src/View/Alert/AlertEntityRow.d.ts +0 -11
  340. package/src/View/Alert/AlertEntityRow.js +0 -28
  341. package/src/View/CalculatedColumn/CalculatedColumnSummary.d.ts +0 -21
  342. package/src/View/CalculatedColumn/CalculatedColumnSummary.js +0 -58
  343. package/src/View/Components/Buttons/ButtonFunction.d.ts +0 -7
  344. package/src/View/Components/Buttons/ButtonFunction.js +0 -8
  345. package/src/View/Components/Buttons/ButtonGeneral.d.ts +0 -5
  346. package/src/View/Components/Buttons/ButtonGeneral.js +0 -7
  347. package/src/View/Components/Buttons/ButtonPreviewDelete.d.ts +0 -4
  348. package/src/View/Components/Buttons/ButtonPreviewDelete.js +0 -5
  349. package/src/View/Components/Buttons/ButtonShow.d.ts +0 -5
  350. package/src/View/Components/Buttons/ButtonShow.js +0 -7
  351. package/src/View/Components/Buttons/ButtonShowChart.d.ts +0 -5
  352. package/src/View/Components/Buttons/ButtonShowChart.js +0 -7
  353. package/src/View/Components/Buttons/ButtonUndo.d.ts +0 -5
  354. package/src/View/Components/Buttons/ButtonUndo.js +0 -7
  355. package/src/View/Components/ExpressionWizard.d.ts +0 -24
  356. package/src/View/Components/ExpressionWizard.js +0 -77
  357. package/src/View/Components/FilterForm/Waiting.d.ts +0 -10
  358. package/src/View/Components/FilterForm/Waiting.js +0 -14
  359. package/src/View/Components/Panels/PanelFooter.d.ts +0 -10
  360. package/src/View/Components/Panels/PanelFooter.js +0 -9
  361. package/src/View/Components/Panels/PanelWithTwoButtons.d.ts +0 -12
  362. package/src/View/Components/Panels/PanelWithTwoButtons.js +0 -15
  363. package/src/View/Components/Panels/ToolPanelSettingsPanel.d.ts +0 -8
  364. package/src/View/Components/Panels/ToolPanelSettingsPanel.js +0 -26
  365. package/src/View/Components/Selectors/ColumnSelectorOld.d.ts +0 -18
  366. package/src/View/Components/Selectors/ColumnSelectorOld.js +0 -45
  367. package/src/View/Components/SharedProps/WizardScopeState.d.ts +0 -4
  368. package/src/View/Components/WizardSummaryRow.d.ts +0 -9
  369. package/src/View/Components/WizardSummaryRow.js +0 -11
  370. package/src/View/CustomSort/CustomSortSummary.d.ts +0 -23
  371. package/src/View/CustomSort/CustomSortSummary.js +0 -105
  372. package/src/View/DataImport/DataImportWizard/sections/ImportSection.d.ts +0 -9
  373. package/src/View/DataImport/DataImportWizard/sections/ImportSection.js +0 -19
  374. package/src/View/Export/Wizard/ReportColumnTypeWizard.d.ts +0 -19
  375. package/src/View/Export/Wizard/ReportColumnTypeWizard.js +0 -68
  376. package/src/View/Export/Wizard/ReportRowTypeWizard.d.ts +0 -19
  377. package/src/View/Export/Wizard/ReportRowTypeWizard.js +0 -68
  378. package/src/View/Export/Wizard/ReportSettingsWizard.d.ts +0 -21
  379. package/src/View/Export/Wizard/ReportSettingsWizard.js +0 -56
  380. package/src/View/Export/Wizard/ReportSummaryWizard.d.ts +0 -15
  381. package/src/View/Export/Wizard/ReportSummaryWizard.js +0 -35
  382. package/src/View/Filter/FilterSummary.d.ts +0 -18
  383. package/src/View/Filter/FilterSummary.js +0 -48
  384. package/src/View/FormatColumn/FormatColumnSummary.d.ts +0 -22
  385. package/src/View/FormatColumn/FormatColumnSummary.js +0 -90
  386. package/src/View/FreeTextColumn/FreeTextColumnSummary.d.ts +0 -22
  387. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +0 -88
  388. package/src/View/GridInfo/GridInfoPopup/AdaptableOptionsComponent.d.ts +0 -7
  389. package/src/View/GridInfo/GridInfoPopup/AdaptableOptionsComponent.js +0 -94
  390. package/src/View/PlusMinus/PlusMinusSummary.d.ts +0 -22
  391. package/src/View/PlusMinus/PlusMinusSummary.js +0 -95
  392. package/src/View/Wizard/WizardLegend.d.ts +0 -12
  393. package/src/View/Wizard/WizardLegend.js +0 -23
  394. /package/src/{View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/FinanceForm.d.ts → AdaptableState/Common/AdaptableRowContext.js} +0 -0
  395. /package/src/{View/Components/SharedProps/WizardScopeState.js → AdaptableState/Common/ColumnHighlightInfo.js} +0 -0
@@ -4,10 +4,16 @@ import Helper from '../Helpers/Helper';
4
4
  // ~ 8 hours
5
5
  const MAX_TIMEFRAME_SIZE = 86400000;
6
6
  export class DataService {
7
+ adaptable;
8
+ emitter;
9
+ cellDataChangeLogSubject$;
10
+ cellDataChangeLog$;
11
+ rowDataChangeLogSubject$;
12
+ rowDataChangeLog$;
13
+ undoChangeLog;
14
+ undoChangeTimers;
7
15
  constructor(adaptable) {
8
16
  this.adaptable = adaptable;
9
- this.on = (eventName, callback) => this.emitter.on(eventName, callback);
10
- this.emit = (eventName, data) => this.emitter.emit(eventName, data);
11
17
  this.adaptable = adaptable;
12
18
  this.emitter = new Emitter();
13
19
  this.cellDataChangeLogSubject$ = new Subject();
@@ -31,6 +37,8 @@ export class DataService {
31
37
  this.undoChangeTimers.clear();
32
38
  this.undoChangeTimers = null;
33
39
  }
40
+ on = (eventName, callback) => this.emitter.on(eventName, callback);
41
+ emit = (eventName, data) => this.emitter.emit(eventName, data);
34
42
  CreateCellDataChangedEvent(cellDataChangedInfo) {
35
43
  if (cellDataChangedInfo.newValue != cellDataChangedInfo.oldValue) {
36
44
  this.emitter.emitSync('CellDataChanged', cellDataChangedInfo);
@@ -56,7 +64,7 @@ export class DataService {
56
64
  // why 2 and not 3 or 1? no good reason, only seems like a reasonable waiting time :)
57
65
  const UNDO_WAIT = 2000;
58
66
  const timeoutId = setTimeout(() => {
59
- this.adaptable.logger.warn(`Undo change was NOT handled, this should NOT happen: PK(${change.primaryKeyValue}) Col(${change.column}) RevertedValue(${change.newValue}) NewValue(${change.oldValue})`);
67
+ this.adaptable.logger.warn(`Undo change was not handled within timeout: column="${change.column}", primaryKey="${change.primaryKeyValue}", from=${change.newValue} to=${change.oldValue}.`);
60
68
  this.extractUndoChange(change);
61
69
  }, UNDO_WAIT);
62
70
  this.undoChangeTimers.set(undoChangeKey, timeoutId);
@@ -1,11 +1,13 @@
1
1
  import { ContextConfiguration } from '../../AdaptableState/Common/Fdc3Context';
2
2
  import { Fdc3IntentConfiguration } from '../../AdaptableState/Common/Fdc3Intent';
3
3
  export class Fdc3Service {
4
+ adaptableApi;
5
+ contextHandlerSubscriptions = [];
6
+ intentHandlerSubscriptions = [];
7
+ loggedAgentError = false;
8
+ uiControlsDefaultConfiguration;
4
9
  constructor(adaptableApi) {
5
10
  this.adaptableApi = adaptableApi;
6
- this.contextHandlerSubscriptions = [];
7
- this.intentHandlerSubscriptions = [];
8
- this.loggedAgentError = false;
9
11
  // 1. Subscribe to FDC3 events
10
12
  const adaptableHandleIntentFn = this.getFdc3Options().intents?.handleIntent;
11
13
  const listenForIntents = this.getFdc3Options().intents?.listensFor ?? [];
@@ -76,7 +78,7 @@ export class Fdc3Service {
76
78
  getDesktopAgent() {
77
79
  if (globalThis.fdc3 == null && !this.loggedAgentError) {
78
80
  this.loggedAgentError = true;
79
- this.adaptableApi.consoleError('FDC3 Desktop Agent not found. This should be provided by the wrapper application.');
81
+ this.adaptableApi.consoleError('FDC3 Desktop Agent not found. The host application must provide the FDC3 agent on globalThis.fdc3.');
80
82
  }
81
83
  return globalThis.fdc3;
82
84
  }
@@ -159,11 +161,11 @@ export class Fdc3Service {
159
161
  if (!this.getFdc3Options().enableLogging) {
160
162
  return;
161
163
  }
162
- this.adaptableApi.consoleLog(`FDC3::${type} - `, params.join(' : '));
164
+ this.adaptableApi.consoleLog(`FDC3 ${type}: ${params.join(' : ')}`);
163
165
  }
164
166
  logFdc3Error(error) {
165
- this.adaptableApi.consoleError(`FDC3 error`, error);
166
- this.adaptableApi.alertApi.showAlertError('FDC3 Error', 'See console for details');
167
+ this.adaptableApi.consoleError('FDC3 operation failed.', error);
168
+ this.adaptableApi.alertApi.showAlertError('FDC3', 'An error occurred. See the browser console for details.');
167
169
  }
168
170
  getFdc3Api() {
169
171
  return this.adaptableApi.fdc3Api;
@@ -3,6 +3,11 @@ export const FLASHING_CELL_ROW_KEY = '__ROW';
3
3
  * This service manages Flashing Cells
4
4
  */
5
5
  export class FlashingCellService {
6
+ api;
7
+ // map of rowPrimaryKey -> ColIdOrRowId -> FlashingCellUuid
8
+ gridCellsCurrentlyFlashing;
9
+ // map of FlashingCellUuid -> FlashingCell
10
+ flashingCellsMapping;
6
11
  constructor(api) {
7
12
  this.api = api;
8
13
  this.gridCellsCurrentlyFlashing = {};
@@ -1 +1 @@
1
- import{LicenseDisablePersistence as e,LicenseShowWatermark as a}from"../../../Redux/ActionsReducers/InternalRedux";import{PopupShowAlert as t}from"../../../Redux/ActionsReducers/PopupRedux";import i from"../../ObjectFactory";import s from"lodash/clamp";import{LicenseDocsLink as o}from"../../Constants/DocumentationLinkConstants";import{decode as n,GENERIC_APP_NAME as r}from"../../license/decode";import{shouldLogThankYouMessage as l}from"./shouldLogThankYouMessage";const c="sales@adaptabletools.com",p=10,d=864e5;export var LicenseValidityType;!function(e){e.INVALID_LICENSE="INVALID_LICENSE",e.NO_LICENSE="NO_LICENSE",e.NON_PRODUCTION_VALID="NON_PRODUCTION_VALID",e.NON_PRODUCTION_EXPIRED_IN_SCOPE="NON_PRODUCTION_EXPIRED_IN_SCOPE",e.NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE="NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE",e.COMMERCIAL_VALID="COMMERCIAL_VALID",e.COMMERCIAL_EXPIRED_IN_SCOPE="COMMERCIAL_EXPIRED_IN_SCOPE",e.COMMERCIAL_EXPIRED_OUT_OF_SCOPE="COMMERCIAL_EXPIRED_OUT_OF_SCOPE"}(LicenseValidityType||(LicenseValidityType={}));const h=()=>"undefined"!=typeof window?window.location.origin:"",E=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\d+\-\d+\-\d+\-(sandpack\.codesandbox\.io)/g.exec(e)||[]);return"https"===t&&"sandpack.codesandbox.io"===i},I=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\S+(\.csb\.app)/g.exec(e)||[]);return"https"===t&&".csb.app"===i},_=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\S+(\.adaptabletools\.com)/g.exec(e)||[]);return"https"===t&&".adaptabletools.com"===i};export class LicenseService{constructor(e,a,t){this.adaptable=e,this.licenseKey=a,this.packageDetails=t,this.adaptable=e,this.adaptable.api.eventApi.on("AdaptableReady",()=>{requestAnimationFrame(()=>{this.adaptable.isDestroyed||this.init()})})}init(){let e=null;if(this.licenseKey)try{e=n(this.licenseKey)}catch(a){e=a}E()||I()||_()||this.handleLicenseValidation(e,this.getValidityType(e,this.packageDetails))}getValidityType(e,a){if(!e)return LicenseValidityType.NO_LICENSE;if(e instanceof Error)return LicenseValidityType.INVALID_LICENSE;const t=new Date(a.publishedAt),i=new Date(e.end),s=i<new Date,o=e.trial;let n=null;return n=s?i>t?o?LicenseValidityType.NON_PRODUCTION_EXPIRED_IN_SCOPE:LicenseValidityType.COMMERCIAL_EXPIRED_IN_SCOPE:o?LicenseValidityType.NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE:LicenseValidityType.COMMERCIAL_EXPIRED_OUT_OF_SCOPE:o?LicenseValidityType.NON_PRODUCTION_VALID:LicenseValidityType.COMMERCIAL_VALID,n}handleLicenseValidation(e,a){const t=new Date;t.setHours(0,0,0,0);let i=0;e instanceof Error||!e?.end||(i=Math.floor((e?.end?.getTime()-t.getTime())/d),i=s(i,0,1/0));let n="",h="";!e||e instanceof Error||!e.appName||e.appName==r||(n=e.appName,h=" for application [APP_NAME]");const E=(e,a=o,t=c,s=i,r=n)=>e.replace("[LINK]",a).replace("[EMAIL]",t).replace("[APP_NAME]",r).replace("[DAYS]",`${s}`);switch(a){case"NO_LICENSE":case"NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE":this.adaptable.logger.consoleLogByMessageType(E("This instance of AdapTable does not have a license, and some functionality has therefore been removed. In order to use a fully-featured version of AdapTable, please contact [EMAIL]. You can learn more about the different AdapTable license options at [LINK]."),"Error"),this.showNotification("No AdapTable License found."),this.showWatermark("This instance of AdapTable does not have a license, and some functionality has therefore been removed."),this.disableStatePersistence();break;case"INVALID_LICENSE":this.adaptable.logger.consoleLogByMessageType(E("This instance of AdapTable seems to use a corrupted License, and some functionality has therefore been removed. In order to use a fully-featured version of AdapTable, please contact [EMAIL]. You can learn more about the different AdapTable license options at [LINK]."),"Error"),this.showNotification("Corrupted AdapTable License found."),this.showWatermark("This instance of AdapTable has a corrupted License, and some functionality has therefore been removed."),this.disableStatePersistence();break;case"NON_PRODUCTION_VALID":this.adaptable.logger.consoleLogByMessageType(E("This AdapTable trial license expires in [DAYS] days. Please contact [EMAIL] to upgrade to a commercial version of AdapTable. You can learn more about the different AdapTable license options at [LINK]."),"Info");break;case"NON_PRODUCTION_EXPIRED_IN_SCOPE":this.adaptable.logger.consoleLogByMessageType(E("This AdapTable trial license has now expired. Please contact [EMAIL] to upgrade to a commercial version of AdapTable. You can learn more about the different AdapTable license options at [LINK]."),"Warning"),this.showWatermark("AdapTable License has expired");break;case"COMMERCIAL_VALID":if(i<=p)this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} expires in [DAYS] days. Please contact [EMAIL] to renew (giving you access to Support and Updates)`),"Info");else try{l()&&this.adaptable.logger.consoleLogByMessageType(E(`Thank you for using a valid AdapTable license${h}. Your license will expire in [DAYS] days.`),"Info")}catch(e){}break;case"COMMERCIAL_EXPIRED_IN_SCOPE":this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} has expired. Please contact [EMAIL] if you wish to renew (giving you access to Support and Updates)`),"Warning");break;case"COMMERCIAL_EXPIRED_OUT_OF_SCOPE":this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} has expired. Adaptable version was published after the license expired. Please contact [EMAIL] if you wish to renew your license.`),"Error"),this.showNotification("Adaptable License has expired"),this.showWatermark("Adaptable License has expired")}}showNotification(e){this.adaptable.api.internalApi.dispatchReduxAction(t({alertType:"generic",header:"License Error",message:e,alertDefinition:i.CreateInternalAlertDefinitionForMessages("Error")}))}showWatermark(e){this.adaptable.api.internalApi.dispatchReduxAction(a(e))}disableStatePersistence(){this.adaptable.api.internalApi.dispatchReduxAction(e())}destroy(){}}
1
+ import{LicenseDisablePersistence as e,LicenseShowWatermark as a}from"../../../Redux/ActionsReducers/InternalRedux";import{PopupShowAlert as t}from"../../../Redux/ActionsReducers/PopupRedux";import i from"../../ObjectFactory";import s from"lodash/clamp";import{LicenseDocsLink as o}from"../../Constants/DocumentationLinkConstants";import{decode as n,GENERIC_APP_NAME as r}from"../../license/decode";import{shouldLogThankYouMessage as l}from"./shouldLogThankYouMessage";const c="sales@adaptabletools.com",p=10,d=864e5;export var LicenseValidityType;!function(e){e.INVALID_LICENSE="INVALID_LICENSE",e.NO_LICENSE="NO_LICENSE",e.NON_PRODUCTION_VALID="NON_PRODUCTION_VALID",e.NON_PRODUCTION_EXPIRED_IN_SCOPE="NON_PRODUCTION_EXPIRED_IN_SCOPE",e.NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE="NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE",e.COMMERCIAL_VALID="COMMERCIAL_VALID",e.COMMERCIAL_EXPIRED_IN_SCOPE="COMMERCIAL_EXPIRED_IN_SCOPE",e.COMMERCIAL_EXPIRED_OUT_OF_SCOPE="COMMERCIAL_EXPIRED_OUT_OF_SCOPE"}(LicenseValidityType||(LicenseValidityType={}));const h=()=>"undefined"!=typeof window?window.location.origin:"",E=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\d+\-\d+\-\d+\-(sandpack\.codesandbox\.io)/g.exec(e)||[]);return"https"===t&&"sandpack.codesandbox.io"===i},I=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\S+(\.csb\.app)/g.exec(e)||[]);return"https"===t&&".csb.app"===i},_=()=>{const e=h(),[a,t,i]=Array.from(/(https):\/\/\S+(\.adaptabletools\.com)/g.exec(e)||[]);return"https"===t&&".adaptabletools.com"===i};export class LicenseService{adaptable;licenseKey;packageDetails;constructor(e,a,t){this.adaptable=e,this.licenseKey=a,this.packageDetails=t,this.adaptable=e,this.adaptable.api.eventApi.on("AdaptableReady",()=>{requestAnimationFrame(()=>{this.adaptable.isDestroyed||this.init()})})}init(){let e=null;if(this.licenseKey)try{e=n(this.licenseKey)}catch(a){e=a}E()||I()||_()||this.handleLicenseValidation(e,this.getValidityType(e,this.packageDetails))}getValidityType(e,a){if(!e)return LicenseValidityType.NO_LICENSE;if(e instanceof Error)return LicenseValidityType.INVALID_LICENSE;const t=new Date(a.publishedAt),i=new Date(e.end),s=i<new Date,o=e.trial;let n=null;return n=s?i>t?o?LicenseValidityType.NON_PRODUCTION_EXPIRED_IN_SCOPE:LicenseValidityType.COMMERCIAL_EXPIRED_IN_SCOPE:o?LicenseValidityType.NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE:LicenseValidityType.COMMERCIAL_EXPIRED_OUT_OF_SCOPE:o?LicenseValidityType.NON_PRODUCTION_VALID:LicenseValidityType.COMMERCIAL_VALID,n}handleLicenseValidation(e,a){const t=new Date;t.setHours(0,0,0,0);let i=0;e instanceof Error||!e?.end||(i=Math.floor((e?.end?.getTime()-t.getTime())/d),i=s(i,0,1/0));let n="",h="";!e||e instanceof Error||!e.appName||e.appName==r||(n=e.appName,h=" for application [APP_NAME]");const E=(e,a=o,t=c,s=i,r=n)=>e.replace("[LINK]",a).replace("[EMAIL]",t).replace("[APP_NAME]",r).replace("[DAYS]",`${s}`);switch(a){case"NO_LICENSE":case"NON_PRODUCTION_EXPIRED_OUT_OF_SCOPE":this.adaptable.logger.consoleLogByMessageType(E("This instance of AdapTable does not have a license, and some functionality has therefore been removed. In order to use a fully-featured version of AdapTable, please contact [EMAIL]. You can learn more about the different AdapTable license options at [LINK]."),"Error"),this.showNotification("No AdapTable License found."),this.showWatermark("This instance of AdapTable does not have a license, and some functionality has therefore been removed."),this.disableStatePersistence();break;case"INVALID_LICENSE":this.adaptable.logger.consoleLogByMessageType(E("This instance of AdapTable seems to use a corrupted License, and some functionality has therefore been removed. In order to use a fully-featured version of AdapTable, please contact [EMAIL]. You can learn more about the different AdapTable license options at [LINK]."),"Error"),this.showNotification("Corrupted AdapTable License found."),this.showWatermark("This instance of AdapTable has a corrupted License, and some functionality has therefore been removed."),this.disableStatePersistence();break;case"NON_PRODUCTION_VALID":this.adaptable.logger.consoleLogByMessageType(E("This AdapTable trial license expires in [DAYS] days. Please contact [EMAIL] to upgrade to a commercial version of AdapTable. You can learn more about the different AdapTable license options at [LINK]."),"Info");break;case"NON_PRODUCTION_EXPIRED_IN_SCOPE":this.adaptable.logger.consoleLogByMessageType(E("This AdapTable trial license has now expired. Please contact [EMAIL] to upgrade to a commercial version of AdapTable. You can learn more about the different AdapTable license options at [LINK]."),"Warning"),this.showWatermark("AdapTable License has expired");break;case"COMMERCIAL_VALID":if(i<=p)this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} expires in [DAYS] days. Please contact [EMAIL] to renew (giving you access to Support and Updates)`),"Info");else try{l()&&this.adaptable.logger.consoleLogByMessageType(E(`Thank you for using a valid AdapTable license${h}. Your license will expire in [DAYS] days.`),"Info")}catch(e){}break;case"COMMERCIAL_EXPIRED_IN_SCOPE":this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} has expired. Please contact [EMAIL] if you wish to renew (giving you access to Support and Updates)`),"Warning");break;case"COMMERCIAL_EXPIRED_OUT_OF_SCOPE":this.adaptable.logger.consoleLogByMessageType(E(`This AdapTable license${h} has expired. Adaptable version was published after the license expired. Please contact [EMAIL] if you wish to renew your license.`),"Error"),this.showNotification("Adaptable License has expired"),this.showWatermark("Adaptable License has expired")}}showNotification(e){this.adaptable.api.internalApi.dispatchReduxAction(t({alertType:"generic",header:"License Error",message:e,alertDefinition:i.CreateInternalAlertDefinitionForMessages("Error")}))}showWatermark(e){this.adaptable.api.internalApi.dispatchReduxAction(a(e))}disableStatePersistence(){this.adaptable.api.internalApi.dispatchReduxAction(e())}destroy(){}}
@@ -5,9 +5,9 @@ import { AdaptableLogger } from '../../agGrid/AdaptableLogger';
5
5
  import { getDefaultAdaptableOptions } from '../../AdaptableOptions/DefaultAdaptableOptions';
6
6
  const supportedMetamodelTypes = ['s', 'n', 'b', 'a', 'f', 'R'];
7
7
  export class MetamodelService {
8
+ gridInfoOptions = new Map();
9
+ getAdaptableOptions = () => null;
8
10
  constructor(getAdaptableOptions, validateOptions) {
9
- this.gridInfoOptions = new Map();
10
- this.getAdaptableOptions = () => null;
11
11
  this.getAdaptableOptions = getAdaptableOptions;
12
12
  this.gridInfoOptions = this.buildGridInfoOptions();
13
13
  if (validateOptions) {
@@ -1,6 +1,7 @@
1
1
  import Helper from '../Helpers/Helper';
2
2
  import { AgGridRequiredModulesDocsLink, HOST_URL_DOCS, } from '../Constants/DocumentationLinkConstants';
3
3
  export class ModuleService {
4
+ adaptableApi;
4
5
  constructor(adaptableApi) {
5
6
  this.adaptableApi = adaptableApi;
6
7
  this.adaptableApi = adaptableApi;
@@ -31,9 +32,7 @@ export class ModuleService {
31
32
  const registeredAgGridModuleNames = agGridModulesAdapter.getAgGridRegisteredModuleNames();
32
33
  const missingAgGridModuleNames = mandatoryAgGridModuleNames.filter((moduleName) => !registeredAgGridModuleNames.includes(moduleName));
33
34
  if (missingAgGridModuleNames.length) {
34
- this.adaptableApi.consoleError(`AdapTable requires the following AG Grid modules to be registered: ${missingAgGridModuleNames.join(', ')}.
35
-
36
- See for more information: ${AgGridRequiredModulesDocsLink}`);
35
+ this.adaptableApi.consoleError(`Adaptable requires these AG Grid modules: ${missingAgGridModuleNames.join(', ')}. Please register them. See: ${AgGridRequiredModulesDocsLink}`);
37
36
  }
38
37
  // log optional missing AG Grid dependencies for all modules
39
38
  this.getModuleCollection().forEach((adaptableModule) => {
@@ -105,84 +104,83 @@ export class ModuleService {
105
104
  }
106
105
  getModuleDocumentationPageByModule(adaptableModule) {
107
106
  let url = `${HOST_URL_DOCS}/`;
108
- let learnUrl = url + 'guide/';
109
107
  switch (adaptableModule) {
110
108
  case 'Alert':
111
- return learnUrl + 'handbook-alerting';
109
+ return url + 'handbook-alerting';
112
110
  case 'BulkUpdate':
113
111
  return url + 'handbook-editing-bulk-update';
114
112
  case 'CalculatedColumn':
115
- return learnUrl + 'handbook-calculated-column';
113
+ return url + 'handbook-calculated-column';
116
114
  case 'CellSummary':
117
- return learnUrl + 'handbook-summarising';
115
+ return url + 'handbook-summarising-cells';
118
116
  case 'Charting':
119
- return learnUrl + 'handbook-charts';
117
+ return url + 'handbook-charts';
120
118
  case 'ColumnFilter':
121
- return learnUrl + 'handbook-column-filter';
119
+ return url + 'handbook-column-filter';
122
120
  case 'ColumnInfo':
123
- return learnUrl + 'dev-guide-column-grid-column-info';
121
+ return url + 'dev-guide-columns-column-info';
124
122
  case 'Comment':
125
- return learnUrl + 'handbook-comments';
123
+ return url + 'handbook-comments';
126
124
  case 'CustomSort':
127
- return learnUrl + 'handbook-custom-sorting';
125
+ return url + 'handbook-custom-sorting';
128
126
  case 'Dashboard':
129
- return learnUrl + 'ui-dashboard';
127
+ return url + 'ui-dashboard';
130
128
  case 'DataChangeHistory':
131
- return learnUrl + 'handbook-monitoring-data-change-history';
129
+ return url + 'handbook-monitoring-data-change-history';
132
130
  case 'DataImport':
133
- return learnUrl + 'handbook-importing';
131
+ return url + 'handbook-importing';
134
132
  case 'DataSet':
135
- return learnUrl + 'handbook-data-sets';
133
+ return url + 'handbook-data-sets';
136
134
  case 'Export':
137
- return learnUrl + 'handbook-exporting';
135
+ return url + 'handbook-exporting';
138
136
  case 'Fdc3':
139
- return learnUrl + 'handbook-fdc3';
137
+ return url + 'handbook-fdc3';
140
138
  case 'FlashingCell':
141
- return learnUrl + 'handbook-flashing-cell';
139
+ return url + 'handbook-flashing-cell';
142
140
  case 'FormatColumn':
143
- return learnUrl + 'handbook-column-formatting';
141
+ return url + 'handbook-column-formatting';
144
142
  case 'FreeTextColumn':
145
- return learnUrl + 'handbook-freetext-column';
143
+ return url + 'handbook-freetext-column';
146
144
  case 'GridFilter':
147
- return learnUrl + 'handbook-grid-filter';
145
+ return url + 'handbook-grid-filter';
148
146
  case 'GridInfo':
149
- return learnUrl + 'dev-guide-column-grid-column-info';
147
+ return url + 'dev-guide-support-monitoring';
150
148
  case 'Layout':
151
- return learnUrl + 'handbook-layouts';
149
+ return url + 'handbook-layouts';
152
150
  case 'NamedQuery':
153
- return learnUrl + 'handbook-named-queries';
151
+ return url + 'handbook-named-queries';
154
152
  case 'Note':
155
- return learnUrl + 'handbook-notes';
153
+ return url + 'handbook-notes';
156
154
  case 'PlusMinus':
157
- return learnUrl + 'handbook-editing-plus-minus';
155
+ return url + 'handbook-editing-plus-minus';
158
156
  case 'QuickSearch':
159
- return learnUrl + 'handbook-quick-search';
157
+ return url + 'handbook-quick-search';
160
158
  case 'Schedule':
161
- return learnUrl + 'handbook-scheduling';
159
+ return url + 'handbook-scheduling';
162
160
  case 'SettingsPanel':
163
- return learnUrl + 'ui-settings-panel';
161
+ return url + 'ui-settings-panel';
164
162
  case 'Shortcut':
165
- return learnUrl + 'handbook-editing-shortcut';
163
+ return url + 'handbook-editing-shortcut';
166
164
  case 'SmartEdit':
167
- return learnUrl + 'handbook-editing-smart-edit';
165
+ return url + 'handbook-editing-smart-edit';
168
166
  case 'StateManagement':
169
- return learnUrl + 'dev-guide-adaptable-state-management';
167
+ return url + 'dev-guide-adaptable-state-management';
170
168
  case 'StatusBar':
171
- return learnUrl + 'ui-status-bar';
169
+ return url + 'ui-status-bar';
172
170
  case 'StyledColumn':
173
- return learnUrl + 'handbook-styled-column-overview';
171
+ return url + 'handbook-styled-column-overview';
174
172
  case 'SystemStatus':
175
- return learnUrl + 'handbook-system-status-message';
173
+ return url + 'handbook-system-status-message';
176
174
  case 'TeamSharing':
177
- return learnUrl + 'handbook-team-sharing';
175
+ return url + 'handbook-team-sharing';
178
176
  case 'Theme':
179
- return learnUrl + 'handbook-theming';
177
+ return url + 'handbook-theming';
180
178
  case 'ToolPanel':
181
- return learnUrl + 'ui-tool-panel';
179
+ return url + 'ui-tool-panel';
182
180
  case 'IPushPull':
183
- return learnUrl + 'integrations-ipushpull';
181
+ return url + 'integrations-ipushpull';
184
182
  case 'OpenFin':
185
- return learnUrl + 'integrations-openfin';
183
+ return url + 'integrations-openfin';
186
184
  default:
187
185
  return 'good';
188
186
  }
@@ -9,13 +9,14 @@ import { scalarExpressionFunctions } from '../ExpressionFunctions/scalarExpressi
9
9
  import { getTypedKeys } from '../Extensions/TypeExtensions';
10
10
  import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
11
11
  export class QueryLanguageService {
12
+ adaptableApi;
13
+ cacheBooleanValidation = new Map();
14
+ cacheObservableValidation = new Map();
15
+ cacheAggregatedBooleanValidation = new Map();
16
+ cacheAggregatedScalarValidation = new Map();
17
+ cacheModuleSpecificExpressionFunctions = new Map();
12
18
  constructor(adaptableApi) {
13
19
  this.adaptableApi = adaptableApi;
14
- this.cacheBooleanValidation = new Map();
15
- this.cacheObservableValidation = new Map();
16
- this.cacheAggregatedBooleanValidation = new Map();
17
- this.cacheAggregatedScalarValidation = new Map();
18
- this.cacheModuleSpecificExpressionFunctions = new Map();
19
20
  }
20
21
  evaluateBooleanExpression(expression, module, rowNode, evalContext) {
21
22
  if (expression == undefined) {
@@ -1,4 +1,5 @@
1
1
  export class RowFormService {
2
+ adaptableApi;
2
3
  constructor(adaptableApi) {
3
4
  this.adaptableApi = adaptableApi;
4
5
  if (adaptableApi.optionsApi.getRowFormOptions().autoHandle) {
@@ -10,15 +10,12 @@ import isEqual from 'lodash/isEqual';
10
10
  * The logic is extracted here to make it easier to follow
11
11
  */
12
12
  export class RowSummaryService {
13
+ api;
14
+ cachedCellSummary = new Map();
15
+ previousRowSummaries;
16
+ previousLayout;
13
17
  constructor(api) {
14
18
  this.api = api;
15
- this.cachedCellSummary = new Map();
16
- this._throttleAcumulatedColumnsThatChanged = new Set();
17
- /**
18
- *
19
- * @param colId optional to evaluate only one column
20
- */
21
- this._throttledEvaluateRowSummary = throttle(this.evaluateRowSummary, 300);
22
19
  }
23
20
  onAdaptableReady() {
24
21
  this.rowSummariesSubscriptions();
@@ -66,12 +63,18 @@ export class RowSummaryService {
66
63
  this.throttledEvaluateRowSummary();
67
64
  });
68
65
  }
66
+ _throttleAcumulatedColumnsThatChanged = new Set();
69
67
  throttledEvaluateRowSummary(reason) {
70
68
  if (reason) {
71
69
  reason.columnIds.forEach((col) => this._throttleAcumulatedColumnsThatChanged.add(col));
72
70
  }
73
71
  this._throttledEvaluateRowSummary(reason);
74
72
  }
73
+ /**
74
+ *
75
+ * @param colId optional to evaluate only one column
76
+ */
77
+ _throttledEvaluateRowSummary = throttle(this.evaluateRowSummary, 300);
75
78
  evaluateRowSummary(reason) {
76
79
  if (this._throttleAcumulatedColumnsThatChanged.size > 0) {
77
80
  const columnIds = Array.from(this._throttleAcumulatedColumnsThatChanged.values());
@@ -1,9 +1,11 @@
1
1
  import { createUuid } from '../../AdaptableState/Uuid';
2
2
  import ObjectFactory from '../ObjectFactory';
3
3
  export class TeamSharingService {
4
+ adaptableApi;
5
+ dismissedNotifications = [];
6
+ updateCheckTimerId;
4
7
  constructor(adaptableApi) {
5
8
  this.adaptableApi = adaptableApi;
6
- this.dismissedNotifications = [];
7
9
  const teamSharingOptions = adaptableApi.optionsApi.getTeamSharingOptions();
8
10
  if (teamSharingOptions.updateInterval > 0) {
9
11
  // convert minutes to millis
@@ -1,14 +1,8 @@
1
1
  export class ThemeService {
2
+ api;
3
+ unsubscribe = () => { };
4
+ styleSheetObject;
2
5
  constructor(api) {
3
- this.unsubscribe = () => { };
4
- this.onThemeChanged = () => {
5
- let currentTheme = this.api.themeApi.getCurrentThemeObject();
6
- currentTheme = this.mapOsTheme(currentTheme);
7
- this.applyNewThemeVariables(currentTheme);
8
- // this needs to be called after variables are set
9
- // as it may show the warning for a custom/runtime theme
10
- this.showMissingThemeFiles(currentTheme);
11
- };
12
6
  this.api = api;
13
7
  this.subscribe();
14
8
  if (!this.styleSheetObject) {
@@ -33,6 +27,14 @@ export class ThemeService {
33
27
  prefferedColorSchemeUnsubscribe();
34
28
  };
35
29
  }
30
+ onThemeChanged = () => {
31
+ let currentTheme = this.api.themeApi.getCurrentThemeObject();
32
+ currentTheme = this.mapOsTheme(currentTheme);
33
+ this.applyNewThemeVariables(currentTheme);
34
+ // this needs to be called after variables are set
35
+ // as it may show the warning for a custom/runtime theme
36
+ this.showMissingThemeFiles(currentTheme);
37
+ };
36
38
  applyNewThemeVariables(theme) {
37
39
  const variables = theme.CSSVariables;
38
40
  if (!variables || Object.keys(variables).length === 0) {
@@ -68,15 +70,11 @@ export class ThemeService {
68
70
  return val;
69
71
  });
70
72
  if (abLoaded !== '777') {
71
- logger.consoleError('Please import Adaptable styles from "@adaptabletools/adaptable/index.css"');
73
+ logger.consoleError('Adaptable styles not detected. Please import "@adaptabletools/adaptable/index.css".');
72
74
  }
73
75
  const isCustomUserTheme = !this.api.themeApi.internalApi.isSystemTheme(themeName);
74
76
  if (!isCustomUserTheme && abThemeLoaded !== themeName) {
75
- logger.consoleWarn(`Theme "${themeName}" doesn't seem to be loaded! Make sure you import the css file for the "${themeName}" theme!
76
-
77
- If it's an AdapTable system theme, try
78
-
79
- import "@adaptabletools/adaptable/themes/${themeName}.css"`);
77
+ logger.consoleWarn(`Theme "${themeName}" does not appear to be loaded. Ensure the CSS file is imported, e.g.: import "@adaptabletools/adaptable/themes/${themeName}.css".`);
80
78
  }
81
79
  }
82
80
  // prefers-color-scheme
@@ -4,6 +4,7 @@ import { AlertModuleId } from '../Constants/ModuleConstants';
4
4
  import { SERVER_VALIDATION_HEADER, SERVER_VALIDATION_MESSAGE_TYPE, } from '../Constants/GeneralConstants';
5
5
  import { errorOnce } from '../../agGrid/AdaptableLogger';
6
6
  export class ValidationService {
7
+ adaptableApi;
7
8
  constructor(adaptableApi) {
8
9
  this.adaptableApi = adaptableApi;
9
10
  this.adaptableApi = adaptableApi;
@@ -52,7 +53,7 @@ export class ValidationService {
52
53
  let alert = {
53
54
  alertType: 'cellChanged',
54
55
  header: 'Alert',
55
- message: 'Perform Edit Alert Fired',
56
+ message: 'A validation rule was triggered for this edit.',
56
57
  alertDefinition: failedRules[0],
57
58
  cellDataChangedInfo: cellDataChangedInfo,
58
59
  };
@@ -19,6 +19,9 @@ export const createAgStatusPanelComponent = (component, adaptable, context) => {
19
19
  };
20
20
  }
21
21
  return class StatusBarRenderer {
22
+ params;
23
+ eGui;
24
+ unmountReactRoot;
22
25
  init(params) {
23
26
  this.params = params;
24
27
  this.eGui = document.createElement('div');
@@ -11,13 +11,12 @@ const doOnce = (func, key) => {
11
11
  };
12
12
  export const logDeprecation = (logger, typeName, oldProp, newProp, message) => {
13
13
  const newPropMsg = newProp ? `Please use '${typeName}.${newProp}()' instead. ` : '';
14
- doOnce(() => logger.consoleWarn(`'${typeName}.${oldProp}()' is deprecated. ${newPropMsg}${message ?? ''}`), `Deprecated_${oldProp}`);
14
+ doOnce(() => logger.consoleWarn(`${typeName}.${oldProp}() is deprecated. ${newPropMsg}${message ?? ''}`), `Deprecated_${oldProp}`);
15
15
  };
16
16
  export const logDeprecationExternal = (logger, oldTypeName, oldProp, newTypeName, newProp, message) => {
17
17
  const newPropMsg = newProp ? `Please use '${newTypeName}.${newProp}()' instead. ` : '';
18
- doOnce(() => logger.consoleWarn(`'${oldTypeName}.${oldProp}()' is deprecated. ${newPropMsg}${message ?? ''}`), `Deprecated_${oldProp}`);
18
+ doOnce(() => logger.consoleWarn(`${oldTypeName}.${oldProp}() is deprecated. ${newPropMsg}${message ?? ''}`), `Deprecated_${oldProp}`);
19
19
  };
20
20
  export const logDeprecationInternal = (logger, typeName, oldProp) => {
21
- doOnce(() => logger.consoleWarn(`'${typeName}.${oldProp}()' is deprecated. The method will be removed in the next major release.
22
- Please contact support if you need the missing functionality.`), `Deprecated_${oldProp}`);
21
+ doOnce(() => logger.consoleWarn(`${typeName}.${oldProp}() is deprecated and will be removed in the next major release. Contact support if you need this functionality.`), `Deprecated_${oldProp}`);
23
22
  };
@@ -0,0 +1,23 @@
1
+ import type { AdaptableContainerValue, ContainerContext, InitContainerContext } from '../AdaptableOptions/ContainerOptions';
2
+ /**
3
+ * The union type representing any container option value (static or function).
4
+ */
5
+ type AnyContainerOption = AdaptableContainerValue | ((context: any) => AdaptableContainerValue);
6
+ /**
7
+ * Resolves a container option value to an `HTMLElement`.
8
+ *
9
+ * Resolution order:
10
+ * 1. If `container` is `null`/`undefined`, returns `null`.
11
+ * 2. If `container` is a function, it is called with the provided `context` and the result is resolved.
12
+ * 3. If the value is an `HTMLElement`, it is returned directly.
13
+ * 4. If the value is an `AdaptableCSSSelector` (`{ selector: string }`), `document.querySelectorAll` is used.
14
+ * If multiple elements match, the first is returned and a console warning is logged.
15
+ * 5. If the value is a `string`, it is treated as an element ID and `document.getElementById` is used.
16
+ *
17
+ * @param container - The container reference to resolve.
18
+ * @param context - Optional context passed to the function form of the container.
19
+ * @param doc - The document to query against (defaults to `globalThis.document`).
20
+ * @returns The resolved `HTMLElement`, or `null` if not found.
21
+ */
22
+ export declare function resolveContainerElement(container: AnyContainerOption | undefined | null, context?: ContainerContext | InitContainerContext, doc?: Document): HTMLElement | null;
23
+ export {};
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Resolves a container option value to an `HTMLElement`.
3
+ *
4
+ * Resolution order:
5
+ * 1. If `container` is `null`/`undefined`, returns `null`.
6
+ * 2. If `container` is a function, it is called with the provided `context` and the result is resolved.
7
+ * 3. If the value is an `HTMLElement`, it is returned directly.
8
+ * 4. If the value is an `AdaptableCSSSelector` (`{ selector: string }`), `document.querySelectorAll` is used.
9
+ * If multiple elements match, the first is returned and a console warning is logged.
10
+ * 5. If the value is a `string`, it is treated as an element ID and `document.getElementById` is used.
11
+ *
12
+ * @param container - The container reference to resolve.
13
+ * @param context - Optional context passed to the function form of the container.
14
+ * @param doc - The document to query against (defaults to `globalThis.document`).
15
+ * @returns The resolved `HTMLElement`, or `null` if not found.
16
+ */
17
+ export function resolveContainerElement(container, context, doc = globalThis.document) {
18
+ if (container == null) {
19
+ return null;
20
+ }
21
+ // Unwrap function form — pass context if the container is a function
22
+ const value = typeof container === 'function' ? container(context) : container;
23
+ // Guard against null/undefined returned by a callback (e.g. document.getElementById(...))
24
+ if (value == null) {
25
+ return null;
26
+ }
27
+ // Direct HTMLElement reference
28
+ if (value instanceof HTMLElement) {
29
+ return value;
30
+ }
31
+ // CSS Selector object
32
+ if (typeof value === 'object' && 'selector' in value) {
33
+ const matches = doc.querySelectorAll(value.selector);
34
+ if (matches.length > 1) {
35
+ console.warn(`[AdapTable] CSS selector "${value.selector}" matched ${matches.length} elements. Using the first match. Consider using a more specific selector.`);
36
+ }
37
+ return matches[0] ?? null;
38
+ }
39
+ // String element ID
40
+ if (typeof value === 'string') {
41
+ return doc.getElementById(value);
42
+ }
43
+ return null;
44
+ }
@@ -17,6 +17,7 @@ export interface AdaptablePopoverProps extends React.ClassAttributes<React.Props
17
17
  popupPadding?: 0 | 2;
18
18
  alignPosition?: OverlayShowParams['alignPosition'];
19
19
  visible?: boolean;
20
+ disabled?: boolean;
20
21
  }
21
22
  export declare class AdaptablePopover extends React.Component<React.PropsWithChildren<AdaptablePopoverProps>, {}> {
22
23
  render(): React.JSX.Element;
@@ -35,7 +35,7 @@ export class AdaptablePopover extends React.Component {
35
35
  // showTriangle
36
36
  visible: this.props.visible, render: () => popoverClickRootClose, showEvent: (this.props.showEvent || 'mouseenter'), hideEvent: (this.props.hideEvent || 'mouseleave'), style: {
37
37
  overflow: 'visible',
38
- }, alignPosition: this.props.alignPosition }, useButton ? (React.createElement(ButtonInfo, { style: iconStyle, variant: "text", onClick: () => null, icon: showIcon && icon, tooltip: this.props.tooltipText }, this.props.children)) : (React.createElement("div", { title: this.props.tooltipText, tabIndex: 0, style: { cursor: 'pointer', display: 'inline-block' } },
38
+ }, alignPosition: this.props.alignPosition }, useButton ? (React.createElement(ButtonInfo, { style: iconStyle, variant: "text", onClick: () => null, icon: showIcon && icon, tooltip: this.props.tooltipText, disabled: this.props.disabled }, this.props.children)) : (React.createElement("div", { title: this.props.tooltipText, tabIndex: 0, style: { cursor: 'pointer', display: 'inline-block' } },
39
39
  this.props.children,
40
40
  showIcon && React.createElement(Icon, { name: icon, style: iconStyle }))))));
41
41
  }
@@ -7,5 +7,13 @@ export const ActiveAlertsPanel = () => {
7
7
  const adaptable = useAdaptable();
8
8
  const filterModule = adaptable.ModuleService.getModuleById(ModuleConstants.AlertModuleId);
9
9
  const alerts = useSelector((state) => state.Internal.AdaptableAlerts);
10
+ // map the suspended property from the underlying AlertDefinitions
11
+ alerts.forEach((alert) => {
12
+ const liveAlertDef = adaptable.api.alertApi.getAlertDefinitionById(alert.alertDefinition.Uuid);
13
+ if (liveAlertDef) {
14
+ // @ts-ignore theoretically AdaptableAlert is not Suspendable; practically <AdaptableObjectCompactList> expects it
15
+ alert.IsSuspended = liveAlertDef.IsSuspended;
16
+ }
17
+ });
10
18
  return React.createElement(AdaptableObjectCompactList, { abObjects: alerts, module: filterModule });
11
19
  };
@@ -2,10 +2,11 @@ import * as React from 'react';
2
2
  import { connect } from 'react-redux';
3
3
  import * as InternalRedux from '../../Redux/ActionsReducers/InternalRedux';
4
4
  import { AdaptablePopover } from '../AdaptablePopover';
5
- import UIHelper from '../UIHelper';
6
5
  import { getAlertButtonStyle } from './Utilities/getAlertButtonStyle';
7
6
  import { ActiveAlertsPanel } from './ActiveAlertsPanel';
8
7
  import { Flex } from '../../components/Flex';
8
+ import { ButtonClear } from '../Components/Buttons/ButtonClear';
9
+ import clsx from 'clsx';
9
10
  class AlertViewPanelComponent extends React.Component {
10
11
  constructor(props) {
11
12
  super(props);
@@ -20,7 +21,6 @@ class AlertViewPanelComponent extends React.Component {
20
21
  }
21
22
  }
22
23
  render() {
23
- const messageType = UIHelper.getMessageTypeFromAdaptableAlerts(this.props.AdaptableAlerts);
24
24
  const { color: buttonTextColor, background: buttonBackground } = getAlertButtonStyle(this.props.AdaptableAlerts);
25
25
  const collapsedText = this.props.AdaptableAlerts.length == 0
26
26
  ? '0 Alerts'
@@ -28,13 +28,17 @@ class AlertViewPanelComponent extends React.Component {
28
28
  ? '1 Alert'
29
29
  : this.props.AdaptableAlerts.length + ' Alerts';
30
30
  const alertsPanel = React.createElement(ActiveAlertsPanel, null);
31
- const elementType = this.props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
32
- return (React.createElement(Flex, { alignItems: "stretch", className: `ab-${elementType}__Alert__wrap` },
33
- React.createElement(Flex, { className: `ab-${elementType}__Alert__text twa:rounded-standard twa:mr-2 twa:p-2 text-2`, style: { color: buttonTextColor, backgroundColor: buttonBackground }, alignItems: "center" }, collapsedText),
34
- this.props.AdaptableAlerts.length > 0 && (React.createElement(Flex, { alignItems: "center" },
35
- React.createElement(AdaptablePopover, { className: `ab-${elementType}__Alert__info`, headerText: "",
36
- // tooltipText="Alerts"
37
- bodyText: [alertsPanel], MessageType: messageType, useButton: true, showEvent: 'focus', hideEvent: "blur", popoverMinWidth: 400 })))));
31
+ const isToolbar = this.props.viewType === 'Toolbar';
32
+ const elementType = isToolbar ? 'DashboardToolbar' : 'ToolPanel';
33
+ return (React.createElement(Flex, { alignItems: "stretch", className: clsx(`ab-${elementType}__Alert__wrap twa:gap-1`, {
34
+ 'twa:min-w-[140px] twa:w-[140px]': isToolbar,
35
+ [`twa:flex-1`]: !isToolbar,
36
+ }) },
37
+ React.createElement(Flex, { key: `${buttonTextColor}_${buttonBackground}_${collapsedText}`, className: `ab-${elementType}__Alert__text twa:flex-1 twa:rounded-standard twa:p-2 text-2 twa:items-center twa:justify-center twa:min-h-input`, style: { color: buttonTextColor, backgroundColor: buttonBackground } }, collapsedText),
38
+ this.props.AdaptableAlerts.length > 0 && (React.createElement(Flex, { className: 'twa:gap-1' },
39
+ React.createElement(Flex, { className: "twa:flex twa:box-border" },
40
+ React.createElement(ButtonClear, { "aria-label": 'Clear All Alerts', variant: 'outlined', className: `ab-${elementType}__Alert__clear`, onClick: () => this.props.onDeleteAllAlert(this.state.Alerts), tooltip: "Clear All Alerts", showText: this.props.viewType === 'ToolPanel' }, 'Clear Alerts')),
41
+ React.createElement(AdaptablePopover, { className: `ab-${elementType}__Alert__info`, headerText: "Alerts Details", bodyText: [alertsPanel], MessageType: 'Info', useButton: true, showEvent: 'focus', hideEvent: "blur", popoverMinWidth: 400 })))));
38
42
  }
39
43
  }
40
44
  function mapStateToProps(state, ownProps) {
@@ -2,4 +2,5 @@ import { AdaptableAlert } from '../../../../types';
2
2
  export declare const getAlertButtonStyle: (alerts: AdaptableAlert[]) => {
3
3
  color: string;
4
4
  background: string;
5
+ cssClasses: string;
5
6
  };