@adaptabletools/adaptable-cjs 17.0.0-canary.4 → 18.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/base.css +62 -14
  2. package/base.css.map +1 -1
  3. package/index.css +267 -165
  4. package/index.css.map +1 -1
  5. package/package.json +5 -4
  6. package/src/AdaptableInterfaces/IAdaptable.d.ts +3 -0
  7. package/src/AdaptableOptions/AdaptableOptions.d.ts +5 -0
  8. package/src/AdaptableOptions/AlertOptions.d.ts +7 -7
  9. package/src/AdaptableOptions/ColumnFilterOptions.d.ts +9 -9
  10. package/src/AdaptableOptions/CommentsOptions.d.ts +28 -0
  11. package/src/AdaptableOptions/EditOptions.d.ts +6 -6
  12. package/src/AdaptableOptions/GridFilterOptions.d.ts +13 -8
  13. package/src/AdaptableOptions/GroupingOptions.d.ts +9 -9
  14. package/src/AdaptableOptions/InteropioPluginOptions.d.ts +10 -0
  15. package/src/AdaptableOptions/MenuOptions.d.ts +18 -4
  16. package/src/AdaptableOptions/MenuOptions.js +14 -6
  17. package/src/AdaptableOptions/NotesOptions.d.ts +2 -9
  18. package/src/Api/AdaptableApi.d.ts +6 -1
  19. package/src/Api/CommentApi.d.ts +58 -0
  20. package/src/Api/EventApi.d.ts +48 -12
  21. package/src/Api/Events/CalculatedColumnChanged.d.ts +19 -0
  22. package/src/Api/Events/CellSelectionChanged.d.ts +11 -0
  23. package/src/Api/Events/CommentsChangedInfo.d.ts +5 -0
  24. package/src/Api/Events/LiveDataChanged.d.ts +3 -3
  25. package/src/Api/Events/RowSelectionChanged.d.ts +11 -0
  26. package/src/Api/GridApi.d.ts +0 -6
  27. package/src/Api/GridFilterApi.d.ts +2 -2
  28. package/src/Api/Implementation/AdaptableApiImpl.d.ts +6 -6
  29. package/src/Api/Implementation/AdaptableApiImpl.js +2 -0
  30. package/src/Api/Implementation/CommentsApiImpl.d.ts +15 -0
  31. package/src/Api/Implementation/CommentsApiImpl.js +46 -0
  32. package/src/Api/Implementation/ExpressionApiImpl.d.ts +1 -1
  33. package/src/Api/Implementation/ExpressionApiImpl.js +3 -4
  34. package/src/Api/Implementation/GridApiImpl.d.ts +0 -1
  35. package/src/Api/Implementation/GridApiImpl.js +0 -4
  36. package/src/Api/Implementation/GridFilterApiImpl.d.ts +1 -1
  37. package/src/Api/Implementation/GridFilterApiImpl.js +1 -1
  38. package/src/Api/Implementation/NotesApiImpl.d.ts +2 -6
  39. package/src/Api/Implementation/NotesApiImpl.js +1 -15
  40. package/src/Api/Implementation/OptionsApiImpl.d.ts +2 -0
  41. package/src/Api/Implementation/OptionsApiImpl.js +3 -0
  42. package/src/Api/Implementation/PluginsApiImpl.d.ts +2 -6
  43. package/src/Api/Implementation/PluginsApiImpl.js +3 -15
  44. package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -12
  45. package/src/Api/Implementation/ScheduleApiImpl.js +0 -36
  46. package/src/Api/Implementation/ThemeApiImpl.d.ts +1 -0
  47. package/src/Api/Implementation/ThemeApiImpl.js +3 -0
  48. package/src/Api/Internal/ActionRowInternalApi.js +1 -1
  49. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  50. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  51. package/src/Api/Internal/CalculatedColumnInternalApi.d.ts +2 -0
  52. package/src/Api/Internal/CalculatedColumnInternalApi.js +16 -0
  53. package/src/Api/Internal/DashboardInternalApi.d.ts +1 -0
  54. package/src/Api/Internal/DashboardInternalApi.js +5 -0
  55. package/src/Api/Internal/DataImportInternalApi.js +2 -0
  56. package/src/Api/Internal/DataSetInternalApi.js +2 -1
  57. package/src/Api/Internal/GridInternalApi.d.ts +3 -1
  58. package/src/Api/Internal/GridInternalApi.js +32 -9
  59. package/src/Api/Internal/LayoutInternalApi.d.ts +2 -2
  60. package/src/Api/Internal/LayoutInternalApi.js +11 -11
  61. package/src/Api/InteropioPluginApi.d.ts +10 -0
  62. package/src/Api/{NotesAPi.d.ts → NotesApi.d.ts} +19 -21
  63. package/src/Api/OptionsApi.d.ts +5 -0
  64. package/src/Api/PluginsApi.d.ts +3 -13
  65. package/src/Api/ScheduleApi.d.ts +1 -48
  66. package/src/Api/ThemeApi.d.ts +5 -0
  67. package/src/PredefinedConfig/AdaptableState.d.ts +4 -2
  68. package/src/PredefinedConfig/CellAddress.d.ts +13 -0
  69. package/src/PredefinedConfig/CellAddress.js +5 -0
  70. package/src/PredefinedConfig/CommentState.d.ts +48 -0
  71. package/src/PredefinedConfig/CommentState.js +2 -0
  72. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  73. package/src/PredefinedConfig/Common/AdaptablePredicate.js +2 -1
  74. package/src/PredefinedConfig/Common/Enums.d.ts +0 -1
  75. package/src/PredefinedConfig/Common/Enums.js +0 -1
  76. package/src/PredefinedConfig/Common/Schedule.d.ts +1 -1
  77. package/src/PredefinedConfig/Common/Types.d.ts +5 -5
  78. package/src/PredefinedConfig/Common/Types.js +0 -2
  79. package/src/PredefinedConfig/NotesState.d.ts +0 -13
  80. package/src/PredefinedConfig/PredefinedConfig.d.ts +3 -0
  81. package/src/PredefinedConfig/ScheduleState.d.ts +0 -5
  82. package/src/PredefinedConfig/SystemState.d.ts +5 -6
  83. package/src/PredefinedConfig/ThemeState.d.ts +1 -1
  84. package/src/Redux/ActionsReducers/CommentsRedux.d.ts +79 -0
  85. package/src/Redux/ActionsReducers/CommentsRedux.js +189 -0
  86. package/src/Redux/ActionsReducers/NotesRedux.js +1 -2
  87. package/src/Redux/ActionsReducers/PluginsRedux.d.ts +0 -48
  88. package/src/Redux/ActionsReducers/PluginsRedux.js +1 -49
  89. package/src/Redux/ActionsReducers/PlusMinusRedux.d.ts +16 -0
  90. package/src/Redux/ActionsReducers/PlusMinusRedux.js +47 -1
  91. package/src/Redux/ActionsReducers/ScheduleRedux.d.ts +0 -53
  92. package/src/Redux/ActionsReducers/ScheduleRedux.js +2 -90
  93. package/src/Redux/ActionsReducers/SystemRedux.d.ts +23 -12
  94. package/src/Redux/ActionsReducers/SystemRedux.js +55 -23
  95. package/src/Redux/Store/AdaptableStore.d.ts +2 -2
  96. package/src/Redux/Store/AdaptableStore.js +107 -46
  97. package/src/Strategy/CommentsModule.d.ts +16 -0
  98. package/src/Strategy/CommentsModule.js +82 -0
  99. package/src/Strategy/LayoutModule.d.ts +12 -4
  100. package/src/Strategy/LayoutModule.js +19 -14
  101. package/src/Strategy/NotesModule.d.ts +0 -13
  102. package/src/Strategy/NotesModule.js +9 -88
  103. package/src/Strategy/PlusMinusModule.js +2 -0
  104. package/src/Strategy/ScheduleModule.js +0 -23
  105. package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +2 -1
  106. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +14 -5
  107. package/src/Strategy/Utilities/getExpressionViewItems.js +8 -2
  108. package/src/Utilities/Constants/ConfigConstants.d.ts +1 -0
  109. package/src/Utilities/Constants/ConfigConstants.js +2 -1
  110. package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
  111. package/src/Utilities/Constants/GeneralConstants.js +8 -3
  112. package/src/Utilities/Constants/ModuleConstants.d.ts +3 -3
  113. package/src/Utilities/Constants/ModuleConstants.js +4 -4
  114. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +3 -3
  115. package/src/Utilities/Defaults/DefaultSettingsPanel.js +1 -0
  116. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +7 -1
  117. package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +6 -0
  118. package/src/Utilities/ExpressionFunctions/dateUtils.d.ts +1 -0
  119. package/src/Utilities/ExpressionFunctions/dateUtils.js +18 -1
  120. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
  121. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +12 -12
  122. package/src/Utilities/Extensions/ArrayExtensions.d.ts +2 -0
  123. package/src/Utilities/Extensions/ArrayExtensions.js +8 -1
  124. package/src/Utilities/Helpers/PreviewHelper.js +5 -2
  125. package/src/Utilities/ObjectFactory.d.ts +19 -22
  126. package/src/Utilities/ObjectFactory.js +51 -60
  127. package/src/Utilities/Services/CellPopupService.d.ts +23 -0
  128. package/src/Utilities/Services/CellPopupService.js +138 -0
  129. package/src/Utilities/Services/Interface/IReportService.d.ts +1 -1
  130. package/src/Utilities/Services/Interface/IThemeService.d.ts +8 -0
  131. package/src/Utilities/Services/ModuleService.js +1 -3
  132. package/src/Utilities/Services/ReportService.d.ts +1 -1
  133. package/src/Utilities/Services/ThemeService.d.ts +3 -0
  134. package/src/Utilities/Services/ThemeService.js +33 -1
  135. package/src/Utilities/Services/ValidationService.js +11 -11
  136. package/src/View/AdaptableView.js +3 -3
  137. package/src/View/AdaptableViewFactory.js +4 -2
  138. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +2 -2
  139. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +1 -1
  140. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/FinanceForm.js +1 -1
  141. package/src/View/Alert/Wizard/AlertButtonsEditor.js +2 -2
  142. package/src/View/Alert/Wizard/AlertRulesWizardSection.d.ts +1 -1
  143. package/src/View/Alert/Wizard/AlertRulesWizardSection.js +4 -3
  144. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -1
  145. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +1 -1
  146. package/src/View/Charting/useChartingElements.js +8 -3
  147. package/src/View/Comments/CommentsEditor.d.ts +7 -0
  148. package/src/View/Comments/CommentsEditor.js +100 -0
  149. package/src/View/Comments/CommentsPopup.d.ts +2 -0
  150. package/src/View/Comments/CommentsPopup.js +87 -0
  151. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +2 -1
  152. package/src/View/Components/CellPopup/index.js +1 -1
  153. package/src/View/Components/FilterForm/FilterForm.js +8 -2
  154. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -3
  155. package/src/View/Components/FilterForm/QuickFilterForm.js +5 -4
  156. package/src/View/Components/FilterForm/QuickFilterValues.d.ts +2 -2
  157. package/src/View/Components/FilterForm/QuickFilterValues.js +4 -3
  158. package/src/View/Components/Popups/GridCellPopup/GridCellPopup.d.ts +5 -0
  159. package/src/View/Components/Popups/GridCellPopup/GridCellPopup.js +67 -0
  160. package/src/View/Components/Popups/GridCellPopup/index.d.ts +1 -0
  161. package/src/View/Components/Popups/GridCellPopup/index.js +5 -0
  162. package/src/View/Components/Selectors/ColumnSelector.d.ts +1 -0
  163. package/src/View/Components/Selectors/ColumnSelector.js +2 -1
  164. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +5 -4
  165. package/src/View/Components/Selectors/PermittedValuesSelector.js +25 -3
  166. package/src/View/Components/ToolPanel/ToolPanelWrapper.js +1 -4
  167. package/src/View/Dashboard/ModuleToolbarWrapper.js +1 -1
  168. package/src/View/Dashboard/PinnedDashboard.js +2 -1
  169. package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +2 -2
  170. package/src/View/Export/Wizard/ReportRowsWizardSection.js +3 -1
  171. package/src/View/GridFilter/GridFilterExpressionEditor.js +1 -1
  172. package/src/View/GridFilter/GridFilterPopup.js +10 -8
  173. package/src/View/GridFilter/GridFilterViewPanel.js +14 -11
  174. package/src/View/GridFilter/NamedQuerySelector.js +1 -1
  175. package/src/View/GridFilter/useGridFilterExpressionEditor.d.ts +3 -0
  176. package/src/View/GridFilter/useGridFilterExpressionEditor.js +17 -6
  177. package/src/View/GridFilter/useGridFilterOptionsForExpressionEditor.js +5 -23
  178. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +3 -2
  179. package/src/View/Layout/Wizard/getGridFilterPreview.d.ts +6 -0
  180. package/src/View/Layout/Wizard/getGridFilterPreview.js +16 -0
  181. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  182. package/src/View/Layout/Wizard/sections/GridFilterSection.js +4 -4
  183. package/src/View/NamedQuery/EditCurrentQueryButton.js +1 -1
  184. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
  185. package/src/View/Notes/NoteEditor.d.ts +8 -0
  186. package/src/View/Notes/NoteEditor.js +33 -0
  187. package/src/View/Notes/NotesPopup.d.ts +2 -2
  188. package/src/View/Notes/NotesPopup.js +78 -55
  189. package/src/View/PlusMinus/MovePlusMinus.d.ts +7 -0
  190. package/src/View/PlusMinus/MovePlusMinus.js +27 -0
  191. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +0 -9
  192. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +0 -4
  193. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +2 -8
  194. package/src/View/Schedule/Wizard/ScheduleWizard.js +0 -8
  195. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +3 -1
  196. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -2
  197. package/src/agGrid/Adaptable.d.ts +7 -0
  198. package/src/agGrid/Adaptable.js +49 -35
  199. package/src/agGrid/BadgeRenderer.js +9 -5
  200. package/src/agGrid/agGridHelper.d.ts +2 -1
  201. package/src/agGrid/agGridHelper.js +15 -3
  202. package/src/agGrid/agGridMenuHelper.d.ts +2 -0
  203. package/src/agGrid/agGridMenuHelper.js +73 -25
  204. package/src/components/Datepicker/index.js +4 -4
  205. package/src/components/ExpressionEditor/ExpressionPreview.d.ts +7 -0
  206. package/src/components/ExpressionEditor/ExpressionPreview.js +25 -0
  207. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.js +2 -2
  208. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +6 -0
  209. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +40 -11
  210. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +14 -2
  211. package/src/components/ExpressionEditor/QueryBuilder/booleanExpressions.js +1 -0
  212. package/src/components/ExpressionEditor/QueryBuilder/utils.js +1 -1
  213. package/src/components/ExpressionEditor/index.js +4 -7
  214. package/src/components/InputGroup/InputGroup.d.ts +7 -0
  215. package/src/components/InputGroup/InputGroup.js +12 -0
  216. package/src/components/InputGroup/index.d.ts +1 -0
  217. package/src/components/InputGroup/index.js +4 -0
  218. package/src/components/OverlayTrigger/index.js +7 -2
  219. package/src/components/Select/Select.d.ts +1 -2
  220. package/src/components/Select/Select.js +63 -23
  221. package/src/components/Toastify/index.d.ts +2 -2
  222. package/src/components/Toastify/index.js +1 -1
  223. package/src/components/icons/comments.d.ts +3 -0
  224. package/src/components/icons/comments.js +7 -0
  225. package/src/components/icons/index.js +3 -1
  226. package/src/env.d.ts +3 -1
  227. package/src/env.js +3 -1
  228. package/src/metamodel/adaptable.metamodel.d.ts +72 -158
  229. package/src/metamodel/adaptable.metamodel.js +128 -260
  230. package/src/parser/src/parser.d.ts +2 -0
  231. package/src/parser/src/parser.js +1880 -705
  232. package/src/parser/src/predicate/mapQlPredicateToExpression.js +5 -2
  233. package/src/parser/src/predicate/types.d.ts +1 -1
  234. package/src/parser/src/types.d.ts +1 -1
  235. package/src/renderReactRoot.js +15 -0
  236. package/src/themes/index.js +4 -0
  237. package/src/types.d.ts +10 -13
  238. package/themes/dark.css +3 -3
  239. package/tsconfig.cjs.tsbuildinfo +1 -1
  240. package/src/AdaptableOptions/FinsemblePluginOptions.d.ts +0 -35
  241. package/src/AdaptableOptions/Glue42PluginOptions.d.ts +0 -25
  242. package/src/AdaptableOptions/Glue42WebPluginOptions.d.ts +0 -10
  243. package/src/Api/Events/SelectionChanged.d.ts +0 -16
  244. package/src/Api/FinsembleApi.d.ts +0 -10
  245. package/src/Api/Glue42Api.d.ts +0 -75
  246. package/src/Api/Glue42WebApi.d.ts +0 -10
  247. package/src/PredefinedConfig/Glue42State.d.ts +0 -46
  248. package/src/View/Notes/NotesListing.d.ts +0 -2
  249. package/src/View/Notes/NotesListing.js +0 -88
  250. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsGlue42.d.ts +0 -9
  251. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsGlue42.js +0 -25
  252. package/src/bundle-dependencies/bundles/react-toastify/components/CloseButton.d.ts +0 -9
  253. package/src/bundle-dependencies/bundles/react-toastify/components/Icons.d.ts +0 -24
  254. package/src/bundle-dependencies/bundles/react-toastify/components/ProgressBar.d.ts +0 -59
  255. package/src/bundle-dependencies/bundles/react-toastify/components/Toast.d.ts +0 -3
  256. package/src/bundle-dependencies/bundles/react-toastify/components/ToastContainer.d.ts +0 -3
  257. package/src/bundle-dependencies/bundles/react-toastify/components/Transitions.d.ts +0 -6
  258. package/src/bundle-dependencies/bundles/react-toastify/components/index.d.ts +0 -6
  259. package/src/bundle-dependencies/bundles/react-toastify/core/eventManager.d.ts +0 -39
  260. package/src/bundle-dependencies/bundles/react-toastify/core/index.d.ts +0 -2
  261. package/src/bundle-dependencies/bundles/react-toastify/core/toast.d.ts +0 -41
  262. package/src/bundle-dependencies/bundles/react-toastify/hooks/index.d.ts +0 -2
  263. package/src/bundle-dependencies/bundles/react-toastify/hooks/useToast.d.ts +0 -10
  264. package/src/bundle-dependencies/bundles/react-toastify/hooks/useToastContainer.d.ts +0 -23
  265. package/src/bundle-dependencies/bundles/react-toastify/index.d.ts +0 -5
  266. package/src/bundle-dependencies/bundles/react-toastify/index.js +0 -1
  267. package/src/bundle-dependencies/bundles/react-toastify/inject-style.d.ts +0 -8
  268. package/src/bundle-dependencies/bundles/react-toastify/types/index.d.ts +0 -269
  269. package/src/bundle-dependencies/bundles/react-toastify/utils/collapseToast.d.ts +0 -5
  270. package/src/bundle-dependencies/bundles/react-toastify/utils/constant.d.ts +0 -23
  271. package/src/bundle-dependencies/bundles/react-toastify/utils/cssTransition.d.ts +0 -43
  272. package/src/bundle-dependencies/bundles/react-toastify/utils/index.d.ts +0 -5
  273. package/src/bundle-dependencies/bundles/react-toastify/utils/mapper.d.ts +0 -2
  274. package/src/bundle-dependencies/bundles/react-toastify/utils/propValidator.d.ts +0 -9
  275. /package/src/AdaptableOptions/{FinsemblePluginOptions.js → CommentsOptions.js} +0 -0
  276. /package/src/AdaptableOptions/{Glue42PluginOptions.js → InteropioPluginOptions.js} +0 -0
  277. /package/src/{AdaptableOptions/Glue42WebPluginOptions.js → Api/CommentApi.js} +0 -0
  278. /package/src/Api/Events/{SelectionChanged.js → CalculatedColumnChanged.js} +0 -0
  279. /package/src/Api/{FinsembleApi.js → Events/CellSelectionChanged.js} +0 -0
  280. /package/src/Api/{Glue42Api.js → Events/CommentsChangedInfo.js} +0 -0
  281. /package/src/Api/{Glue42WebApi.js → Events/RowSelectionChanged.js} +0 -0
  282. /package/src/Api/Internal/{ExpressionnternalApi.d.ts → ExpressionInternalApi.d.ts} +0 -0
  283. /package/src/Api/Internal/{ExpressionnternalApi.js → ExpressionInternalApi.js} +0 -0
  284. /package/src/Api/{NotesAPi.js → InteropioPluginApi.js} +0 -0
  285. /package/src/{PredefinedConfig/Glue42State.js → Api/NotesApi.js} +0 -0
