@adaptabletools/adaptable 23.0.0-canary.6 → 23.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 (332) hide show
  1. package/icons/sort-asc.svg +1 -1
  2. package/index.css +755 -256
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/DataSetOptions.d.ts +26 -2
  5. package/src/AdaptableOptions/DefaultAdaptableOptions.js +0 -1
  6. package/src/AdaptableOptions/SettingsPanelOptions.d.ts +42 -10
  7. package/src/AdaptableState/Common/AdaptableFormat.d.ts +7 -0
  8. package/src/AdaptableState/Common/AdaptableMessageType.d.ts +1 -1
  9. package/src/AdaptableState/Common/Enums.d.ts +1 -1
  10. package/src/AdaptableState/Common/Enums.js +1 -1
  11. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  12. package/src/Api/Internal/AlertInternalApi.js +1 -1
  13. package/src/Api/Internal/DataSetInternalApi.d.ts +3 -0
  14. package/src/Api/Internal/DataSetInternalApi.js +73 -13
  15. package/src/Redux/Store/AdaptableStore.js +6 -4
  16. package/src/Strategy/CalculatedColumnModule.js +1 -0
  17. package/src/Strategy/ColumnFilterModule.js +1 -0
  18. package/src/Strategy/FlashingCellModule.js +6 -2
  19. package/src/Strategy/FormatColumnModule.js +2 -2
  20. package/src/Strategy/FreeTextColumnModule.js +38 -28
  21. package/src/Strategy/Interface/IModule.d.ts +3 -1
  22. package/src/Strategy/LayoutModule.js +15 -66
  23. package/src/Strategy/StyledColumnModule.js +12 -29
  24. package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.d.ts +1 -0
  25. package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.js +1 -0
  26. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.d.ts +2 -0
  27. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.js +14 -0
  28. package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +1 -0
  29. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +3 -0
  30. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.d.ts +11 -0
  31. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.js +105 -0
  32. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.d.ts +48 -0
  33. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +166 -0
  34. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.d.ts +1 -0
  35. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.js +1 -0
  36. package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.d.ts +26 -0
  37. package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.js +85 -0
  38. package/src/Utilities/Defaults/DefaultSettingsPanel.d.ts +3 -5
  39. package/src/Utilities/Defaults/DefaultSettingsPanel.js +46 -41
  40. package/src/Utilities/Helpers/FormatHelper.js +3 -0
  41. package/src/Utilities/Helpers/ScheduleHelper.js +2 -0
  42. package/src/Utilities/Helpers/StyleHelper.d.ts +18 -0
  43. package/src/Utilities/Helpers/StyleHelper.js +27 -0
  44. package/src/Utilities/Helpers/StyledColumnGradientHelper.js +7 -5
  45. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.d.ts +3 -0
  46. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.js +15 -0
  47. package/src/Utilities/getScopeViewItems.js +2 -0
  48. package/src/Utilities/wizardSelection.d.ts +10 -0
  49. package/src/Utilities/wizardSelection.js +15 -0
  50. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +2 -2
  51. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsSidebarForm.js +2 -2
  52. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +3 -3
  53. package/src/View/Alert/AlertViewPanel.js +2 -2
  54. package/src/View/Alert/Utilities/getAlertButtonStyle.js +7 -4
  55. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.d.ts +0 -1
  56. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +0 -4
  57. package/src/View/Alert/Wizard/AlertButtonsEditor.js +2 -1
  58. package/src/View/Alert/Wizard/AlertMessageWizardSection.d.ts +1 -1
  59. package/src/View/Alert/Wizard/AlertMessageWizardSection.js +1 -2
  60. package/src/View/Alert/Wizard/AlertNotificationWizardSection.d.ts +1 -1
  61. package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +3 -4
  62. package/src/View/Alert/Wizard/AlertScheduledWizardSection.d.ts +1 -1
  63. package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +1 -2
  64. package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +1 -1
  65. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +31 -7
  66. package/src/View/Alert/Wizard/AlertWizard.js +4 -4
  67. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.d.ts +2 -1
  68. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +4 -14
  69. package/src/View/BulkUpdate/BulkUpdatePopup.js +1 -1
  70. package/src/View/BulkUpdate/BulkUpdateViewPanel.js +4 -6
  71. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.d.ts +1 -1
  72. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -2
  73. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  74. package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +30 -4
  75. package/src/View/CellSummary/CellSummaryViewPanel.js +4 -4
  76. package/src/View/Charting/ShowChartButton.js +8 -8
  77. package/src/View/ColumnInfo/ColumnInfo.js +21 -1
  78. package/src/View/Components/AdaptableObjectCollection/index.js +2 -2
  79. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +1 -1
  80. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +4 -4
  81. package/src/View/Components/AdaptableObjectRow/index.js +2 -2
  82. package/src/View/Components/Buttons/ButtonBase/index.js +2 -3
  83. package/src/View/Components/Buttons/ButtonNew.d.ts +2 -0
  84. package/src/View/Components/Buttons/ButtonNew.js +1 -1
  85. package/src/View/Components/Buttons/EntityListActionButtons.js +3 -3
  86. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.js +2 -2
  87. package/src/View/Components/ColumnFilter/ColumnFilter.js +2 -3
  88. package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +2 -2
  89. package/src/View/Components/ColumnSelector/index.d.ts +12 -0
  90. package/src/View/Components/ColumnSelector/index.js +30 -6
  91. package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.js +2 -2
  92. package/src/View/Components/ModuleValueSelector/index.js +2 -1
  93. package/src/View/Components/NewScopeComponent.js +4 -9
  94. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +5 -4
  95. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +4 -4
  96. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +1 -1
  97. package/src/View/Components/Popups/AdaptablePopup/Navigation.d.ts +3 -2
  98. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +38 -28
  99. package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +3 -3
  100. package/src/View/Components/Popups/AdaptablePopup/TopBar.js +2 -2
  101. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.d.ts +11 -0
  102. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.js +1 -0
  103. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.d.ts +3 -1
  104. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +25 -27
  105. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -1
  106. package/src/View/Components/RangesComponent.d.ts +2 -4
  107. package/src/View/Components/RangesComponent.js +95 -66
  108. package/src/View/Components/ReorderDraggable/index.js +2 -2
  109. package/src/View/Components/Selectors/BulkUpdateValueSelector.d.ts +0 -2
  110. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +3 -3
  111. package/src/View/Components/StyleComponent.js +32 -65
  112. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +10 -7
  113. package/src/View/Components/ToolPanel/ToolPanelPopup.d.ts +3 -13
  114. package/src/View/Components/ToolPanel/ToolPanelPopup.js +5 -81
  115. package/src/View/Components/ToolPanel/ToolPanelPopupSections.d.ts +17 -0
  116. package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +76 -0
  117. package/src/View/Components/ValueSelector/index.d.ts +29 -0
  118. package/src/View/Components/ValueSelector/index.js +113 -30
  119. package/src/View/Components/wizardColumnListStyles.d.ts +10 -0
  120. package/src/View/Components/wizardColumnListStyles.js +10 -0
  121. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  122. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +5 -7
  123. package/src/View/CustomSort/Wizard/CustomSortWizard.js +2 -2
  124. package/src/View/Dashboard/DashboardPopup.d.ts +1 -11
  125. package/src/View/Dashboard/DashboardPopup.js +3 -67
  126. package/src/View/Dashboard/DashboardPopupSections.d.ts +20 -0
  127. package/src/View/Dashboard/DashboardPopupSections.js +68 -0
  128. package/src/View/Dashboard/PinnedToolbarsSelector.js +2 -2
  129. package/src/View/DataChangeHistory/DataChangeHistoryPopup.d.ts +1 -6
  130. package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +8 -20
  131. package/src/View/DataChangeHistory/DataChangeHistoryTable.d.ts +8 -0
  132. package/src/View/DataChangeHistory/DataChangeHistoryTable.js +94 -0
  133. package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +5 -3
  134. package/src/View/DataChangeHistory/buildActionColumnButton.js +30 -39
  135. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.d.ts +15 -0
  136. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.js +37 -0
  137. package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -1
  138. package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +32 -19
  139. package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
  140. package/src/View/DataSet/DataSetViewPanel.d.ts +2 -2
  141. package/src/View/Export/ExportDestinationPicker.js +3 -3
  142. package/src/View/Export/ExportViewPanel.js +2 -2
  143. package/src/View/Export/Wizard/ReportColumnsWizardSection.d.ts +2 -1
  144. package/src/View/Export/Wizard/ReportColumnsWizardSection.js +4 -9
  145. package/src/View/Export/Wizard/ReportRowsWizardSection.d.ts +2 -1
  146. package/src/View/Export/Wizard/ReportRowsWizardSection.js +3 -6
  147. package/src/View/FlashingCell/FlashingCellStyle.d.ts +4 -2
  148. package/src/View/FlashingCell/FlashingCellStyle.js +4 -2
  149. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.d.ts +2 -1
  150. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +7 -11
  151. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.d.ts +9 -0
  152. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.js +5 -0
  153. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.d.ts +1 -1
  154. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +1 -0
  155. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.d.ts +0 -5
  156. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +1 -5
  157. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +2 -3
  158. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +1 -1
  159. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +99 -42
  160. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +0 -1
  161. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +0 -4
  162. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +56 -15
  163. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
  164. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +2 -3
  165. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +5 -8
  166. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +8 -13
  167. package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +3 -2
  168. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +1 -2
  169. package/src/View/GridFilter/GridFilterPopupUI/index.js +3 -2
  170. package/src/View/GridFilter/GridFilterViewPanel.js +5 -5
  171. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +2 -2
  172. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
  173. package/src/View/Layout/LayoutViewPanel.js +1 -1
  174. package/src/View/Layout/Wizard/LayoutWizard.js +24 -28
  175. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +13 -1
  176. package/src/View/Layout/Wizard/sections/AggregationsSection.js +73 -33
  177. package/src/View/Layout/Wizard/sections/ColumnsSection.d.ts +4 -1
  178. package/src/View/Layout/Wizard/sections/ColumnsSection.js +155 -276
  179. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +4 -1
  180. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +148 -145
  181. package/src/View/Layout/Wizard/sections/PivotColumnsSection.d.ts +5 -2
  182. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +24 -12
  183. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.d.ts +4 -1
  184. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +23 -12
  185. package/src/View/Layout/Wizard/sections/RowGroupingSection.d.ts +5 -2
  186. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +19 -12
  187. package/src/View/Layout/Wizard/sections/RowSelectionSection.js +8 -4
  188. package/src/View/Layout/Wizard/sections/RowSummarySection.js +11 -11
  189. package/src/View/Layout/Wizard/sections/SortSection.d.ts +12 -2
  190. package/src/View/Layout/Wizard/sections/SortSection.js +41 -17
  191. package/src/View/Layout/Wizard/sections/columnLayoutCards.d.ts +20 -0
  192. package/src/View/Layout/Wizard/sections/columnLayoutCards.js +159 -0
  193. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.d.ts +30 -0
  194. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +201 -0
  195. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.d.ts +8 -0
  196. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.js +63 -0
  197. package/src/View/Layout/Wizard/sections/layoutWizardColumns.d.ts +11 -0
  198. package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +52 -0
  199. package/src/View/License/LicenseWatermark.js +1 -1
  200. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.d.ts +1 -1
  201. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -2
  202. package/src/View/Note/NoteEditor.js +2 -2
  203. package/src/View/QuickSearch/QuickSearchPopup.js +2 -3
  204. package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +1 -1
  205. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +1 -1
  206. package/src/View/SmartEdit/SmartEditPopup.js +2 -2
  207. package/src/View/SmartEdit/SmartEditViewPanel.js +2 -2
  208. package/src/View/StateManagement/StateManagementPopup.js +1 -1
  209. package/src/View/StateManagement/components/ExportDropdown.d.ts +2 -2
  210. package/src/View/StateManagement/components/ExportDropdown.js +12 -12
  211. package/src/View/StatusBar/StatusBarPanel.js +2 -2
  212. package/src/View/StatusBar/StatusBarPopup.js +33 -5
  213. package/src/View/StatusBar/statusBarPanelHelpers.d.ts +2 -0
  214. package/src/View/StatusBar/statusBarPanelHelpers.js +7 -0
  215. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +2 -0
  216. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +14 -11
  217. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +2 -2
  218. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +137 -119
  219. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +8 -14
  220. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +2 -1
  221. package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.d.ts +5 -0
  222. package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.js +50 -0
  223. package/src/View/StyledColumn/Wizard/StyledColumnWizard.d.ts +2 -0
  224. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +26 -5
  225. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +8 -17
  226. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +2 -1
  227. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +46 -28
  228. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +98 -43
  229. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +2 -1
  230. package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.d.ts +1 -1
  231. package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +32 -46
  232. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +11 -6
  233. package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +94 -7
  234. package/src/View/UIHelper.d.ts +0 -2
  235. package/src/View/UIHelper.js +8 -23
  236. package/src/View/Wizard/CollapsibleWizardCard.d.ts +68 -0
  237. package/src/View/Wizard/CollapsibleWizardCard.js +81 -0
  238. package/src/View/Wizard/OnePageWizards.js +6 -6
  239. package/src/View/Wizard/SummaryColorTag.d.ts +24 -0
  240. package/src/View/Wizard/SummaryColorTag.js +67 -0
  241. package/src/View/Wizard/WizardTypeSelection.d.ts +34 -0
  242. package/src/View/Wizard/WizardTypeSelection.js +31 -0
  243. package/src/View/Wizard/rowGroupSummaryTags.d.ts +18 -0
  244. package/src/View/Wizard/rowGroupSummaryTags.js +14 -0
  245. package/src/View/Wizard/scopeSummaryTags.d.ts +6 -0
  246. package/src/View/Wizard/scopeSummaryTags.js +33 -0
  247. package/src/agGrid/AgGridAdapter.js +0 -5
  248. package/src/agGrid/AgGridColumnAdapter.js +2 -2
  249. package/src/agGrid/cellRenderers/ActionColumnRenderer.js +4 -7
  250. package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -1
  251. package/src/components/Card/index.js +5 -6
  252. package/src/components/CheckBox/index.js +2 -3
  253. package/src/components/CodeBlock/index.js +2 -2
  254. package/src/components/ColorPicker/ColorPicker.d.ts +1 -0
  255. package/src/components/ColorPicker/ColorPicker.js +8 -6
  256. package/src/components/ColorPicker/OptionalColorPicker.d.ts +12 -0
  257. package/src/components/ColorPicker/OptionalColorPicker.js +26 -0
  258. package/src/components/ColorPicker/index.d.ts +1 -0
  259. package/src/components/ColorPicker/index.js +1 -0
  260. package/src/components/Combobox/comboboxUtils.d.ts +1 -0
  261. package/src/components/Combobox/index.js +19 -18
  262. package/src/components/Dashboard/DashboardManager.js +2 -4
  263. package/src/components/Dialog/index.js +4 -4
  264. package/src/components/DragAndDropContext/DragAndDropContext.d.ts +5 -0
  265. package/src/components/DragAndDropContext/DragAndDropContext.js +3 -0
  266. package/src/components/DragAndDropContext/ModuleManager.d.ts +15 -3
  267. package/src/components/DragAndDropContext/ModuleManager.js +47 -8
  268. package/src/components/DragAndDropContext/TabList.d.ts +11 -4
  269. package/src/components/DragAndDropContext/TabList.js +52 -38
  270. package/src/components/DragAndDropContext/UnusedPanel.d.ts +4 -3
  271. package/src/components/DragAndDropContext/UnusedPanel.js +15 -11
  272. package/src/components/DragAndDropContext/dragScope.d.ts +6 -0
  273. package/src/components/DragAndDropContext/dragScope.js +26 -0
  274. package/src/components/DragAndDropContext/types.d.ts +7 -0
  275. package/src/components/DropdownButton/index.d.ts +33 -25
  276. package/src/components/DropdownButton/index.js +24 -158
  277. package/src/components/EmptyContent/index.js +2 -2
  278. package/src/components/ErrorBox/index.js +2 -2
  279. package/src/components/ExpressionEditor/BaseEditorInput.js +3 -3
  280. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +3 -3
  281. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +6 -6
  282. package/src/components/FieldWrap/index.js +2 -2
  283. package/src/components/Flex.js +2 -2
  284. package/src/components/FormLayout/index.d.ts +1 -1
  285. package/src/components/HelpBlock/index.js +3 -3
  286. package/src/components/IconSelector/IconSelector.d.ts +8 -0
  287. package/src/components/IconSelector/IconSelector.js +11 -7
  288. package/src/components/IconSelector/index.d.ts +1 -0
  289. package/src/components/IconSelector/index.js +1 -0
  290. package/src/components/Modal/index.js +2 -2
  291. package/src/components/NewSelect/index.js +11 -1
  292. package/src/components/Panel/index.js +7 -7
  293. package/src/components/Radio/index.d.ts +1 -1
  294. package/src/components/Radio/index.js +8 -6
  295. package/src/components/SimpleButton/index.js +7 -7
  296. package/src/components/StylePreview.js +2 -2
  297. package/src/components/Tabs/index.js +4 -4
  298. package/src/components/Tag/Tag.d.ts +16 -0
  299. package/src/components/Tag/Tag.js +14 -4
  300. package/src/components/Tag/columnScopeTagHelpers.d.ts +8 -0
  301. package/src/components/Tag/columnScopeTagHelpers.js +6 -0
  302. package/src/components/Tag/index.d.ts +1 -1
  303. package/src/components/Tag/index.js +1 -1
  304. package/src/components/Textarea/index.js +2 -3
  305. package/src/components/Toggle/Toggle.d.ts +2 -0
  306. package/src/components/Toggle/Toggle.js +14 -7
  307. package/src/components/Toggle/ToggleGroup.js +2 -2
  308. package/src/components/ToggleButton/index.js +4 -4
  309. package/src/components/Tree/TreeDropdown/index.js +3 -4
  310. package/src/components/WarningBox/index.js +2 -2
  311. package/src/components/icons/sort-asc.js +1 -1
  312. package/src/components/ui/button.d.ts +2 -2
  313. package/src/components/ui/combobox.d.ts +3 -1
  314. package/src/components/ui/combobox.js +2 -2
  315. package/src/components/ui/input-group.d.ts +1 -1
  316. package/src/components/ui/select.js +3 -2
  317. package/src/components/ui/textarea.js +1 -1
  318. package/src/env.js +2 -2
  319. package/src/layout-manager/src/index.js +7 -3
  320. package/src/metamodel/adaptable.metamodel.js +1 -1
  321. package/src/types.d.ts +1 -1
  322. package/tsconfig.esm.tsbuildinfo +1 -1
  323. package/src/View/DataChangeHistory/DataChangeHistoryGrid.d.ts +0 -17
  324. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +0 -290
  325. package/src/components/DropdownButton/DropdownButtonItem.d.ts +0 -12
  326. package/src/components/DropdownButton/DropdownButtonItem.js +0 -1
  327. package/src/components/DropdownButton/renderItem.d.ts +0 -14
  328. package/src/components/DropdownButton/renderItem.js +0 -11
  329. package/src/components/DropdownButton/useExpanded.d.ts +0 -24
  330. package/src/components/DropdownButton/useExpanded.js +0 -56
  331. package/src/components/NewDropdownButton/index.d.ts +0 -27
  332. package/src/components/NewDropdownButton/index.js +0 -24