@@ -1,33 +1,33 @@
1
- import { ScheduleType } from '../PredefinedConfig/Common/Enums';
2
- import { CustomSort } from '../PredefinedConfig/CustomSortState';
3
- import { CalculatedColumn } from '../PredefinedConfig/CalculatedColumnState';
4
- import { PlusMinusNudge } from '../PredefinedConfig/PlusMinusState';
5
1
  import { AlertDefinition, AlertProperties } from '../PredefinedConfig/AlertState';
6
- import { Layout } from '../PredefinedConfig/LayoutState';
7
- import { Report, ReportSchedule } from '../PredefinedConfig/ExportState';
2
+ import { CalculatedColumn } from '../PredefinedConfig/CalculatedColumnState';
3
+ import { AdaptableCellChangedAlert, AdaptableGenericAlert, AdaptableRowChangedAlert } from '../PredefinedConfig/Common/AdaptableAlert';
8
4
  import { AdaptableColumn } from '../PredefinedConfig/Common/AdaptableColumn';
5
+ import { AdaptableMessageType } from '../PredefinedConfig/Common/AdaptableMessageType';
6
+ import { AdaptableStyle } from '../PredefinedConfig/Common/AdaptableStyle';
7
+ import { CellDataChangedInfo } from '../PredefinedConfig/Common/CellDataChangedInfo';
8
+ import { ScheduleType } from '../PredefinedConfig/Common/Enums';
9
9
  import { BaseSchedule, Schedule } from '../PredefinedConfig/Common/Schedule';