@@ -1,80 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { connect } from 'react-redux';
4
4
  import * as DashboardRedux from '../../Redux/ActionsReducers/DashboardRedux';
5
5
  import { PopupPanel } from '../Components/Popups/AdaptablePopup/PopupPanel';
6
- import DashboardManagerUI from '../../components/Dashboard/DashboardManager';
7
6
  import { ACCESS_LEVEL_FULL, ACCESS_LEVEL_READ_ONLY, } from '../../Utilities/Constants/GeneralConstants';
8
- import { ModuleValueSelector } from '../Components/ModuleValueSelector';
9
- import { PinnedToolbarsSelector } from './PinnedToolbarsSelector';
10
- import { Flex } from '../../components/Flex';
11
- import { ToggleButton } from '../../components/ToggleButton';
12
- import { Tabs } from '../../components/Tabs';
13
- import { Card } from '../../components/Card';
14
- export var DashboardConfigView;
15
- (function (DashboardConfigView) {
16
- DashboardConfigView["Toolbars"] = "Toolbars";
17
- DashboardConfigView["Buttons"] = "Buttons";
18
- DashboardConfigView["PinnedToolbars"] = "PinnedToolbars";
19
- })(DashboardConfigView || (DashboardConfigView = {}));
7
+ import { DashboardPopupSections } from './DashboardPopupSections';
20
8
  class DashboardPopupComponent extends React.Component {
21
- constructor(props) {
22
- super(props);
23
- this.state = {
24
- DashboardConfigView: DashboardConfigView.Toolbars,
25
- };
26
- }
27
9
  render() {
28
- const systemToolbars = this.props.api.dashboardApi.internalApi
29
- .getModuleToolbars()
30
- .map((toolbar) => ({
31
- Id: toolbar.id,
32
- Title: toolbar.friendlyName,
33
- }));
34
- const customToolbars = this.props.api.dashboardApi.getCustomToolbars().map((ct) => ({
35
- Id: ct.name,
36
- Title: ct.title ? ct.title : ct.name,
37
- }));
38
- const tabs = this.props.DashboardState.Tabs.map((tab) => {
39
- const Toolbars = tab.Toolbars.filter((vt) => {
40
- let customToolbar = this.props.api.dashboardApi
41
- .getCustomToolbars()
42
- .find((ct) => ct.name === vt);
43
- return customToolbar
44
- ? true
45
- : this.props.api.internalApi
46
- .getModuleService()
47
- .isAdapTableModulePresent(vt);
48
- });
49
- return { ...tab, Toolbars };
50
- });
51
- let selectedModuleButtons = [];
52
- this.props.DashboardState.ModuleButtons.forEach((x) => {
53
- let menuItem = this.props.InternalState.SettingsPanelModuleEntries.find((m) => m.category == x);
54
- if (menuItem?.isVisible) {
55
- selectedModuleButtons.push(x);
56
- }
57
- });
58
- const allModuleButtons = this.props.InternalState.SettingsPanelModuleEntries.map((x) => x.category);
59
- const baseClassName = 'ab-Dashboard-Popup';
60
10
  const dashboardAccessLevel = this.props.api.entitlementApi.getEntitlementAccessLevelForModule('Dashboard');
61
11
  const areDashboardSettingsVisible = dashboardAccessLevel == ACCESS_LEVEL_FULL || dashboardAccessLevel == ACCESS_LEVEL_READ_ONLY;
62
12
  const isDashboardDisabled = dashboardAccessLevel === ACCESS_LEVEL_READ_ONLY;
63
- const isModuleCheckboxDisabled = (module) => {
64
- if (module === 'SettingsPanel') {
65
- return this.props.api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
66
- }
67
- return false;
68
- };
69
- const contentCls = '';
70
- return (_jsx(PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), children: _jsxs(Flex, { flexDirection: "column", className: "twa:h-full twa:gap-4", children: [areDashboardSettingsVisible && (_jsx(_Fragment, { children: _jsxs(Card, { children: [_jsx(Card.Title, { gap: 8, children: "Display Settings" }), _jsx(Card.Body, { gap: 2, className: "twa:p-2", children: _jsxs("div", { className: "twa:flex twa:flex-row twa:items-center twa:justify-start twa:gap-3", children: [_jsx(ToggleButton, { className: "twa:w-24", onChange: (visible) => this.props.onSetDashboardHidden(!visible), checked: !this.props.IsHidden, "data-name": "dashboard-visibility", children: this.props.IsHidden ? 'Hidden' : 'Visible' }), this.props.DashboardState.Tabs?.length > 0 ? (_jsx(ToggleButton, { disabled: this.props.IsFloating, className: "twa:w-24", onChange: (expanded) => this.props.onSetDashboardCollapsed(!expanded), checked: !this.props.IsCollapsed, "data-name": "expand-state", children: this.props.IsCollapsed ? 'Collapsed' : 'Expanded' })) : null, this.props.api.optionsApi.getDashboardOptions().canFloat ? (_jsx(ToggleButton, { className: "twa:w-24", onChange: (pinned) => this.props.onSetDashboardFloating(!pinned), checked: !this.props.IsFloating, "data-name": "floating", children: this.props.IsFloating ? 'Floating' : 'Pinned' })) : null] }) })] }) })), _jsxs(Card, { className: "twa:flex-1 twa:overflow-hidden", gap: 0, children: [_jsx(Card.Title, { children: "Contents" }), _jsx(Card.Body, { className: "twa:p-2", children: _jsxs(Tabs, { className: "twa:flex-1 twa:min-h-0", children: [_jsx(Tabs.Tab, { value: "pinned-toolbars", children: "Pinned Toolbars" }), _jsx(Tabs.Tab, { value: "tabbed-toolbars", children: "Tabs & Toolbars" }), _jsx(Tabs.Tab, { value: "buttons", children: "Buttons" }), _jsx(Tabs.Content, { value: "pinned-toolbars", className: contentCls, children: _jsx(PinnedToolbarsSelector, {}) }), _jsx(Tabs.Content, { value: "tabbed-toolbars", className: contentCls, children: _jsx(DashboardManagerUI, { disabled: isDashboardDisabled, availableToolbars: [...systemToolbars, ...customToolbars], tabs: tabs, onTabsChange: this.props.onDashboardSetTabs, api: this.props.api }) }), _jsx(Tabs.Content, { value: "buttons", className: contentCls, children: _jsx(ModuleValueSelector, { disabled: isDashboardDisabled, options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, onChange: (selectedValues) => this.props.onDashboardSetModuleButtons(selectedValues) }) })] }) })] })] }) }));
71
- }
72
- onDashboardConfigViewChanged(event) {
73
- let e = event.target;
74
- let dashboardConfigView = e.value;
75
- this.setState({
76
- DashboardConfigView: dashboardConfigView,
77
- });
13
+ return (_jsx(PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), bodyClassName: "twa:gap-3 twa:flex twa:flex-col", children: _jsx(DashboardPopupSections, { DashboardState: this.props.DashboardState, InternalState: this.props.InternalState, IsCollapsed: this.props.IsCollapsed, IsHidden: this.props.IsHidden, IsFloating: this.props.IsFloating, isDashboardDisabled: isDashboardDisabled, areDashboardSettingsVisible: areDashboardSettingsVisible, canFloat: this.props.api.optionsApi.getDashboardOptions().canFloat ?? false, onDashboardSetModuleButtons: this.props.onDashboardSetModuleButtons, onDashboardSetTabs: this.props.onDashboardSetTabs, onSetDashboardCollapsed: this.props.onSetDashboardCollapsed, onSetDashboardHidden: this.props.onSetDashboardHidden, onSetDashboardFloating: this.props.onSetDashboardFloating }) }));
78
14
  }