10
- import { Shortcut } from '../PredefinedConfig/ShortcutState';
10
+ import { SystemStatusMessageInfo } from '../PredefinedConfig/Common/SystemStatusMessageInfo';
11
+ import { CustomSort } from '../PredefinedConfig/CustomSortState';
12
+ import { Report, ReportSchedule } from '../PredefinedConfig/ExportState';
11
13
  import { FormatColumn } from '../PredefinedConfig/FormatColumnState';
12
14
  import { FreeTextColumn } from '../PredefinedConfig/FreeTextColumnState';
13
- import { AdaptableStyle } from '../PredefinedConfig/Common/AdaptableStyle';
14
- import { CellDataChangedInfo } from '../PredefinedConfig/Common/CellDataChangedInfo';
15
- import { Glue42Report, Glue42Schedule } from '../PredefinedConfig/Glue42State';
16
- import { IPushPullReport } from '../PredefinedConfig/SystemState';
17
15
  import { IPushPullSchedule } from '../PredefinedConfig/IPushPullState';
16
+ import { Layout } from '../PredefinedConfig/LayoutState';
18
17
  import { OpenFinReport, OpenFinSchedule } from '../PredefinedConfig/OpenFinState';
18
+ import { PlusMinusNudge } from '../PredefinedConfig/PlusMinusState';
19
19
  import { ReminderSchedule } from '../PredefinedConfig/ScheduleState';