79
15
  }
80
16
  function mapStateToProps(state, ownProps) {
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { InternalState } from '../../AdaptableState/InternalState';
3
+ import { DashboardState, DashboardTab } from '../../AdaptableState/DashboardState';
4
+ import { AdaptableModuleButtons } from '../../AdaptableState/Common/Types';
5
+ export interface DashboardPopupSectionsProps {
6
+ DashboardState: DashboardState;
7
+ InternalState: InternalState;
8
+ IsCollapsed: boolean;
9
+ IsHidden: boolean;
10
+ IsFloating: boolean;
11
+ isDashboardDisabled: boolean;
12
+ areDashboardSettingsVisible: boolean;
13
+ canFloat: boolean;
14
+ onDashboardSetModuleButtons: (moduleButtons: AdaptableModuleButtons) => void;
15
+ onDashboardSetTabs: (tabs: DashboardTab[]) => void;
16
+ onSetDashboardCollapsed: (isCollapsed: boolean) => void;
17
+ onSetDashboardHidden: (isHidden: boolean) => void;
18
+ onSetDashboardFloating: (isFloating: boolean) => void;
19
+ }
20
+ export declare const DashboardPopupSections: React.FunctionComponent<DashboardPopupSectionsProps>;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import DashboardManagerUI from '../../components/Dashboard/DashboardManager';
4
+ import { ModuleValueSelector } from '../Components/ModuleValueSelector';
5
+ import { PinnedToolbarsSelector } from './PinnedToolbarsSelector';
6
+ import { Flex } from '../../components/Flex';
7
+ import { Tag } from '../../components/Tag';
8
+ import { ToggleButton } from '../../components/ToggleButton';
9
+ import { useAdaptable } from '../AdaptableContext';
10
+ import { CollapsibleWizardCard, renderCompactColumnTags, useWizardCardAccordion, } from '../Wizard/CollapsibleWizardCard';
11
+ const DashboardSettingsToggles = ({ isHidden, isCollapsed, isFloating, hasTabs, canFloat, className, onSetHidden, onSetCollapsed, onSetFloating, }) => (_jsxs(Flex, { alignItems: "center", className: className ?? 'twa:gap-3 twa:p-1', children: [_jsx(ToggleButton, { className: "twa:w-24", onChange: (visible) => onSetHidden(!visible), checked: !isHidden, "data-name": "dashboard-visibility", children: isHidden ? 'Hidden' : 'Visible' }), hasTabs ? (_jsx(ToggleButton, { disabled: isFloating, className: "twa:w-24", onChange: (expanded) => onSetCollapsed(!expanded), checked: !isCollapsed, "data-name": "expand-state", children: isCollapsed ? 'Collapsed' : 'Expanded' })) : null, canFloat ? (_jsx(ToggleButton, { className: "twa:w-24", onChange: (pinned) => onSetFloating(!pinned), checked: !isFloating, "data-name": "floating", children: isFloating ? 'Floating' : 'Pinned' })) : null] }));
12
+ export const DashboardPopupSections = (props) => {
13
+ const { api } = useAdaptable();
14
+ const { bindCard } = useWizardCardAccordion(null);
15
+ const systemToolbars = api.dashboardApi.internalApi.getModuleToolbars().map((toolbar) => ({
16
+ Id: toolbar.id,
17
+ Title: toolbar.friendlyName,
18
+ }));
19
+ const customToolbars = api.dashboardApi.getCustomToolbars().map((ct) => ({
20
+ Id: ct.name,
21
+ Title: ct.title ? ct.title : ct.name,
22
+ }));
23
+ const allToolbars = [...systemToolbars, ...customToolbars];
24
+ const toolbarTitleById = React.useMemo(() => allToolbars.reduce((map, toolbar) => {
25
+ map.set(toolbar.Id, toolbar.Title);
26
+ return map;
27
+ }, new Map()), [allToolbars]);
28
+ const tabs = props.DashboardState.Tabs.map((tab) => {
29
+ const Toolbars = tab.Toolbars.filter((vt) => {
30
+ const customToolbar = api.dashboardApi
31
+ .getCustomToolbars()
32
+ .find((ct) => ct.name === vt);
33
+ return customToolbar
34
+ ? true
35
+ : api.internalApi.getModuleService().isAdapTableModulePresent(vt);
36
+ });
37
+ return { ...tab, Toolbars };
38
+ });
39
+ const selectedModuleButtons = [];
40
+ props.DashboardState.ModuleButtons?.forEach((module) => {
41
+ const menuItem = props.InternalState.SettingsPanelModuleEntries.find((entry) => entry.category === module);
42
+ if (menuItem?.isVisible) {
43
+ selectedModuleButtons.push(module);
44
+ }
45
+ });
46
+ const allModuleButtons = props.InternalState.SettingsPanelModuleEntries.map((entry) => entry.category);
47
+ const isModuleCheckboxDisabled = (module) => {
48
+ if (module === 'SettingsPanel') {
49
+ return api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
50
+ }
51
+ return false;
52
+ };
53
+ const pinnedToolbarIds = props.DashboardState.PinnedToolbars ?? [];
54
+ const pinnedToolbarTitles = pinnedToolbarIds.map((id) => toolbarTitleById.get(id) ?? id);
55
+ const moduleButtonLabels = selectedModuleButtons.map((module) => api.internalApi.getModuleService().getModuleFriendlyName(module) ?? module);
56
+ const tabsCompactLabels = tabs.flatMap((tab) => {
57
+ const toolbarTitles = tab.Toolbars.map((toolbarId) => toolbarTitleById.get(toolbarId) ?? toolbarId);
58
+ return [`Tab: ${tab.Name}`, ...toolbarTitles];
59
+ });
60
+ const settingsToggles = (_jsx(DashboardSettingsToggles, { isHidden: props.IsHidden, isCollapsed: props.IsCollapsed, isFloating: props.IsFloating, hasTabs: tabs.length > 0, canFloat: props.canFloat, onSetHidden: props.onSetDashboardHidden, onSetCollapsed: props.onSetDashboardCollapsed, onSetFloating: props.onSetDashboardFloating }));
61
+ const pinnedSummary = pinnedToolbarTitles.length > 0 ? (_jsx(Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: pinnedToolbarTitles.map((title, index) => (_jsx(Tag, { children: title }, `${title}-${index}`))) })) : (_jsx(Tag, { children: "No Pinned Toolbars" }));
62
+ const tabsSummary = tabs.length > 0 ? (_jsx(Flex, { flexDirection: "column", className: "twa:gap-2", children: tabs.map((tab) => {
63
+ const toolbarTitles = tab.Toolbars.map((toolbarId) => toolbarTitleById.get(toolbarId) ?? toolbarId);
64
+ return (_jsxs(Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: [_jsxs(Tag, { children: ["Tab: ", tab.Name] }), toolbarTitles.map((title, index) => (_jsx(Tag, { children: title }, `${tab.Name}-${title}-${index}`)))] }, tab.Uuid ?? tab.Name));
65
+ }) })) : (_jsx(Tag, { children: "No Tabs Configured" }));
66
+ const moduleButtonsSummary = moduleButtonLabels.length > 0 ? (_jsx(Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: moduleButtonLabels.map((label) => (_jsx(Tag, { children: label }, label))) })) : (_jsx(Tag, { children: "No Module Buttons" }));
67
+ return (_jsxs(Flex, { flexDirection: "column", className: "twa:h-full twa:min-h-0 twa:gap-3 twa:overflow-y-auto", children: [props.areDashboardSettingsVisible && (_jsx(CollapsibleWizardCard, { ...bindCard('settings'), "data-name": "dashboard-settings", title: "Settings", help: "Control Dashboard visibility, expansion and floating mode", compactSummary: settingsToggles, compactSummaryInteractive: true, summary: settingsToggles, className: "twa:overflow-hidden", children: settingsToggles })), _jsx(CollapsibleWizardCard, { ...bindCard('pinned-toolbars'), "data-name": "dashboard-pinned-toolbars", title: "Pinned Toolbars", help: "Optional strip along the top of the grid \u2014 pin Toolbars you want always visible (e.g. Grid Filter)", compactSummary: renderCompactColumnTags(pinnedToolbarTitles, (title) => title, { emptyLabel: 'No Pinned Toolbars' }), summary: pinnedSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[200px] twa:overflow-hidden", children: _jsx(PinnedToolbarsSelector, {}) }), _jsx(CollapsibleWizardCard, { ...bindCard('tabs-toolbars'), "data-name": "dashboard-tabs-toolbars", title: "Tabs & Toolbars", help: "Group Toolbars into named Tabs in the Dashboard header (independent of Pinned Toolbars)", compactSummary: renderCompactColumnTags(tabsCompactLabels, (label) => label, { emptyLabel: 'No Tabs Configured' }), summary: tabsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[280px] twa:overflow-hidden", children: _jsx(DashboardManagerUI, { disabled: props.isDashboardDisabled, availableToolbars: [...systemToolbars, ...customToolbars], tabs: tabs, onTabsChange: props.onDashboardSetTabs, api: api }) }), _jsx(CollapsibleWizardCard, { ...bindCard('module-buttons', { fillAvailable: true }), "data-name": "dashboard-module-buttons", title: "Module Buttons", help: "Buttons in the Dashboard header that open Module settings", compactSummary: renderCompactColumnTags(moduleButtonLabels, (label) => label, { emptyLabel: 'No Module Buttons' }), summary: moduleButtonsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[240px] twa:overflow-hidden twa:flex twa:flex-col twa:!pt-0 twa:!pb-0 twa:px-1", children: _jsx(ModuleValueSelector, { disabled: props.isDashboardDisabled, options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, onChange: (selectedValues) => props.onDashboardSetModuleButtons(selectedValues) }) })] }));
68
+ };
@@ -32,12 +32,12 @@ export const PinnedToolbarsSelector = (props) => {
32
32
  },
33
33
  ];
34
34
  }, [pinnedToolbars]);
35
- return (_jsx(ModuleManager, { className: "twa:flex-1", permittedActions: {
35
+ return (_jsx(ModuleManager, { dragScope: "dashboard-pinned", layout: "strip", permittedActions: {
36
36
  createTab: false,
37
37
  dragAndDropTab: false,
38
38
  deleteTab: false,
39
39
  editTabName: false,
40
40
  }, onTabsChange: (tabs) => {
41
41
  dispatch(DashboardSetPinnedToolbars(tabs[0].Items));
42
- }, disabled: isDashboardDisabled, tabs: tabs, availableItems: toolbars, filterOutSelectedItems: true, tabsTitle: 'Pinned Toolbars', unusedPanelTitle: "Available Pinned Toolbars", dragItemText: "Drag into the Panel below" }));
42
+ }, disabled: isDashboardDisabled, tabs: tabs, availableItems: toolbars, filterOutSelectedItems: true }));
43
43
  };
@@ -3,7 +3,6 @@ import * as React from 'react';
3
3
  import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
4
4
  import { DataChangeHistoryDisableAction, DataChangeHistoryEnableAction, DataChangeHistoryResumeAction, DataChangeHistorySuspendAction } from '../../Redux/ActionsReducers/InternalRedux';
5
5
  import { DataChangeHistoryMode } from '../../AdaptableState/InternalState';
6
- import { AdaptableApi } from '../../Api/AdaptableApi';
7
6
  interface DataChangeHistoryPopupProps extends ModuleViewPopupProps<DataChangeHistoryPopupComponent> {
8
7
  changeHistoryLog: Record<string, CellDataChangedInfo>;
9
8
  changeHistoryMode: DataChangeHistoryMode;
@@ -14,11 +13,7 @@ interface DataChangeHistoryPopupProps extends ModuleViewPopupProps<DataChangeHis
14
13
  onChangeHistorySuspend: () => DataChangeHistorySuspendAction;
15
14
  onChangeHistoryResume: () => DataChangeHistoryResumeAction;
16
15
  }
17
- interface DataChangeHistoryPopupState {
18
- dataChangeHistoryAdaptableApi: AdaptableApi | undefined;
19
- }
20
- declare class DataChangeHistoryPopupComponent extends React.Component<DataChangeHistoryPopupProps, DataChangeHistoryPopupState> {
21
- constructor(props: DataChangeHistoryPopupProps);
16
+ declare class DataChangeHistoryPopupComponent extends React.Component<DataChangeHistoryPopupProps> {
22
17
  render(): React.JSX.Element;
23
18
  }
24
19
  export declare let DataChangeHistoryPopup: import("react-redux").ConnectedComponent<typeof DataChangeHistoryPopupComponent, {
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import * as React from 'react';
3
3
  import { connect } from 'react-redux';
4
4
  import { PopupPanel } from '../Components/Popups/AdaptablePopup/PopupPanel';
5
- import { DataChangeHistoryGrid } from './DataChangeHistoryGrid';
5
+ import { DataChangeHistoryTable } from './DataChangeHistoryTable';
6
6
  import { DataChangeHistoryDisable, DataChangeHistoryEnable, DataChangeHistoryResume, DataChangeHistorySuspend, } from '../../Redux/ActionsReducers/InternalRedux';
7
7
  import { ButtonPlay } from '../Components/Buttons/ButtonPlay';
8
8
  import { ButtonPause } from '../Components/Buttons/ButtonPause';
@@ -10,42 +10,30 @@ import { ButtonStop } from '../Components/Buttons/ButtonStop';
10
10
  import { DateFormatter } from '../../Utilities/Helpers/FormatHelper';
11
11
  import { Box, Flex } from '../../components/Flex';
12
12
  class DataChangeHistoryPopupComponent extends React.Component {
13
- constructor(props) {
14
- super(props);
15
- this.state = {
16
- dataChangeHistoryAdaptableApi: undefined,
17
- };
18
- }
19
13
  render() {
20
- const { changeHistoryMode, activationTime, suspensionTime, onChangeHistoryEnable, onChangeHistoryDisable, onChangeHistorySuspend, onChangeHistoryResume, } = this.props;
21
- const adaptableContainerId = 'dataChangeHistoryAdaptableContainer';
22
- const agGridContainerId = 'dataChangeHistoryAgGridContainer';
14
+ const { changeHistoryMode, activationTime, suspensionTime, onChangeHistoryEnable, onChangeHistoryDisable, onChangeHistorySuspend, onChangeHistoryResume, changeHistoryLog, } = this.props;
23
15
  const enabled = changeHistoryMode === 'ACTIVE';
24
16
  const disabled = changeHistoryMode === 'INACTIVE';
25
17
  const suspended = changeHistoryMode === 'SUSPENDED';
26
- const buttonPanel = (_jsxs(Flex, { className: "ab-DataChangeHistoryPopup--button-panel twa:gap-1 twa:p-2", children: [disabled && (_jsx(ButtonPlay, { className: "ab-DataChangeHistoryPopup--button-activate", "data-name": 'data-change-history--button-activate"', variant: 'raised', tone: 'accent', tooltip: '', onClick: () => onChangeHistoryEnable(), children: "Activate" })), suspended && (_jsx(ButtonPlay, { className: "ab-DataChangeHistoryPopup--button-resume", "data-name": 'data-change-history--button-resume', variant: 'outlined', tooltip: 'Resume tracking data changes', onClick: () => onChangeHistoryResume(), children: "Resume" })), enabled && (_jsx(ButtonPause, { className: "ab-DataChangeHistoryPopup--button-suspend", "data-name": 'data-change-history--button-suspend', variant: 'outlined', tooltip: 'Suspend tracking data changes', onClick: () => onChangeHistorySuspend(), children: "Suspend" })), (enabled || suspended) && (_jsx(ButtonStop, { className: "ab-DataChangeHistoryPopup--button-deactivate", "data-name": 'data-change-history--button-deactivate', variant: 'outlined', tooltip: 'Deactivate data change tracking', onClick: () => onChangeHistoryDisable(), children: "Deactivate" }))] }));
18
+ const buttonPanel = (_jsxs(Flex, { className: "ab-DataChangeHistoryPopup--button-panel twa:gap-1 twa:p-2", children: [disabled && (_jsx(ButtonPlay, { className: "ab-DataChangeHistoryPopup--button-activate", "data-name": 'data-change-history--button-activate', variant: 'raised', tone: 'accent', tooltip: '', onClick: () => onChangeHistoryEnable(), children: "Activate" })), suspended && (_jsx(ButtonPlay, { className: "ab-DataChangeHistoryPopup--button-resume", "data-name": 'data-change-history--button-resume', variant: 'outlined', tooltip: 'Resume tracking data changes', onClick: () => onChangeHistoryResume(), children: "Resume" })), enabled && (_jsx(ButtonPause, { className: "ab-DataChangeHistoryPopup--button-suspend", "data-name": 'data-change-history--button-suspend', variant: 'outlined', tooltip: 'Suspend tracking data changes', onClick: () => onChangeHistorySuspend(), children: "Suspend" })), (enabled || suspended) && (_jsx(ButtonStop, { className: "ab-DataChangeHistoryPopup--button-deactivate", "data-name": 'data-change-history--button-deactivate', variant: 'outlined', tooltip: 'Deactivate data change tracking', onClick: () => onChangeHistoryDisable(), children: "Deactivate" }))] }));
27
19
  const dateFormat = `${this.props.api.optionsApi.getUserInterfaceOptions().dateInputOptions.dateFormat} HH:mm:ss`;
28
20
  const statusPanel = (_jsxs(Flex, { className: "ab-DataChangeHistoryPopup--status-panel twa:gap-1", alignItems: 'center', children: [enabled && (_jsxs(_Fragment, { children: [_jsx(Box, { className: "ab-DataChangeHistoryPanel--status-active twa:text-success twa:font-bold", children: "Active" }), !!activationTime && (_jsxs(Box, { className: "twa:text-2 twa:italic", children: ["(since ", DateFormatter(activationTime, { Pattern: dateFormat }), ")"] }))] })), suspended && (_jsxs(_Fragment, { children: [_jsx(Box, { className: "ab-DataChangeHistoryPopup--status-suspended twa:text-warn twa:font-bold", children: "Suspended" }), !!suspensionTime && (_jsxs(Box, { className: "twa:text-2 twa:italic", children: ["(since ", DateFormatter(suspensionTime, { Pattern: dateFormat }), ")"] }))] })), disabled && _jsx(Box, { className: "ab-DataChangeHistoryPopup--status-disabled twa:text-2" })] }));
29
21
  const handleChangeUndo = (changeKey) => {
30
- const changeToBeUndone = this.props.changeHistoryLog[changeKey];
22
+ const changeToBeUndone = changeHistoryLog[changeKey];
31
23
  if (changeToBeUndone) {
32
24
  this.props.api.dataChangeHistoryApi.undoDataChangeHistoryEntry(changeToBeUndone);
33
25
  }
34
26
  };
35
27
  const handleClearRow = (changeKey) => {
36
- const changeToBeUndone = this.props.changeHistoryLog[changeKey];
37
- if (changeToBeUndone) {
38
- this.props.api.dataChangeHistoryApi.clearDataChangeHistoryEntry(changeToBeUndone);
28
+ const changeToBeCleared = changeHistoryLog[changeKey];
29
+ if (changeToBeCleared) {
30
+ this.props.api.dataChangeHistoryApi.clearDataChangeHistoryEntry(changeToBeCleared);
39
31
  }
40
32
  };
41
- const agGridThemeMode = this.props.api.internalApi
42
- .getAdaptableInstance()
43
- .agGridThemeAdapter.getAgGridThemeMode();
44
- const currentAgGridTheme = agGridThemeMode === 'legacy' ? this.props.api.themeApi.getAgGridCurrentThemeName() : '';
45
33
  return (_jsx(PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), children: _jsxs(Flex, { className: "ab-DataChangeHistoryPopup twa:h-full", flexDirection: "column", children: [_jsx(Flex, { style: {
46
34
  color: 'var(--ab-dashboard__color)',
47
35
  background: 'var(--ab-dashboard__background)',
48
- }, children: _jsxs(Flex, { flexDirection: 'row', children: [buttonPanel, statusPanel] }) }), _jsxs(Flex, { className: "ab-DataChangeHistoryPopup--grid twa:flex-1 twa:self-stretch", "data-name": 'data-change-history--grid', flexDirection: 'column', children: [_jsx("div", { id: adaptableContainerId }), _jsx("div", { id: agGridContainerId, className: currentAgGridTheme, style: { height: '100%' } }), _jsx(DataChangeHistoryGrid, { adaptableContainerId: adaptableContainerId, agGridContainerId: agGridContainerId, changeHistoryLog: this.props.changeHistoryLog, onUndoChange: handleChangeUndo, onClearRow: handleClearRow })] })] }) }));
36
+ }, children: _jsxs(Flex, { flexDirection: 'row', children: [buttonPanel, statusPanel] }) }), _jsx(Flex, { className: "ab-DataChangeHistoryPopup--grid twa:flex-1 twa:self-stretch", "data-name": 'data-change-history--grid', flexDirection: 'column', children: _jsx(DataChangeHistoryTable, { changeHistoryLog: changeHistoryLog, onUndoChange: handleChangeUndo, onClearRow: handleClearRow }) })] }) }));
49
37
  }