20
- import { AdaptableCellChangedAlert, AdaptableGenericAlert, AdaptableRowChangedAlert } from '../PredefinedConfig/Common/AdaptableAlert';
21
- import { AdaptableMessageType } from '../PredefinedConfig/Common/AdaptableMessageType';
22
- import { SystemStatusMessageInfo } from '../PredefinedConfig/Common/SystemStatusMessageInfo';
20
+ import { Shortcut } from '../PredefinedConfig/ShortcutState';
21
+ import { IPushPullReport } from '../PredefinedConfig/SystemState';
23
22
  import { NotificationsOptions } from '../AdaptableOptions/NotificationsOptions';
24
23
  import { CellSummmary } from '../PredefinedConfig/Common/CellSummary';
25
- import { AdaptableTheme, BaseContext, ChartDefinition, ColumnFilter, CustomDisplayFormatterContext, FlashingCellDefinition, GridDataChangedInfo, SystemFilterPredicateId } from '../types';
24
+ import { AdaptableTheme, BaseContext, ChartDefinition, ColumnFilter, CommentThread, CustomDisplayFormatterContext, FlashingCellDefinition, GridDataChangedInfo, SystemFilterPredicateId } from '../types';
26
25
  import { IRowNode } from '@ag-grid-community/core';
27
- import { AdaptableApi, BadgeStyleDefinition, NamedQuery } from '../../types';
26
+ import { AdaptableApi, AdaptableComment, BadgeStyleDefinition, CellAddress, NamedQuery } from '../../types';
28
27
  import { ToastOptions } from '../components/Toastify';
29
28
  import { StyledColumn } from '../PredefinedConfig/StyledColumnState';
30
29
  export declare function CreateEmptyCustomSort(): CustomSort;
30
+ export declare function CreateAdaptableComment(text: string, api: AdaptableApi): AdaptableComment;
31
31
  export declare function CreateEmptyCalculatedColumn(): CalculatedColumn;
32
32
  export declare function CreateEmptyNamedQuery(expression?: string): NamedQuery;
33
33
  export declare function CreateEmptyPlusMinusNudge(): PlusMinusNudge;
@@ -43,13 +43,10 @@ export declare function CreateEmptyBaseSchedule(scheduleType: ScheduleType): Bas
43
43
  export declare function CreateEmptyReminderSchedule(): ReminderSchedule;
44
44
  export declare function CreateEmptyReportSchedule(): ReportSchedule;
45
45
  export declare function CreateEmptyIPushPullReport(): IPushPullReport;
46
- export declare function CreateEmptyGlue42Report(): Glue42Report;
47
46
  export declare function CreateEmptyOpenFinReport(): OpenFinReport;
48
47
  export declare function CreateEmptyIPushPullSchedule(): IPushPullSchedule;
49
- export declare function CreateEmptyGlue42Schedule(): Glue42Schedule;
50
48
  export declare function CreateEmptyOpenFinSchedule(): OpenFinSchedule;
51
49
  export declare function CreateIPushPullSchedule(iPushPullReport: IPushPullReport): IPushPullSchedule;
52
- export declare function CreateGlue42Schedule(glue42Report: Glue42Report): Glue42Schedule;
53
50
  export declare function CreateReportSchedule(reportName: string): ReportSchedule;
54
51
  export declare function CreateEmptySchedule(): Schedule;
55
52
  export declare function CreateEmptyShortcut(): Shortcut;
@@ -68,6 +65,7 @@ export declare function CreateEmptyChartDefinition(chartDefinition?: ChartDefini
68
65
  export declare function CreateCustomDisplayFormatterContext(value: any, node: IRowNode, abColumn: AdaptableColumn, api: AdaptableApi): CustomDisplayFormatterContext;
69
66
  export declare const createBaseContext: (adaptableApi: AdaptableApi) => BaseContext;
70
67
  export declare function CreateEmptyTheme(name?: string): AdaptableTheme;
68
+ export declare function CreateEmptyCommentThread(cellAddress: CellAddress): CommentThread;
71
69
  export declare function CreateToastOptions(notificationsOptions: NotificationsOptions, { onClose, containerId }: {
72
70
  onClose?: VoidFunction;
73
71
  containerId: string;
@@ -93,7 +91,6 @@ export declare const ObjectFactory: {
93
91
  CreateEmptyIPushPullSchedule: typeof CreateEmptyIPushPullSchedule;
94
92
  CreateEmptyIPushPullReport: typeof CreateEmptyIPushPullReport;
95
93
  CreateIPushPullSchedule: typeof CreateIPushPullSchedule;
96
- CreateGlue42Schedule: typeof CreateGlue42Schedule;
97
94
  CreateReportSchedule: typeof CreateReportSchedule;
98
95
  CreateEmptyOpenFinReport: typeof CreateEmptyOpenFinReport;
99
96
  CreateEmptyOpenFinSchedule: typeof CreateEmptyOpenFinSchedule;
@@ -105,8 +102,6 @@ export declare const ObjectFactory: {
105
102
  CreateColumnFilter: typeof CreateColumnFilter;
106
103
  CreateEmptyStyle: typeof CreateEmptyStyle;
107
104
  CreateEmptyCellSummmary: typeof CreateEmptyCellSummmary;
108
- CreateEmptyGlue42Schedule: typeof CreateEmptyGlue42Schedule;
109
- CreateEmptyGlue42Report: typeof CreateEmptyGlue42Report;
110
105
  CreateSystemStatusMessageInfo: typeof CreateSystemStatusMessageInfo;
111
106
  CreateToastOptions: typeof CreateToastOptions;
112
107
  CreateCustomDisplayFormatterContext: typeof CreateCustomDisplayFormatterContext;
@@ -114,5 +109,7 @@ export declare const ObjectFactory: {
114
109
  CreateDefaultStyledColumnBadge: typeof CreateDefaultStyledColumnBadge;
115
110
  CreateEmptyChartDefinition: typeof CreateEmptyChartDefinition;
116
111
  CreateEmptyTheme: typeof CreateEmptyTheme;
112
+ CreateEmptyCommentThread: typeof CreateEmptyCommentThread;
113
+ CreateAdaptableComment: typeof CreateAdaptableComment;
117
114
  };
118
115
  export default ObjectFactory;
@@ -1,15 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectFactory = exports.CreateToastOptions = exports.CreateEmptyTheme = exports.createBaseContext = exports.CreateCustomDisplayFormatterContext = exports.CreateEmptyChartDefinition = exports.CreateDefaultStyledColumnBadge = exports.CreateEmptyStyledColumn = exports.CreateColumnFilter = exports.CreateEmptyCellSummmary = exports.CreateSystemStatusMessageInfo = exports.CreateEmptyStyle = exports.CreateEmptyLayout = exports.CreateEmptyFreeTextColumn = exports.CreateEmptyFormatColumn = exports.CreateEmptyShortcut = exports.CreateEmptySchedule = exports.CreateReportSchedule = exports.CreateGlue42Schedule = exports.CreateIPushPullSchedule = exports.CreateEmptyOpenFinSchedule = exports.CreateEmptyGlue42Schedule = exports.CreateEmptyIPushPullSchedule = exports.CreateEmptyOpenFinReport = exports.CreateEmptyGlue42Report = exports.CreateEmptyIPushPullReport = exports.CreateEmptyReportSchedule = exports.CreateEmptyReminderSchedule = exports.CreateEmptyBaseSchedule = exports.CreateExternalReport = exports.CreateEmptyReport = exports.CreateInternalAlertDefinitionForMessages = exports.CreateEmptyFlashingCellDefinition = exports.CreateEmptyAlertDefinition = exports.CreateRowChangedAlert = exports.CreateCellChangedAlert = exports.CreateGenericAlert = exports.CreateEmptyPlusMinusNudge = exports.CreateEmptyNamedQuery = exports.CreateEmptyCalculatedColumn = exports.CreateEmptyCustomSort = void 0;
3
+ exports.ObjectFactory = exports.CreateToastOptions = exports.CreateEmptyCommentThread = exports.CreateEmptyTheme = exports.createBaseContext = exports.CreateCustomDisplayFormatterContext = exports.CreateEmptyChartDefinition = exports.CreateDefaultStyledColumnBadge = exports.CreateEmptyStyledColumn = exports.CreateColumnFilter = exports.CreateEmptyCellSummmary = exports.CreateSystemStatusMessageInfo = exports.CreateEmptyStyle = exports.CreateEmptyLayout = exports.CreateEmptyFreeTextColumn = exports.CreateEmptyFormatColumn = exports.CreateEmptyShortcut = exports.CreateEmptySchedule = exports.CreateReportSchedule = exports.CreateIPushPullSchedule = exports.CreateEmptyOpenFinSchedule = exports.CreateEmptyIPushPullSchedule = exports.CreateEmptyOpenFinReport = exports.CreateEmptyIPushPullReport = exports.CreateEmptyReportSchedule = exports.CreateEmptyReminderSchedule = exports.CreateEmptyBaseSchedule = exports.CreateExternalReport = exports.CreateEmptyReport = exports.CreateInternalAlertDefinitionForMessages = exports.CreateEmptyFlashingCellDefinition = exports.CreateEmptyAlertDefinition = exports.CreateRowChangedAlert = exports.CreateCellChangedAlert = exports.CreateGenericAlert = exports.CreateEmptyPlusMinusNudge = exports.CreateEmptyNamedQuery = exports.CreateEmptyCalculatedColumn = exports.CreateAdaptableComment = exports.CreateEmptyCustomSort = void 0;
4
4
  const Enums_1 = require("../PredefinedConfig/Common/Enums");
5
- const GeneralConstants_1 = require("./Constants/GeneralConstants");
6
5
  const Uuid_1 = require("../PredefinedConfig/Uuid");
6
+ const GeneralConstants_1 = require("./Constants/GeneralConstants");
7
7
  const Toastify_1 = require("../components/Toastify");
8
8
  const UIHelper_1 = require("../View/UIHelper");
9
9
  function CreateEmptyCustomSort() {
10
10
  return { Uuid: (0, Uuid_1.createUuid)(), ColumnId: GeneralConstants_1.EMPTY_STRING, SortedValues: [] };
11
11
  }
12
12
  exports.CreateEmptyCustomSort = CreateEmptyCustomSort;
13
+ function CreateAdaptableComment(text, api) {
14
+ const comment = {
15
+ Value: text,
16
+ AdaptableId: api.optionsApi.getAdaptableId(),
17
+ Author: {
18
+ UserName: api.optionsApi.getUserName(),
19
+ },
20
+ Timestamp: Date.now(),
21
+ Uuid: (0, Uuid_1.createUuid)(),
22
+ };
23
+ return comment;
24
+ }
25
+ exports.CreateAdaptableComment = CreateAdaptableComment;
13
26
  function CreateEmptyCalculatedColumn() {
14
27
  return {
15
28
  Uuid: (0, Uuid_1.createUuid)(),
@@ -184,13 +197,6 @@ function CreateEmptyIPushPullReport() {
184
197
  };
185
198
  }
186
199
  exports.CreateEmptyIPushPullReport = CreateEmptyIPushPullReport;
187
- function CreateEmptyGlue42Report() {
188
- return {
189
- Uuid: (0, Uuid_1.createUuid)(),
190
- ReportName: GeneralConstants_1.EMPTY_STRING,
191
- };
192
- }
193
- exports.CreateEmptyGlue42Report = CreateEmptyGlue42Report;
194
200
  function CreateEmptyOpenFinReport() {
195
201
  return {
196
202
  Uuid: (0, Uuid_1.createUuid)(),
@@ -208,16 +214,6 @@ function CreateEmptyIPushPullSchedule() {
208
214
  };
209
215
  }
210
216
  exports.CreateEmptyIPushPullSchedule = CreateEmptyIPushPullSchedule;
211
- function CreateEmptyGlue42Schedule() {
212
- return {
213
- Uuid: (0, Uuid_1.createUuid)(),
214
- ScheduleType: Enums_1.ScheduleType.Glue42,
215
- Schedule: CreateEmptySchedule(),
216
- Glue42Report: CreateEmptyGlue42Report(),
217
- Transmission: 'Snapshot',
218
- };
219
- }
220
- exports.CreateEmptyGlue42Schedule = CreateEmptyGlue42Schedule;
221
217
  function CreateEmptyOpenFinSchedule() {
222
218
  return {
223
219
  Uuid: (0, Uuid_1.createUuid)(),
@@ -238,16 +234,6 @@ function CreateIPushPullSchedule(iPushPullReport) {
238
234
  };
239
235
  }
240
236
  exports.CreateIPushPullSchedule = CreateIPushPullSchedule;
241
- function CreateGlue42Schedule(glue42Report) {
242
- return {
243
- Uuid: (0, Uuid_1.createUuid)(),
244
- ScheduleType: Enums_1.ScheduleType.Glue42,
245
- Schedule: CreateEmptySchedule(),
246
- Glue42Report: glue42Report,
247
- Transmission: 'Snapshot',
248
- };
249
- }
250
- exports.CreateGlue42Schedule = CreateGlue42Schedule;
251
237
  function CreateReportSchedule(reportName) {
252
238
  return {
253
239
  Uuid: (0, Uuid_1.createUuid)(),
@@ -411,6 +397,40 @@ function CreateEmptyTheme(name) {
411
397
  };
412
398
  }
413
399
  exports.CreateEmptyTheme = CreateEmptyTheme;
400
+ function CreateEmptyCommentThread(cellAddress) {
401
+ return Object.assign(Object.assign({}, cellAddress), { Comments: [] });
402
+ }
403
+ exports.CreateEmptyCommentThread = CreateEmptyCommentThread;
404
+ function getToastPosition(position) {
405
+ switch (position) {
406
+ case 'BottomLeft':
407
+ return 'bottom-left';
408
+ case 'BottomCenter':
409
+ return 'bottom-center';
410
+ case 'BottomRight':
411
+ return 'bottom-right';
412
+ case 'TopLeft':
413
+ return 'top-left';
414
+ case 'TopCenter':
415
+ return 'top-center';
416
+ case 'TopRight':
417
+ return 'top-right';
418
+ }
419
+ }
420
+ function getToastTransition(transition) {
421
+ switch (transition) {
422
+ case 'Bounce':
423
+ return Toastify_1.Bounce;
424
+ case 'Slide':
425
+ return Toastify_1.Slide;
426
+ case 'Zoom':
427
+ return Toastify_1.Zoom;
428
+ case 'Flip':
429
+ return Toastify_1.Flip;
430
+ default:
431
+ return Toastify_1.Bounce;
432
+ }
433
+ }
414
434
  function CreateToastOptions(notificationsOptions, { onClose, containerId }, overides) {
415
435
  var _a;
416
436
  const adaptableToastPosition = notificationsOptions.position;
@@ -437,34 +457,6 @@ function CreateToastOptions(notificationsOptions, { onClose, containerId }, over
437
457
  return toastProps;
438
458
  }
439
459
  exports.CreateToastOptions = CreateToastOptions;
440
- function getToastPosition(position) {
441
- switch (position) {
442
- case 'BottomLeft':
443
- return Toastify_1.toast.POSITION.BOTTOM_LEFT;
444
- case 'BottomCenter':
445
- return Toastify_1.toast.POSITION.BOTTOM_CENTER;
446
- case 'BottomRight':
447
- return Toastify_1.toast.POSITION.BOTTOM_RIGHT;
448
- case 'TopLeft':
449
- return Toastify_1.toast.POSITION.TOP_LEFT;
450
- case 'TopCenter':
451
- return Toastify_1.toast.POSITION.TOP_CENTER;
452
- case 'TopRight':
453
- return Toastify_1.toast.POSITION.TOP_RIGHT;
454
- }
455
- }
456
- function getToastTransition(transition) {
457
- switch (transition) {
458
- case 'Bounce':
459
- return Toastify_1.Bounce;
460
- case 'Slide':
461
- return Toastify_1.Slide;
462
- case 'Zoom':
463
- return Toastify_1.Zoom;
464
- case 'Flip':
465
- return Toastify_1.Flip;
466
- }
467
- }
468
460
  exports.ObjectFactory = {
469
461
  CreateEmptyCustomSort,
470
462
  CreateEmptyCalculatedColumn,
@@ -484,7 +476,6 @@ exports.ObjectFactory = {
484
476
  CreateEmptyIPushPullSchedule,
485
477
  CreateEmptyIPushPullReport,
486
478
  CreateIPushPullSchedule,
487
- CreateGlue42Schedule,
488
479
  CreateReportSchedule,
489
480
  CreateEmptyOpenFinReport,
490
481
  CreateEmptyOpenFinSchedule,
@@ -496,8 +487,6 @@ exports.ObjectFactory = {
496
487
  CreateColumnFilter,
497
488
  CreateEmptyStyle,
498
489
  CreateEmptyCellSummmary,
499
- CreateEmptyGlue42Schedule,
500
- CreateEmptyGlue42Report,
501
490
  CreateSystemStatusMessageInfo,
502
491
  CreateToastOptions,
503
492
  CreateCustomDisplayFormatterContext,
@@ -505,5 +494,7 @@ exports.ObjectFactory = {
505
494
  CreateDefaultStyledColumnBadge,
506
495
  CreateEmptyChartDefinition,
507
496
  CreateEmptyTheme,
497
+ CreateEmptyCommentThread,
498
+ CreateAdaptableComment,
508
499
  };
509
500
  exports.default = exports.ObjectFactory;
@@ -0,0 +1,23 @@
1
+ import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
2
+ import { AdaptableApi, CellAddress } from '../../types';
3
+ /**
4
+ * This service controls the interaction between notes and comments
5
+ */
6
+ export declare class CellPopupService {
7
+ private api;
8
+ adaptable: IAdaptable;
9
+ constructor(api: AdaptableApi);
10
+ private getAdaptableState;
11
+ private dispatchAction;
12
+ static isSameAddress(a: CellAddress, b: CellAddress): boolean;
13
+ private handleAdaptableReady;
14
+ private getCellPositionFromEvent;
15
+ private handleMouseEnter;
16
+ private handleCellSelected;
17
+ getOpenCellAddress(): CellAddress | undefined;
18
+ getEditMode(): boolean;
19
+ hidePopup(): void;
20
+ showPopup(cellAddress: CellAddress, editMode: boolean): void;
21
+ editFocusedEntity(entity: 'Note' | 'Comment'): void;
22
+ getNotePopupEditMode(): boolean;
23
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CellPopupService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const SystemRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/SystemRedux"));
6
+ /**
7
+ * This service controls the interaction between notes and comments
8
+ */
9
+ class CellPopupService {
10
+ constructor(api) {
11
+ this.api = api;
12
+ this.adaptable = api.internalApi.getAdaptableInstance();
13
+ this.adaptable = api.internalApi.getAdaptableInstance();
14
+ this.adaptable.api.eventApi.on('AdaptableReady', () => this.handleAdaptableReady());
15
+ }
16
+ getAdaptableState() {
17
+ return this.api.internalApi.getAdaptableState();
18
+ }
19
+ dispatchAction(action) {
20
+ this.api.internalApi.dispatchReduxAction(action);
21
+ }
22
+ static isSameAddress(a, b) {
23
+ if (!a || !b) {
24
+ return false;
25
+ }
26
+ if ((a === null || a === void 0 ? void 0 : a.ColumnId) === (b === null || b === void 0 ? void 0 : b.ColumnId) && (a === null || a === void 0 ? void 0 : a.PrimaryKeyValue) === (b === null || b === void 0 ? void 0 : b.PrimaryKeyValue)) {
27
+ return true;
28
+ }
29
+ // Primary keys retreived from the grid dom are always strings, so we must also consider them strings
30
+ if ((typeof a.PrimaryKeyValue === 'number' && typeof b.PrimaryKeyValue === 'string') ||
31
+ (typeof b.PrimaryKeyValue === 'string' && typeof a.PrimaryKeyValue === 'number')) {
32
+ return (a.PrimaryKeyValue.toString() === b.PrimaryKeyValue.toString() && a.ColumnId === b.ColumnId);
33
+ }
34
+ return false;
35
+ }
36
+ handleAdaptableReady() {
37
+ this.adaptable._on('MouseEnter', (event) => this.handleMouseEnter(event));
38
+ this.api.eventApi.on('CellSelectionChanged', (params) => {
39
+ var _a;
40
+ const cells = params.selectedCellInfo.gridCells;
41
+ if ((cells === null || cells === void 0 ? void 0 : cells.length) === 1 && ((_a = cells[0].column) === null || _a === void 0 ? void 0 : _a.columnId) && cells[0].primaryKeyValue) {
42
+ const selectedCell = cells[0];
43
+ const cellSelected = {
44
+ PrimaryKeyValue: selectedCell.primaryKeyValue,
45
+ ColumnId: selectedCell.column.columnId,
46
+ };
47
+ this.handleCellSelected(cellSelected);
48
+ }
49
+ });
50
+ }
51
+ getCellPositionFromEvent(event) {
52
+ var _a, _b;
53
+ const target = event.target;
54
+ if (!((_b = (_a = target === null || target === void 0 ? void 0 : target.classList) === null || _a === void 0 ? void 0 : _a.contains) === null || _b === void 0 ? void 0 : _b.call(_a, 'ag-cell'))) {
55
+ return null;
56
+ }
57
+ try {
58
+ const PrimaryKeyValue = target.parentElement.getAttribute('row-id');
59
+ return {
60
+ PrimaryKeyValue,
61
+ ColumnId: target.getAttribute('col-id'),
62
+ };
63
+ }
64
+ catch (e) {
65
+ return null;
66
+ }
67
+ }
68
+ handleMouseEnter(event) {
69
+ const editMode = this.getEditMode();
70
+ if (editMode) {
71
+ // ignore
72
+ return;
73
+ }
74
+ const cellPosition = this.getCellPositionFromEvent(event);
75
+ const openCellAddress = this.getOpenCellAddress();
76
+ // Hovering over someting that is not a cell and there is no open note
77
+ if (!cellPosition && openCellAddress) {
78
+ // need to close if the new cell does not have a note
79
+ this.hidePopup();
80
+ return;
81
+ }
82
+ const cellNotes = this.adaptable.api.notesApi.getCellNotes(cellPosition);
83
+ const cellComments = this.adaptable.api.commentApi.getCommentThread(cellPosition);
84
+ const hasNotesOrComments = (cellNotes === null || cellNotes === void 0 ? void 0 : cellNotes.length) || cellComments;
85
+ // call only if it is different
86
+ if (CellPopupService.isSameAddress(openCellAddress, cellPosition)) {
87
+ return;
88
+ }
89
+ if (hasNotesOrComments) {
90
+ this.showPopup(cellPosition, false);
91
+ }
92
+ }
93
+ handleCellSelected(cellAddress) {
94
+ // if already opened - do nothing
95
+ const openCellAddress = this.getOpenCellAddress();
96
+ if (CellPopupService.isSameAddress(openCellAddress, cellAddress)) {
97
+ return;
98
+ }
99
+ // if open but this has no note, close
100
+ const cellNotes = this.adaptable.api.notesApi.getCellNotes(cellAddress);
101
+ const cellComments = this.adaptable.api.commentApi.getCommentThread(cellAddress);
102
+ const hasNotesOrComments = (cellNotes === null || cellNotes === void 0 ? void 0 : cellNotes.length) || cellComments;
103
+ if (openCellAddress && !hasNotesOrComments) {
104
+ // hide only if in edit mode
105
+ // because if you select a cell and move the mouse fast over another cell
106
+ // with a note, you do not want to close that note
107
+ // the selection is debounced, so the moment goes over the new cell this event is triggered
108
+ if (this.getEditMode()) {
109
+ this.hidePopup();
110
+ }
111
+ return;
112
+ }
113
+ // if open but the new selection has a note open that one in edit mode (because of click)
114
+ if (openCellAddress && hasNotesOrComments) {
115
+ this.showPopup(cellAddress, true);
116
+ return;
117
+ }
118
+ }
119
+ getOpenCellAddress() {
120
+ return SystemRedux.SystemCommentsAndNotesSelector(this.getAdaptableState().System);
121
+ }
122
+ getEditMode() {
123
+ return SystemRedux.SystemCommentsAndNotesEditModeSelector(this.getAdaptableState().System);
124
+ }
125
+ hidePopup() {
126
+ this.dispatchAction(SystemRedux.SystemCellPopupHide());
127
+ }
128
+ showPopup(cellAddress, editMode) {
129
+ this.dispatchAction(SystemRedux.SystemCellPopupShow(cellAddress, editMode));
130
+ }
131
+ editFocusedEntity(entity) {
132
+ this.dispatchAction(SystemRedux.SystemCellPopupEditFocusedEntity(entity));
133
+ }
134
+ getNotePopupEditMode() {
135
+ return SystemRedux.SystemCommentsAndNotesEditModeSelector(this.getAdaptableState().System);
136
+ }
137
+ }
138
+ exports.CellPopupService = CellPopupService;
@@ -17,7 +17,7 @@ export interface IReportService extends IAdaptableService {
17
17
  GetReportColumnScopeShortDescription(report: Report): string[];
18
18
  GetReportColumnScopeLongDescription(report: Report): string;
19
19
  GetReportExpressionDescription(Report: Report, cols: AdaptableColumn[]): string;
20
- PublishLiveLiveDataChangedEvent(reportDestination: 'OpenFin' | 'ipushpull' | 'Glue42', liveDataChangedTrigger: 'Connected' | 'Disconnected' | 'SnapshotSent' | 'LiveDataStarted' | 'LiveDataStopped' | 'LiveDataUpdated', liveReport?: any): void;
20
+ PublishLiveLiveDataChangedEvent(reportDestination: 'OpenFin' | 'ipushpull', liveDataChangedTrigger: 'Connected' | 'Disconnected' | 'SnapshotSent' | 'LiveDataStarted' | 'LiveDataStopped' | 'LiveDataUpdated', liveReport?: any): void;
21
21
  getReportDataColumns(report: Report, includePrimaryKey?: boolean): AdaptableColumnBase[];
22
22
  getReportDataRows(report: Report, columns: AdaptableColumnBase[], includePrimaryKey?: boolean): Record<string, any>[];
23
23
  getReportData(report: Report, includePrimaryKey?: boolean): ReportData;
@@ -1,3 +1,11 @@
1
+ import { AdaptableTheme } from '../../../types';
1
2
  import { IAdaptableService } from './IAdaptableService';
2
3
  export interface IThemeService extends IAdaptableService {
4
+ getDOMPrefferedColorScheme(): 'dark' | 'light';
5
+ /**
6
+ * Maps the theme to the correct theme object or string
7
+ * This is used to apply the correct theme when the theme is OS
8
+ * @param theme
9
+ */
10
+ mapOsTheme(theme: AdaptableTheme | string): AdaptableTheme | string;
3
11
  }
@@ -106,7 +106,7 @@ class ModuleService {
106
106
  case 'ColumnFilter':
107
107
  return learnUrl + 'handbook-column-filter';
108
108
  case 'GridFilter':
109
- return learnUrl + 'handbook-column-filter';
109
+ return learnUrl + 'handbook-grid-filter';
110
110
  case 'FlashingCell':
111
111
  return learnUrl + 'handbook-flashing-cell';
112
112
  case 'FormatColumn':
@@ -141,8 +141,6 @@ class ModuleService {
141
141
  return learnUrl + 'handbook-theming';
142
142
  case 'ToolPanel':
143
143
  return learnUrl + 'ui-tool-panel';
144
- case 'Glue42':
145
- return learnUrl + 'integrations-glue42';
146
144
  case 'IPushPull':
147
145
  return learnUrl + 'integrations-ipushpull';
148
146
  case 'OpenFin':
@@ -29,7 +29,7 @@ export declare class ReportService implements IReportService {
29
29
  getReportDataAsArray(report: Report, includePrimaryKey?: boolean): any[][];
30
30
  convertReportDataToArray(reportData: ReportData): any[][];
31
31
  getRowObjectForColumnIds(rowNode: IRowNode, columnIds: string[]): Record<string, any>;
32
- PublishLiveLiveDataChangedEvent(reportDestination: 'ipushpull' | 'Glue42', liveDataTrigger: 'Connected' | 'Disconnected' | 'LiveDataStarted' | 'LiveDataStopped' | 'LiveDataUpdated', liveReport?: any): void;
32
+ PublishLiveLiveDataChangedEvent(reportDestination: 'ipushpull', liveDataTrigger: 'Connected' | 'Disconnected' | 'LiveDataStarted' | 'LiveDataStopped' | 'LiveDataUpdated', liveReport?: any): void;
33
33
  getCellExportValueFromRowNode(rowNode: IRowNode, columnId: string): any;
34
34
  getCellExportValueFromRawValue(rowNode: IRowNode, cellRawValue: any, columnId: string): any;
35
35
  getReportFileName(reportName: string, destination: SystemExportDestination | CustomDestination): string;
@@ -10,4 +10,7 @@ export declare class ThemeService implements IThemeService {
10
10
  applyNewThemeVariables(theme: AdaptableTheme): void;
11
11
  destroy(): void;
12
12
  showMissingThemeFiles(theme: AdaptableTheme): void;
13
+ getDOMPrefferedColorScheme(): 'dark' | 'light';
14
+ mapOsTheme(theme: AdaptableTheme | string): AdaptableTheme;
15
+ attachPrefferedColorSchemeListener(): () => void;
13
16
  }
@@ -6,7 +6,8 @@ class ThemeService {
6
6
  var _a;
7
7
  this.unsubscribe = () => { };
8
8
  this.onThemeChanged = () => {
9
- const currentTheme = this.api.themeApi.getCurrentThemeObject();
9
+ let currentTheme = this.api.themeApi.getCurrentThemeObject();
10
+ currentTheme = this.mapOsTheme(currentTheme);
10
11
  this.applyNewThemeVariables(currentTheme);
11
12
  // this needs to be called after variables are set
12
13
  // as it may show the warning for a custom/runtime theme
@@ -26,9 +27,11 @@ class ThemeService {
26
27
  subscribe() {
27
28
  const themeChangedUnsubscribe = this.api.eventApi.on('ThemeChanged', this.onThemeChanged);
28
29
  const themeEditedUnsubscribe = this.api.eventApi.on('ThemeEdited', this.onThemeChanged);
30
+ const prefferedColorSchemeUnsubscribe = this.attachPrefferedColorSchemeListener();
29
31
  this.unsubscribe = () => {
30
32
  themeChangedUnsubscribe();
31
33
  themeEditedUnsubscribe();
34
+ prefferedColorSchemeUnsubscribe();
32
35
  };
33
36
  }
34
37
  applyNewThemeVariables(theme) {
@@ -82,5 +85,34 @@ If it's a default theme, try
82
85
  import "@adaptabletools/adaptable/themes/${themeName}.css"`);
83
86
  }
84
87
  }
88
+ // prefers-color-scheme
89
+ getDOMPrefferedColorScheme() {
90
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
91
+ }
92
+ mapOsTheme(theme) {
93
+ theme = typeof theme === 'string' ? this.api.themeApi.getThemeByName(theme) : theme;
94
+ if ((typeof theme === 'string' && theme === 'os') ||
95
+ (typeof theme === 'object' && theme.Name === 'os')) {
96
+ return this.api.themeApi.getThemeByName(this.getDOMPrefferedColorScheme());
97
+ }
98
+ return theme;
99
+ }
100
+ attachPrefferedColorSchemeListener() {
101
+ const handlePrefferedColorSchemeChange = () => {
102
+ // we need to reapply the theme
103
+ const currentTheme = this.api.themeApi.getCurrentThemeObject();
104
+ if (currentTheme.Name === 'os') {
105
+ this.api.themeApi.applyCurrentTheme();
106
+ }
107
+ };
108
+ window
109
+ .matchMedia('(prefers-color-scheme: dark)')
110
+ .addEventListener('change', handlePrefferedColorSchemeChange);
111
+ return () => {
112
+ window
113
+ .matchMedia('(prefers-color-scheme: dark)')
114
+ .removeEventListener('change', handlePrefferedColorSchemeChange);
115
+ };
116
+ }
85
117
  }
86
118
  exports.ThemeService = ThemeService;
@@ -99,29 +99,29 @@ class ValidationService {
99
99
  .validateOnServer(serverValidationContext)
100
100
  .then((validationResult) => {
101
101
  var _a, _b;
102
- if (validationResult.NewValue === undefined) {
103
- validationResult.NewValue = cellDataChangedInfo.newValue;
102
+ if (validationResult.newCellValue === undefined) {
103
+ validationResult.newCellValue = cellDataChangedInfo.newValue;
104
104
  }
105
105
  // If they have changed the return value then we should update the grid, log the function change
106
106
  // otherwise the value will persist
107
- if (validationResult.NewValue !== cellDataChangedInfo.newValue) {
108
- cellDataChangedInfo.newValue = validationResult.NewValue;
107
+ if (validationResult.newCellValue !== cellDataChangedInfo.newValue) {
108
+ cellDataChangedInfo.newValue = validationResult.newCellValue;
109
109
  // this.adaptable.setValue(cellDataChangedInfo, false);
110
110
  const row = (_a = cellDataChangedInfo.rowNode) === null || _a === void 0 ? void 0 : _a.data;
111
111
  if (!row) {
112
112
  return;
113
113
  }
114
- row[(_b = this.adaptableApi.columnApi.internalApi.getAgGridColumnFieldForAdaptableColumn(cellDataChangedInfo.column.columnId)) !== null && _b !== void 0 ? _b : cellDataChangedInfo.column.columnId] = validationResult.NewValue;
114
+ row[(_b = this.adaptableApi.columnApi.internalApi.getAgGridColumnFieldForAdaptableColumn(cellDataChangedInfo.column.columnId)) !== null && _b !== void 0 ? _b : cellDataChangedInfo.column.columnId] = validationResult.newCellValue;
115
115
  this.adaptableApi.gridApi.updateGridData([row]);
116
- if (StringExtensions_1.default.IsNotNullOrEmpty(validationResult.ValidationMessage) &&
116
+ if (StringExtensions_1.default.IsNotNullOrEmpty(validationResult.validationMessage) &&
117
117
  this.adaptableApi.optionsApi.getEditOptions().displayServerValidationMessages) {
118
- const validationHeader = validationResult.ValidationHeader
119
- ? validationResult.ValidationHeader
118
+ const validationHeader = validationResult.validationHeader
119
+ ? validationResult.validationHeader
120
120
  : GeneralConstants_1.SERVER_VALIDATION_HEADER;
121
- const messageType = validationResult.MessageType
122
- ? validationResult.MessageType
121
+ const messageType = validationResult.messageType
122
+ ? validationResult.messageType
123
123
  : GeneralConstants_1.SERVER_VALIDATION_MESSAGE_TYPE;
124
- this.adaptableApi.alertApi.showAlert(validationHeader, validationResult.ValidationMessage, messageType);
124
+ this.adaptableApi.alertApi.showAlert(validationHeader, validationResult.validationMessage, messageType);
125
125
  }
126
126
  }
127
127
  config.onServerValidationCompleted();
@@ -12,10 +12,10 @@ const AdaptablePopup_1 = require("./Components/Popups/AdaptablePopup");
12
12
  const AdaptablePopupConfirmation_1 = require("./Components/Popups/AdaptablePopupConfirmation");
13
13
  const AdaptablePopupPrompt_1 = require("./Components/Popups/AdaptablePopupPrompt");
14
14
  const FormPopups_1 = require("./Components/Popups/FormPopups/FormPopups");
15
+ const GridCellPopup_1 = require("./Components/Popups/GridCellPopup");
15
16
  const WindowPopups_1 = require("./Components/Popups/WindowPopups/WindowPopups");
16
17
  const Dashboard_1 = require("./Dashboard/Dashboard");
17
18
  const License_1 = require("./License");
18
- const NotesPopup_1 = require("./Notes/NotesPopup");
19
19
  const FloatingQuickSearch_1 = require("./QuickSearch/FloatingQuickSearch/FloatingQuickSearch");
20
20
  const renderWithAdaptableContext_1 = require("./renderWithAdaptableContext");
21
21
  class AdaptableView extends React.Component {
@@ -24,7 +24,7 @@ class AdaptableView extends React.Component {
24
24
  const watermark = (_d = (_c = (_b = (_a = this.props.AdaptableApi) === null || _a === void 0 ? void 0 : _a.internalApi) === null || _b === void 0 ? void 0 : _b.getSystemState()) === null || _c === void 0 ? void 0 : _c.License) === null || _d === void 0 ? void 0 : _d.watermark;
25
25
  const adaptableOptions = this.props.AdaptableApi.optionsApi.getAdaptableOptions();
26
26
  return (React.createElement("div", null,
27
- React.createElement(NotesPopup_1.NotePopup, null),
27
+ React.createElement(GridCellPopup_1.GridCellPopup, null),
28
28
  React.createElement(FloatingQuickSearch_1.QuickSearchDrawer, null),
29
29
  this.props.AdaptableApi.internalApi.getModuleService().isModuleAvailable('Dashboard') && (React.createElement(Dashboard_1.Dashboard, { api: this.props.AdaptableApi })),
30
30
  this.props.AdaptableApi.optionsApi.getUserInterfaceOptions().showLoadingScreen && (React.createElement(AdaptableLoadingScreen_1.AdaptableLoadingScreen, { onClose: this.props.onCloseLoadingPopup, showLoadingScreen: this.props.PopupState.LoadingPopup.ShowLoadingPopup })),
@@ -37,7 +37,7 @@ class AdaptableView extends React.Component {
37
37
  , {
38
38
  // we NEEEEED!!!! this containerId, otherwise, toastify will have memory leaks when the adaptable
39
39
  // instance is destroyed and re-created many times
40
- containerId: adaptableOptions.adaptableId, enableMultiContainer: true, limit: adaptableOptions.notificationsOptions.maxNotifications, closeButton: false, icon: false, theme: "colored" }),
40
+ containerId: adaptableOptions.adaptableId, limit: adaptableOptions.notificationsOptions.maxNotifications, closeButton: false, icon: false, theme: "colored" }),
41
41
  (watermark === null || watermark === void 0 ? void 0 : watermark.show) && React.createElement(License_1.LicenseWatermark, null, watermark === null || watermark === void 0 ? void 0 : watermark.text),
42
42
  React.createElement(WindowPopups_1.WindowPopups, null),
43
43
  React.createElement(FormPopups_1.FormPopups, null),
@@ -33,7 +33,8 @@ const StatusBarPopup_1 = require("./StatusBar/StatusBarPopup");
33
33
  const ChartingViewPanel_1 = require("./Charting/ChartingViewPanel");
34
34
  const GridFilterPopup_1 = require("./GridFilter/GridFilterPopup");
35
35
  const ColumnInfoPopup_1 = require("./ColumnInfo/ColumnInfoPopup");
36
- const NotesListing_1 = require("./Notes/NotesListing");
36
+ const NotesPopup_1 = require("./Notes/NotesPopup");
37
+ const CommentsPopup_1 = require("./Comments/CommentsPopup");
37
38
  const DataImportPopup_1 = require("./DataImport/DataImportPopup");
38
39
  exports.AdaptableViewFactory = {
39
40
  BulkUpdatePopup: BulkUpdatePopup_1.BulkUpdatePopup,
@@ -49,7 +50,8 @@ exports.AdaptableViewFactory = {
49
50
  ToolPanelPopup: ToolPanelPopup_1.ToolPanelPopup,
50
51
  SystemStatusPopup: SystemStatusPopup_1.SystemStatusPopup,
51
52
  DataChangeHistoryPopup: DataChangeHistoryPopup_1.DataChangeHistoryPopup,
52
- NotesPopup: NotesListing_1.NotesListing,
53
+ NotesPopup: NotesPopup_1.NotesPopup,
54
+ CommentsPopup: CommentsPopup_1.CommentsPopup,
53
55
  DataImportPopup: DataImportPopup_1.DataImportPopup,
54
56
  GridFilterPopup: GridFilterPopup_1.GridFilterPopup,
55
57
  };