50
38
  }
51
39
  function mapStateToProps(state, ownProps) {
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
3
+ export interface DataChangeHistoryTableProps {
4
+ changeHistoryLog: Record<string, CellDataChangedInfo>;
5
+ onUndoChange: (changeKey: string) => void;
6
+ onClearRow: (changeKey: string) => void;
7
+ }
8
+ export declare const DataChangeHistoryTable: React.FunctionComponent<DataChangeHistoryTableProps>;
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { DataSource, InfiniteTableGrid } from '../../components/InfiniteTable';
4
+ import { Flex } from '../../components/Flex';
5
+ import { DataChangeHistoryModuleId } from '../../Utilities/Constants/ModuleConstants';
6
+ import FormatHelper from '../../Utilities/Helpers/FormatHelper';
7
+ import { useAdaptable } from '../AdaptableContext';
8
+ import { ADAPTABLE_BUTTON_SURFACE_DEFAULTS, AdaptableButtonView, } from '../Components/AdaptableButton/AdaptableButtonView';
9
+ import { buildChangeHistoryButtons, buildDataChangeHistoryContext, } from './buildActionColumnButton';
10
+ import { formatChangeHistoryCellValue, getChangeHistoryRowChangeInfo, mapChangeHistoryRowData, } from './dataChangeHistoryHelpers';
11
+ const tableDOMProps = {
12
+ style: {
13
+ height: '100%',
14
+ minWidth: '10rem',
15
+ },
16
+ };
17
+ const columnTypes = {
18
+ default: {
19
+ align: 'start',
20
+ defaultFlex: 1,
21
+ defaultSortable: false,
22
+ style: { fontSize: 'var(--ab-font-size-3)' },
23
+ },
24
+ };
25
+ const headerOptions = {
26
+ alwaysReserveSpaceForSortIcon: false,
27
+ };
28
+ export const DataChangeHistoryTable = (props) => {
29
+ const { changeHistoryLog, onUndoChange, onClearRow } = props;
30
+ const adaptable = useAdaptable();
31
+ const undoChangeEnabled = adaptable.api.entitlementApi.isModuleFullEntitlement(DataChangeHistoryModuleId);
32
+ const rowData = React.useMemo(() => mapChangeHistoryRowData(changeHistoryLog, adaptable), [changeHistoryLog, adaptable]);
33
+ const changeHistoryButtons = React.useMemo(() => buildChangeHistoryButtons(adaptable.adaptableOptions?.dataChangeHistoryOptions, adaptable.api, onUndoChange, onClearRow), [adaptable, onUndoChange, onClearRow]);
34
+ const showActionColumn = undoChangeEnabled && !!changeHistoryButtons?.length;
35
+ const primaryKeyHeader = adaptable.api.columnApi.getPrimaryKeyColumn()?.friendlyName ?? 'Row ID';
36
+ const dateFormat = `${adaptable.api.optionsApi.getUserInterfaceOptions().dateInputOptions.dateFormat} HH:mm:ss`;
37
+ const columnsMap = React.useMemo(() => {
38
+ const columns = {
39
+ primaryKeyValue: {
40
+ header: `Row (${primaryKeyHeader})`,
41
+ valueGetter: (params) => getChangeHistoryRowChangeInfo(params.data)?.primaryKeyValue ?? '',
42
+ },
43
+ changedColumnLabel: {
44
+ field: 'changedColumnLabel',
45
+ header: 'Column',
46
+ },
47
+ oldValue: {
48
+ header: 'Previous',
49
+ valueGetter: (params) => formatChangeHistoryCellValue(getChangeHistoryRowChangeInfo(params.data)?.oldValue),
50
+ },
51
+ newValue: {
52
+ header: 'New',
53
+ valueGetter: (params) => formatChangeHistoryCellValue(getChangeHistoryRowChangeInfo(params.data)?.newValue),
54
+ },
55
+ changedAt: {
56
+ header: 'Changed',
57
+ valueGetter: (params) => {
58
+ const changedAt = getChangeHistoryRowChangeInfo(params.data)?.changedAt;
59
+ return changedAt != null
60
+ ? FormatHelper.DateFormatter(changedAt, { Pattern: dateFormat })
61
+ : '';
62
+ },
63
+ },
64
+ changeTriggerLabel: {
65
+ field: 'changeTriggerLabel',
66
+ header: 'Source',
67
+ defaultFlex: 0.75,
68
+ },
69
+ };
70
+ if (showActionColumn && changeHistoryButtons) {
71
+ columns.actions = {
72
+ header: ' ',
73
+ defaultWidth: 110,
74
+ render: (params) => {
75
+ const rowData = params.data;
76
+ if (!getChangeHistoryRowChangeInfo(rowData)) {
77
+ return null;
78
+ }
79
+ return (_jsx(Flex, { className: "ab-ActionColumn twa:gap-0.5", children: changeHistoryButtons.map((button, index) => (_jsx(AdaptableButtonView, { button: button, context: buildDataChangeHistoryContext(rowData, adaptable.api, onUndoChange, onClearRow), api: adaptable.api, defaults: ADAPTABLE_BUTTON_SURFACE_DEFAULTS.actionColumn }, index))) }));
80
+ },
81
+ };
82
+ }
83
+ return columns;
84
+ }, [
85
+ changeHistoryButtons,
86
+ dateFormat,
87
+ onClearRow,
88
+ onUndoChange,
89
+ primaryKeyHeader,
90
+ showActionColumn,
91
+ adaptable.api,
92
+ ]);
93
+ return (_jsx(DataSource, { data: rowData, primaryKey: "primaryKey", children: _jsx(InfiniteTableGrid, { columnTypes: columnTypes, headerOptions: headerOptions, domProps: tableDOMProps, columns: columnsMap, columnPinning: showActionColumn ? { actions: 'end' } : undefined }) }));
94
+ };
@@ -1,3 +1,5 @@
1
- import { IRowNode } from 'ag-grid-enterprise';
2
- import { ActionColumnContext, AdaptableApi, AdaptableButton, DataChangeHistoryOptions } from '../../types';
3
- export declare const buildActionColumnButton: (options: DataChangeHistoryOptions, parentAdapTableApi: AdaptableApi, undoRowNode: (rowNode: IRowNode) => void, clearRow: (rowNode: IRowNode) => void) => AdaptableButton<ActionColumnContext<any>>[];
1
+ import { DataChangeHistoryContext } from '../../AdaptableOptions/DataChangeHistoryOptions';
2
+ import { AdaptableApi, AdaptableButton, DataChangeHistoryOptions } from '../../types';
3
+ import { DataChangeHistoryData } from './dataChangeHistoryHelpers';
4
+ export declare const buildDataChangeHistoryContext: (rowData: DataChangeHistoryData, parentAdapTableApi: AdaptableApi, onUndoChange: (changeKey: string) => void, onClearRow: (changeKey: string) => void) => DataChangeHistoryContext;
5
+ export declare const buildChangeHistoryButtons: (options: DataChangeHistoryOptions, parentAdapTableApi: AdaptableApi, onUndoChange: (changeKey: string) => void, onClearRow: (changeKey: string) => void) => AdaptableButton<DataChangeHistoryContext>[] | null;
@@ -1,5 +1,25 @@
1
- export const buildActionColumnButton = (options, parentAdapTableApi, undoRowNode, clearRow) => {
2
- let changeHistoryButtons = options.changeHistoryButton;
1
+ const STUB_ACTION_COLUMN = {
2
+ columnId: 'undoActionColumn',
3
+ actionColumnButton: [],
4
+ };
5
+ export const buildDataChangeHistoryContext = (rowData, parentAdapTableApi, onUndoChange, onClearRow) => {
6
+ const undoDataChange = () => onUndoChange(rowData.changeKey);
7
+ const clearRow = () => onClearRow(rowData.changeKey);
8
+ return {
9
+ actionColumn: STUB_ACTION_COLUMN,
10
+ primaryKeyValue: rowData.changeInfo.primaryKeyValue,
11
+ rowNode: undefined,
12
+ data: rowData,
13
+ ...parentAdapTableApi.internalApi.buildBaseContext(),
14
+ isGroupNode: false,
15
+ undoDataChange,
16
+ clearRow,
17
+ dataChangedInfo: rowData.changeInfo,
18
+ parentAdapTableApi,
19
+ };
20
+ };
21
+ export const buildChangeHistoryButtons = (options, parentAdapTableApi, onUndoChange, onClearRow) => {
22
+ let changeHistoryButtons = options?.changeHistoryButton;
3
23
  if (!changeHistoryButtons ||
4
24
  (Array.isArray(changeHistoryButtons) && changeHistoryButtons.length === 0)) {
5
25
  return null;
@@ -7,76 +27,47 @@ export const buildActionColumnButton = (options, parentAdapTableApi, undoRowNode
7
27
  if (!Array.isArray(changeHistoryButtons)) {
8
28
  changeHistoryButtons = [changeHistoryButtons];
9
29
  }
10
- const isGroupNode = (context) => context.adaptableApi.gridApi.isGroupRowNode(context.rowNode);
11
- const onUndo = (context) => {
12
- const rowNode = context.rowNode;
13
- if (context.adaptableApi.gridApi.isGroupRowNode(rowNode)) {
14
- // undo all children
15
- const childrenNodes = context.rowNode?.childrenAfterFilter;
16
- if (childrenNodes) {
17
- childrenNodes.forEach((childNode) => undoRowNode(childNode));
18
- }
19
- }
20
- else {
21
- undoRowNode(rowNode);
22
- }
23
- };
24
- const onClearRow = (context) => {
25
- const rowNode = context.rowNode;
26
- clearRow(rowNode);
27
- };
28
- const buildContext = (context) => {
29
- const dataChangedInfo = context.rowNode.data.changeInfo;
30
- return {
31
- ...context,
32
- isGroupNode: isGroupNode(context),
33
- undoDataChange: () => onUndo(context),
34
- clearRow: () => onClearRow(context),
35
- dataChangedInfo,
36
- parentAdapTableApi,
37
- };
38
- };
39
30
  return changeHistoryButtons.map((actionColumnOption) => ({
40
31
  label: (button, context) => {
41
32
  if (typeof actionColumnOption.label !== 'function') {
42
33
  return actionColumnOption.label;
43
34
  }
44
- return actionColumnOption.label(button, buildContext(context));
35
+ return actionColumnOption.label(button, context);
45
36
  },
46
37
  buttonStyle: (button, context) => {
47
38
  if (typeof actionColumnOption.buttonStyle !== 'function') {
48
39
  return actionColumnOption.buttonStyle;
49
40
  }
50
- return actionColumnOption.buttonStyle(button, buildContext(context));
41
+ return actionColumnOption.buttonStyle(button, context);
51
42
  },
52
43
  tooltip: (button, context) => {
53
44
  if (typeof actionColumnOption.tooltip !== 'function') {
54
45
  return actionColumnOption.tooltip;
55
46
  }
56
- return actionColumnOption.tooltip(button, buildContext(context));
47
+ return actionColumnOption.tooltip(button, context);
57
48
  },
58
49
  disabled: (button, context) => {
59
50
  if (typeof actionColumnOption.disabled !== 'function') {
60
51
  return actionColumnOption.disabled;
61
52
  }
62
- return actionColumnOption.disabled(button, buildContext(context));
53
+ return actionColumnOption.disabled(button, context);
63
54
  },
64
55
  onClick: (button, context) => {
65
56
  if (actionColumnOption.action === 'undo') {
66
- onUndo(buildContext(context));
57
+ context.undoDataChange();
67
58
  }
68
59
  if (actionColumnOption.action === 'clear') {
69
- onClearRow(buildContext(context));
60
+ context.clearRow();
70
61
  }
71
62
  if (typeof actionColumnOption.onClick === 'function') {
72
- actionColumnOption.onClick(button, buildContext(context));
63
+ actionColumnOption.onClick(button, context);
73
64
  }
74
65
  },
75
66
  hidden: (button, context) => {
76
67
  if (typeof actionColumnOption.hidden !== 'function') {
77
68
  return actionColumnOption.hidden;
78
69
  }
79
- return actionColumnOption.hidden(button, buildContext(context));
70
+ return actionColumnOption.hidden(button, context);
80
71
  },
81
72
  icon: actionColumnOption.icon,
82
73
  }));
@@ -0,0 +1,15 @@
1
+ import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
2
+ import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
3
+ export interface DataChangeHistoryData {
4
+ primaryKey: string;
5
+ changeKey: string;
6
+ changeTriggerLabel: string;
7
+ changedColumnLabel: string;
8
+ changeInfo: CellDataChangedInfo;
9
+ }
10
+ export declare const getColumnHeaderLabel: (columnId: string, mainAdaptableInstance: IAdaptable) => string;
11
+ export declare const getChangeTriggerLabel: (changeInfo: CellDataChangedInfo) => string;
12
+ export declare const isValidChangeHistoryLogEntry: (changeInfo: CellDataChangedInfo | undefined) => changeInfo is CellDataChangedInfo;
13
+ export declare const mapChangeHistoryRowData: (changeHistoryLog: Record<string, CellDataChangedInfo>, mainAdaptableInstance: IAdaptable) => DataChangeHistoryData[];
14
+ export declare const getChangeHistoryRowChangeInfo: (rowData: Partial<DataChangeHistoryData> | undefined) => CellDataChangedInfo | undefined;
15
+ export declare const formatChangeHistoryCellValue: (value: unknown) => string;
@@ -0,0 +1,37 @@
1
+ const headerMap = new Map();
2
+ export const getColumnHeaderLabel = (columnId, mainAdaptableInstance) => {
3
+ if (!headerMap.has(columnId)) {
4
+ headerMap.set(columnId, mainAdaptableInstance.api.columnApi.getColumnWithColumnId(columnId)?.friendlyName ?? columnId);
5
+ }
6
+ return headerMap.get(columnId);
7
+ };
8
+ export const getChangeTriggerLabel = (changeInfo) => {
9
+ return changeInfo.trigger === 'tick' ? 'Ticking' : 'User Edit';
10
+ };
11
+ export const isValidChangeHistoryLogEntry = (changeInfo) => {
12
+ return !!changeInfo?.column?.columnId && changeInfo.changedAt != null;
13
+ };
14
+ export const mapChangeHistoryRowData = (changeHistoryLog = {}, mainAdaptableInstance) => {
15
+ return Object.entries(changeHistoryLog)
16
+ .filter(([, changeInfo]) => isValidChangeHistoryLogEntry(changeInfo))
17
+ .map(([changeKey, changeInfo]) => ({
18
+ primaryKey: `${changeKey}::${changeInfo.changedAt}`,
19
+ changeKey,
20
+ changeTriggerLabel: getChangeTriggerLabel(changeInfo),
21
+ changedColumnLabel: getColumnHeaderLabel(changeInfo.column.columnId, mainAdaptableInstance),
22
+ changeInfo,
23
+ }))
24
+ .sort((a, b) => b.changeInfo.changedAt - a.changeInfo.changedAt);
25
+ };
26
+ export const getChangeHistoryRowChangeInfo = (rowData) => {
27
+ if (!isValidChangeHistoryLogEntry(rowData?.changeInfo)) {
28
+ return undefined;
29
+ }
30
+ return rowData.changeInfo;
31
+ };
32
+ export const formatChangeHistoryCellValue = (value) => {
33
+ if (value === null || value === undefined) {
34
+ return '';
35
+ }
36
+ return String(value);
37
+ };
@@ -65,7 +65,7 @@ export const DataImportWizard = (props) => {
65
65
  return columnsMap
66
66
  ? columnsMap.reduce((acc, colMap) => {
67
67
  if (colMap.include && !colMap.abColumn) {
68
- acc[colMap.field] = `Field ${colMap.field} does not have a coresponding column.`;
68
+ acc[colMap.field] = `Field ${colMap.field} does not have a corresponding column.`;
69
69
  }
70
70
  return acc;
71
71
  }, {})