@adaptabletools/adaptable-cjs 17.0.0-canary.3 → 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 (288) hide show
  1. package/base.css +1264 -1202
  2. package/base.css.map +1 -1
  3. package/index.css +2099 -22
  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 +4 -4
  239. package/themes/dark.css.map +1 -1
  240. package/themes/light.css +1 -1
  241. package/themes/light.css.map +1 -1
  242. package/tsconfig.cjs.tsbuildinfo +1 -1
  243. package/src/AdaptableOptions/FinsemblePluginOptions.d.ts +0 -35
  244. package/src/AdaptableOptions/Glue42PluginOptions.d.ts +0 -25
  245. package/src/AdaptableOptions/Glue42WebPluginOptions.d.ts +0 -10
  246. package/src/Api/Events/SelectionChanged.d.ts +0 -16
  247. package/src/Api/FinsembleApi.d.ts +0 -10
  248. package/src/Api/Glue42Api.d.ts +0 -75
  249. package/src/Api/Glue42WebApi.d.ts +0 -10
  250. package/src/PredefinedConfig/Glue42State.d.ts +0 -46
  251. package/src/View/Notes/NotesListing.d.ts +0 -2
  252. package/src/View/Notes/NotesListing.js +0 -88
  253. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsGlue42.d.ts +0 -9
  254. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsGlue42.js +0 -25
  255. package/src/bundle-dependencies/bundles/react-toastify/components/CloseButton.d.ts +0 -9
  256. package/src/bundle-dependencies/bundles/react-toastify/components/Icons.d.ts +0 -24
  257. package/src/bundle-dependencies/bundles/react-toastify/components/ProgressBar.d.ts +0 -59
  258. package/src/bundle-dependencies/bundles/react-toastify/components/Toast.d.ts +0 -3
  259. package/src/bundle-dependencies/bundles/react-toastify/components/ToastContainer.d.ts +0 -3
  260. package/src/bundle-dependencies/bundles/react-toastify/components/Transitions.d.ts +0 -6
  261. package/src/bundle-dependencies/bundles/react-toastify/components/index.d.ts +0 -6
  262. package/src/bundle-dependencies/bundles/react-toastify/core/eventManager.d.ts +0 -39
  263. package/src/bundle-dependencies/bundles/react-toastify/core/index.d.ts +0 -2
  264. package/src/bundle-dependencies/bundles/react-toastify/core/toast.d.ts +0 -41
  265. package/src/bundle-dependencies/bundles/react-toastify/hooks/index.d.ts +0 -2
  266. package/src/bundle-dependencies/bundles/react-toastify/hooks/useToast.d.ts +0 -10
  267. package/src/bundle-dependencies/bundles/react-toastify/hooks/useToastContainer.d.ts +0 -23
  268. package/src/bundle-dependencies/bundles/react-toastify/index.d.ts +0 -5
  269. package/src/bundle-dependencies/bundles/react-toastify/index.js +0 -1
  270. package/src/bundle-dependencies/bundles/react-toastify/inject-style.d.ts +0 -8
  271. package/src/bundle-dependencies/bundles/react-toastify/types/index.d.ts +0 -269
  272. package/src/bundle-dependencies/bundles/react-toastify/utils/collapseToast.d.ts +0 -5
  273. package/src/bundle-dependencies/bundles/react-toastify/utils/constant.d.ts +0 -23
  274. package/src/bundle-dependencies/bundles/react-toastify/utils/cssTransition.d.ts +0 -43
  275. package/src/bundle-dependencies/bundles/react-toastify/utils/index.d.ts +0 -5
  276. package/src/bundle-dependencies/bundles/react-toastify/utils/mapper.d.ts +0 -2
  277. package/src/bundle-dependencies/bundles/react-toastify/utils/propValidator.d.ts +0 -9
  278. /package/src/AdaptableOptions/{FinsemblePluginOptions.js → CommentsOptions.js} +0 -0
  279. /package/src/AdaptableOptions/{Glue42PluginOptions.js → InteropioPluginOptions.js} +0 -0
  280. /package/src/{AdaptableOptions/Glue42WebPluginOptions.js → Api/CommentApi.js} +0 -0
  281. /package/src/Api/Events/{SelectionChanged.js → CalculatedColumnChanged.js} +0 -0
  282. /package/src/Api/{FinsembleApi.js → Events/CellSelectionChanged.js} +0 -0
  283. /package/src/Api/{Glue42Api.js → Events/CommentsChangedInfo.js} +0 -0
  284. /package/src/Api/{Glue42WebApi.js → Events/RowSelectionChanged.js} +0 -0
  285. /package/src/Api/Internal/{ExpressionnternalApi.d.ts → ExpressionInternalApi.d.ts} +0 -0
  286. /package/src/Api/Internal/{ExpressionnternalApi.js → ExpressionInternalApi.js} +0 -0
  287. /package/src/Api/{NotesAPi.js → InteropioPluginApi.js} +0 -0
  288. /package/src/{PredefinedConfig/Glue42State.js → Api/NotesApi.js} +0 -0
@@ -172,7 +172,7 @@ const ColumnsList = ({ columns: cols, handle, onValidityChange, onChange, onSele
172
172
  pk: {
173
173
  header: () => React.createElement(HeaderCellWrapper, null, "Primary Key"),
174
174
  maxWidth: 80,
175
- sortable: false,
175
+ defaultSortable: false,
176
176
  renderMenuIcon: false,
177
177
  render: (params) => {
178
178
  const { data } = params;
@@ -331,7 +331,7 @@ const ColumnsList = ({ columns: cols, handle, onValidityChange, onChange, onSele
331
331
  default: {
332
332
  defaultFlex: 1,
333
333
  align: 'center',
334
- sortable: false,
334
+ defaultSortable: false,
335
335
  },
336
336
  }, headerOptions: {
337
337
  alwaysReserveSpaceForSortIcon: false,
@@ -98,7 +98,7 @@ const EntitlementsListForm = (props) => {
98
98
  default: {
99
99
  defaultFlex: 1,
100
100
  align: 'center',
101
- sortable: false,
101
+ defaultSortable: false,
102
102
  },
103
103
  }, headerOptions: {
104
104
  alwaysReserveSpaceForSortIcon: false,
@@ -630,4 +630,4 @@ export const FinanceForm: React.FunctionComponent<React.PropsWithChildren<Financ
630
630
  };
631
631
 
632
632
 
633
- */
633
+ */
@@ -154,7 +154,7 @@ const AlertButtonsEditor = (props) => {
154
154
  label: StringExtensions_1.default.CapitaliseFirstLetter(variant),
155
155
  value: variant,
156
156
  };
157
- }), rederSingleValue: (option) => `Variant: ${option.label}`, value: buttonStyle === null || buttonStyle === void 0 ? void 0 : buttonStyle.variant, onChange: (value) => {
157
+ }), renderSingleValue: (option) => `Variant: ${option.label}`, value: buttonStyle === null || buttonStyle === void 0 ? void 0 : buttonStyle.variant, onChange: (value) => {
158
158
  setVariant(value);
159
159
  } })),
160
160
  React.createElement(Select_1.Select, { options: [
@@ -168,7 +168,7 @@ const AlertButtonsEditor = (props) => {
168
168
  value: tone,
169
169
  };
170
170
  }),
171
- ], rederSingleValue: (option) => `Tone: ${option.label}`, onChange: (value) => {
171
+ ], renderSingleValue: (option) => `Tone: ${option.label}`, onChange: (value) => {
172
172
  if (value === 'text') {
173
173
  setTone(null);
174
174
  }
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { AlertDefinition } from '../../../PredefinedConfig/AlertState';
3
3
  import { AlertType } from '../Utilities/getAlertType';
4
- export declare const getRuleStepDescription: (alertType: AlertType) => JSX.Element | "";
4
+ export declare const getRuleStepDescription: (alertType: AlertType) => "" | JSX.Element;
5
5
  export declare const renderAlertRulesSummary: (alertDefinition: AlertDefinition) => JSX.Element;
6
6
  export interface AlertRulesWizardSectionProps {
7
7
  onChange: (data: AlertDefinition) => void;
@@ -20,7 +20,7 @@ const getRuleStepDescription = (alertType) => {
20
20
  case 'RowChange':
21
21
  return React.createElement(React.Fragment, null, "Specify which type of Row Change will trigger the Alert");
22
22
  case 'Validation':
23
- return React.createElement(React.Fragment, null, "Create the Validation Rule which will trigger the Alert (using a Predicate or a Query)");
23
+ return (React.createElement(React.Fragment, null, "Create the Validation Rule which will trigger the Alert (using a Predicate or a Query)"));
24
24
  case 'Aggregation':
25
25
  return React.createElement(React.Fragment, null, "Build an Aggregation Boolean Rule to specify when the Alert should trigger");
26
26
  case 'Observable':
@@ -62,9 +62,10 @@ const AlertRulesWizardSection = (props) => {
62
62
  const showObservable = props.alertType === 'Observable';
63
63
  const showAggregation = props.alertType === 'Aggregation';
64
64
  const showBoolean = props.alertType === 'DataChange' || props.alertType == 'Validation';
65
- const showPredicate = props.alertType === 'DataChange' || props.alertType == 'Validation' || props.alertType === 'RowChange';
65
+ const showPredicate = props.alertType === 'DataChange' ||
66
+ props.alertType == 'Validation' ||
67
+ props.alertType === 'RowChange';
66
68
  const enablePredicateColumnId = props.alertType === 'DataChange' || props.alertType == 'Validation';
67
- ;
68
69
  if (props.alertType === 'RowChange') {
69
70
  return React.createElement(RowChangeEditor, { alert: data, onChange: props.onChange });
70
71
  }
@@ -50,7 +50,7 @@ const CalculatedColumnExpressionWizardSection = (props) => {
50
50
  return 'quantileAggregatedScalar';
51
51
  }
52
52
  };
53
- return (React.createElement(Tabs_1.Tabs, { autoFocus: false },
53
+ return (React.createElement(Tabs_1.Tabs, { autoFocus: false, height: "100%" },
54
54
  React.createElement(Tabs_1.Tabs.Tab, null, (0, StringExtensions_1.Humanize)(props.expressionType)),
55
55
  React.createElement(Tabs_1.Tabs.Content, null, (() => {
56
56
  switch (props.expressionType) {
@@ -100,7 +100,7 @@ const CalculatedColumnWizard = (props) => {
100
100
  isValid: CalculatedColumnExpressionWizardSection_1.isValidCalculatedColumnExpression,
101
101
  renderSummary: CalculatedColumnExpressionWizardSection_1.renderCalculatedColumnExpressionSummary,
102
102
  render: () => {
103
- return (React.createElement(rebass_1.Box, { p: 2 },
103
+ return (React.createElement(rebass_1.Box, { height: "100%", p: 2 },
104
104
  React.createElement(CalculatedColumnExpressionWizardSection_1.CalculatedColumnExpressionWizardSection, { expressionType: expressionType, onChange: setCalculatedColumn })));
105
105
  },
106
106
  },
@@ -71,7 +71,7 @@ const useChartingElements = ({ elementType, accessLevel, size = 'normal', }) =>
71
71
  if ((0, ChartingState_1.isAgChartDefinition)(selectedChart)) {
72
72
  containerOptions.unshift({
73
73
  label: chartingOptions.agGridContainerName,
74
- value: null,
74
+ value: chartingOptions.agGridContainerName,
75
75
  });
76
76
  }
77
77
  const style = {};
@@ -82,8 +82,13 @@ const useChartingElements = ({ elementType, accessLevel, size = 'normal', }) =>
82
82
  iconSize = 15;
83
83
  }
84
84
  const chartSelector = (React.createElement(Select_1.Select, { className: `ab-${elementType}__Chart__select`, size: size, value: selectedChartId, options: options, placeholder: 'Select Chart', disabled: !hasCharts, onChange: (chartUuid) => setSelectedChartId(chartUuid) }));
85
- const containerSelector = Boolean(chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.length) && (React.createElement(Select_1.Select, { value: selectedContainer === null || selectedContainer === void 0 ? void 0 : selectedContainer.name, size: size, onChange: (containerName) => {
86
- setSelectedContainer(chartContainers.find((containerOption) => containerOption.name === containerName));
85
+ const containerSelector = Boolean(chartContainers === null || chartContainers === void 0 ? void 0 : chartContainers.length) && (React.createElement(Select_1.Select, { value: selectedContainer === null ? chartingOptions.agGridContainerName : selectedContainer === null || selectedContainer === void 0 ? void 0 : selectedContainer.name, size: size, onChange: (containerName) => {
86
+ if (containerName === chartingOptions.agGridContainerName) {
87
+ setSelectedContainer(null);
88
+ }
89
+ else {
90
+ setSelectedContainer(chartContainers.find((containerOption) => containerOption.name === containerName));
91
+ }
87
92
  }, options: containerOptions, placeholder: "Select Container" }));
88
93
  const chartButton = (React.createElement(SimpleButton_1.default, { style: style, mr: 1, onClick: () => (isOpen ? hideChart() : showChart(selectedContainer)), disabled: !Boolean(selectedChart), variant: 'text', tone: 'neutral', icon: isOpen ? 'visibility-off' : 'visibility-on', tooltip: isOpen ? 'Hide Chart' : 'Show Chart' }));
89
94
  const deleteButton = (React.createElement(DeleteChartButton_1.DeleteChartButton, { iconSize: iconSize, chart: selectedChart, accessLevel: chartAccessLevel }));
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ interface CommentsEditorProps {
3
+ enableEditMode(): void;
4
+ onRefreshContent(): void;
5
+ }
6
+ export declare const CommentsEditor: React.FunctionComponent<CommentsEditorProps>;
7
+ export {};
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommentsEditor = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_redux_1 = require("react-redux");
7
+ const rebass_1 = require("rebass");
8
+ const icons_1 = require("../../components/icons");
9
+ const Panel_1 = tslib_1.__importDefault(require("../../components/Panel"));
10
+ const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
11
+ const CommentsRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/CommentsRedux"));
12
+ const SystemRedux_1 = require("../../Redux/ActionsReducers/SystemRedux");
13
+ const dateUtils_1 = require("../../Utilities/ExpressionFunctions/dateUtils");
14
+ const AdaptableContext_1 = require("../AdaptableContext");
15
+ const AdaptableInput_1 = tslib_1.__importDefault(require("../Components/AdaptableInput"));
16
+ // Edit Mode
17
+ // [author] [edit, delete]
18
+ // [text-editor] * this is different
19
+ // [show-all-comments-button]
20
+ // View Mode
21
+ // [author] [edit, delete]
22
+ // [text]
23
+ // [show-all-comments-button]
24
+ const CommentsEditor = (props) => {
25
+ const adaptable = (0, AdaptableContext_1.useAdaptable)();
26
+ const cellAddress = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesSelector)(state.System));
27
+ const userId = React.useMemo(() => {
28
+ return adaptable.api.optionsApi.getUserName();
29
+ }, []);
30
+ const commentThread = (0, react_redux_1.useSelector)((state) => CommentsRedux.GetCellCommentSelector(state.Comment, cellAddress));
31
+ const [activeEditingComment, setActiveEditingComment] = React.useState(() => {
32
+ /**
33
+ * When opening the popup and there is only one comment, we want to open it in edit mode.
34
+ * This happens usualy when a new comment is added via cell menu.
35
+ */
36
+ // if (cellComments?.Comments?.length === 1 && cellComments?.Comments[0].Value === '') {
37
+ // return cellComments?.Comments[0].Uuid;
38
+ // }
39
+ return null;
40
+ });
41
+ const [newCommentText, setNewCommentText] = React.useState('');
42
+ if (!commentThread) {
43
+ return null;
44
+ }
45
+ const comments = commentThread.Comments;
46
+ return (React.createElement(Panel_1.default, { color: "var(--ab-color-text-on-primary)", onClick: () => props.enableEditMode(), minWidth: 250 },
47
+ comments &&
48
+ comments.length > 0 &&
49
+ comments.map((comment, index) => {
50
+ var _a, _b, _c, _d;
51
+ if (!comment) {
52
+ return null;
53
+ }
54
+ const isOwnComment = ((_a = comment === null || comment === void 0 ? void 0 : comment.Author) === null || _a === void 0 ? void 0 : _a.UserName)
55
+ ? ((_b = comment === null || comment === void 0 ? void 0 : comment.Author) === null || _b === void 0 ? void 0 : _b.UserName) === userId
56
+ : true; // no owner means it's the current user
57
+ return (React.createElement(rebass_1.Box, { p: 2, key: (_c = comment.Uuid) !== null && _c !== void 0 ? _c : index, style: {
58
+ borderBottom: '1px solid var(--ab-color-primarydark)',
59
+ } },
60
+ React.createElement(rebass_1.Flex, { mb: 2, alignItems: "center" },
61
+ React.createElement(rebass_1.Box, null,
62
+ React.createElement(rebass_1.Box, { fontSize: 3, fontWeight: "bold" }, (_d = comment === null || comment === void 0 ? void 0 : comment.Author) === null || _d === void 0 ? void 0 : _d.UserName),
63
+ comment.Timestamp && (React.createElement(rebass_1.Box, { fontSize: 2 }, (0, dateUtils_1.formatDate)(comment.Timestamp, 'MM.DD.YYYY HH:mm')))),
64
+ React.createElement(rebass_1.Box, { flex: 1 }),
65
+ React.createElement(SimpleButton_1.default, { variant: "text", icon: "edit", disabled: !isOwnComment, onClick: () => setActiveEditingComment(comment.Uuid) }),
66
+ React.createElement(SimpleButton_1.default, { variant: "text", icon: "delete", disabled: !isOwnComment, onClick: () => {
67
+ adaptable.api.commentApi.deleteComment(comment, cellAddress);
68
+ requestAnimationFrame(() => {
69
+ props.onRefreshContent();
70
+ });
71
+ } })),
72
+ React.createElement(rebass_1.Box, { onClick: () => setActiveEditingComment(comment.Uuid) }, comment.Uuid === activeEditingComment ? (React.createElement(AdaptableInput_1.default, { autoFocus: true, width: "100%", defaultValue: comment.Value, onBlur: () => {
73
+ if (comment.Uuid === activeEditingComment) {
74
+ setActiveEditingComment(null);
75
+ }
76
+ }, onChange: (event) => {
77
+ adaptable.api.commentApi.editComment(Object.assign(Object.assign({}, comment), { Value: event.target.value }), cellAddress);
78
+ } })) : (React.createElement(rebass_1.Text, null, comment.Value)))));
79
+ }),
80
+ React.createElement(AdaptableInput_1.default, { autoFocus: !comments || comments.length === 0, value: newCommentText, onChange: (event) => {
81
+ setNewCommentText(event.target.value);
82
+ }, onKeyDown: (event) => {
83
+ if (event.key === 'Enter') {
84
+ adaptable.api.commentApi.addComment(newCommentText, cellAddress);
85
+ setNewCommentText('');
86
+ requestAnimationFrame(() => {
87
+ props.onRefreshContent();
88
+ });
89
+ }
90
+ }, mt: 2, mb: "2", width: "100%", placeholder: "Write new comment" }),
91
+ React.createElement(SimpleButton_1.default, { width: "100%", variant: "raised", onClick: () => {
92
+ adaptable.api.settingsPanelApi.openSettingsPanel('Comments');
93
+ adaptable.api.internalApi.getCellPopupService().hidePopup();
94
+ } },
95
+ React.createElement(rebass_1.Box, { mr: 2 },
96
+ React.createElement(icons_1.Icon, { name: "folder" })),
97
+ ' ',
98
+ "Open all comments")));
99
+ };
100
+ exports.CommentsEditor = CommentsEditor;
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare const CommentsPopup: React.FunctionComponent;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommentsPopup = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_redux_1 = require("react-redux");
7
+ const InfiniteTable_1 = require("../../components/InfiniteTable");
8
+ const Panel_1 = tslib_1.__importDefault(require("../../components/Panel"));
9
+ const rebass_1 = require("rebass");
10
+ const dateUtils_1 = require("../../Utilities/ExpressionFunctions/dateUtils");
11
+ const AdaptableContext_1 = require("../AdaptableContext");
12
+ const PopupPanel_1 = require("../Components/Popups/AdaptablePopup/PopupPanel");
13
+ const AdaptableButton_1 = require("../Components/AdaptableButton");
14
+ const tableDOMProps = {
15
+ style: {
16
+ minHeight: 160,
17
+ minWidth: '10rem',
18
+ },
19
+ };
20
+ const CellComments = (props) => {
21
+ const adaptable = (0, AdaptableContext_1.useAdaptable)();
22
+ const columnsMap = React.useMemo(() => {
23
+ const columns = {
24
+ author: {
25
+ field: 'Author',
26
+ maxWidth: 100,
27
+ valueGetter: (params) => params.data.Author.UserName,
28
+ },
29
+ timestamp: {
30
+ field: 'Timestamp',
31
+ maxWidth: 150,
32
+ valueGetter: (params) => {
33
+ return (0, dateUtils_1.formatDate)(params.data.Timestamp, 'MM.DD.YYYY HH:mm');
34
+ },
35
+ },
36
+ message: {
37
+ header: 'Message',
38
+ field: 'Value',
39
+ defaultFlex: 3,
40
+ },
41
+ };
42
+ return columns;
43
+ }, []);
44
+ const cellValue = adaptable.api.gridApi.getCellDisplayValue(props.commentThread.PrimaryKeyValue, props.commentThread.ColumnId);
45
+ const columnFriendlyName = adaptable.api.columnApi.getFriendlyNameForColumnId(props.commentThread.ColumnId);
46
+ return (React.createElement(Panel_1.default, { mb: 2, header: React.createElement(rebass_1.Flex, { width: "100%", alignItems: "center" },
47
+ React.createElement(rebass_1.Box, { mr: 2 },
48
+ "Cell Value: ",
49
+ cellValue),
50
+ React.createElement(rebass_1.Box, { mr: 2 },
51
+ "Primary Key: [",
52
+ props.commentThread.PrimaryKeyValue,
53
+ "]"),
54
+ React.createElement(rebass_1.Box, null,
55
+ "Column: ",
56
+ columnFriendlyName),
57
+ React.createElement(rebass_1.Box, { flex: 1 }),
58
+ React.createElement(AdaptableButton_1.AdaptableButtonComponent, { mr: 1, variant: "text", icon: "visibility-on", onClick: () => {
59
+ adaptable.api.internalApi.getCellPopupService().showPopup({
60
+ ColumnId: props.commentThread.ColumnId,
61
+ PrimaryKeyValue: props.commentThread.PrimaryKeyValue,
62
+ }, true);
63
+ } }),
64
+ React.createElement(AdaptableButton_1.AdaptableButtonComponent, { icon: "delete", variant: "text", onClick: () => {
65
+ adaptable.api.commentApi.deleteCommentThread(props.commentThread);
66
+ } })) },
67
+ React.createElement(InfiniteTable_1.DataSource, { data: props.commentThread.Comments, primaryKey: "Uuid" },
68
+ React.createElement(InfiniteTable_1.InfiniteTable, { columnTypes: {
69
+ default: {
70
+ align: 'start',
71
+ defaultFlex: 1,
72
+ defaultSortable: false,
73
+ },
74
+ }, headerOptions: {
75
+ alwaysReserveSpaceForSortIcon: false,
76
+ }, rowHeight: 30, columnHeaderHeight: 30, domProps: tableDOMProps, columns: columnsMap }))));
77
+ };
78
+ const CommentsPopup = (props) => {
79
+ const cellComments = (0, react_redux_1.useSelector)((state) => {
80
+ return state.Comment.CommentThreads;
81
+ });
82
+ return (React.createElement(PopupPanel_1.PopupPanel, { headerText: 'Comments', glyphicon: 'comments', infoLink: props.moduleInfo.HelpPage }, (cellComments !== null && cellComments !== void 0 ? cellComments : []).map((cellComments, index) => {
83
+ var _a;
84
+ return React.createElement(CellComments, { key: (_a = cellComments === null || cellComments === void 0 ? void 0 : cellComments.Uuid) !== null && _a !== void 0 ? _a : index, commentThread: cellComments });
85
+ })));
86
+ };
87
+ exports.CommentsPopup = CommentsPopup;
@@ -126,7 +126,8 @@ const AdaptableObjectListItem = (props) => {
126
126
  const showEditButton = Boolean(EditWizard);
127
127
  const adaptableOpttions = adaptable.api.optionsApi.getAdaptableOptions();
128
128
  const disableDeleteConfirmationState = (0, react_redux_1.useSelector)((adaptableState) => SystemRedux.SystemDisableDeleteConfirmationSelector(adaptableState.System));
129
- const disableDeleteConfirmation = disableDeleteConfirmationState || ((_h = adaptableOpttions === null || adaptableOpttions === void 0 ? void 0 : adaptableOpttions.userInterfaceOptions) === null || _h === void 0 ? void 0 : _h.disableDeleteConfirmation);
129
+ const disableDeleteConfirmation = disableDeleteConfirmationState ||
130
+ ((_h = adaptableOpttions === null || adaptableOpttions === void 0 ? void 0 : adaptableOpttions.userInterfaceOptions) === null || _h === void 0 ? void 0 : _h.disableDeleteConfirmation);
130
131
  return (React.createElement(React.Fragment, null,
131
132
  React.createElement(exports.AdaptableObjectListItemView, { module: props.module, disableDeleteConfirmation: disableDeleteConfirmation, abObject: props.data.abObject, accessLevel: accessLevel, actions: actions, className: itemClassName, handleOnEdit: handleOnEdit, items: props.data.items, showActions: showActions, showEditButton: showEditButton, style: props.data.style, teamSharingActivated: teamSharingActivated, onShare: (config) => adaptable.api.teamSharingApi.shareAdaptableEntity(props.data.abObject, props.module.moduleInfo.ModuleName, config), entityType: entityType, deleteAction: deleteAction, deleteDisabled: props.deleteDisabled, deleteTooltip: props.deleteTooltip, editDisabled: isEditDisabled, suspendedEnabled: hasSuspend, onSuspend: () => dispatch(viewOptions.getSuspendAction(props.data.abObject)), onUnSuspend: () => dispatch(viewOptions.getUnSuspendAction(props.data.abObject)) }),
132
133
  isEditWizardVisible && EditWizard && (React.createElement(EditWizard, { defaultCurrentSectionName: wizardStepName, moduleInfo: props.module.moduleInfo, data: props.data.abObject, configEntities: null, onCloseWizard: handleCloseWizard, onFinishWizard: handleCloseWizard }))));
@@ -17,7 +17,7 @@ const ensurePortalElement = () => {
17
17
  }
18
18
  portalElement = document.createElement('div');
19
19
  portalElement.style.position = 'absolute';
20
- portalElement.style.zIndex = '999999';
20
+ portalElement.style.zIndex = '999';
21
21
  portalElement.style.top = '0px';
22
22
  portalElement.style.left = '0px';
23
23
  document.body.appendChild(portalElement);
@@ -110,7 +110,8 @@ class FilterFormComponent extends React.Component {
110
110
  }
111
111
  }
112
112
  async loadPermittedValues(filter = '') {
113
- const { values: distinctColumnValues, suppressClientSideFilter } = await (0, runIfNotResolvedIn_1.runIfNotResolvedIn)(this.props.api.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn(this.props.currentColumn.columnId, filter, this.props.api.optionsApi.getColumnFilterOptions().valuesFilterOptions.showDistinctFilteredValuesOnly), () => this._isMounted && this.setState({ isDistinctColumnValuesLoading: true }));
113
+ const { values: distinctColumnValues, suppressClientSideFilter } = await (0, runIfNotResolvedIn_1.runIfNotResolvedIn)(this.props.api.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn(this.props.currentColumn.columnId, filter, this.props.api.optionsApi.getColumnFilterOptions().valuesFilterOptions
114
+ .showDistinctFilteredValuesOnly), () => this._isMounted && this.setState({ isDistinctColumnValuesLoading: true }));
114
115
  if (this._isMounted) {
115
116
  this.setState({
116
117
  distinctColumnValues,
@@ -178,7 +179,12 @@ class FilterFormComponent extends React.Component {
178
179
  } })));
179
180
  }
180
181
  return (_a = predicateDef.inputs) === null || _a === void 0 ? void 0 : _a.map((predicateInput, index) => (React.createElement(rebass_1.Flex, { key: index, flexDirection: "row" },
181
- React.createElement(AdaptableInput_1.default, { disabled: this.isFilterDisabled(), type: predicateInput.type, autoFocus: index === 0, value: filter.Predicate.Inputs[index], onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), mb: 1, flex: 1, fontSize: 2 }))));
182
+ React.createElement(AdaptableInput_1.default, { onMouseDown: (event) => {
183
+ if (predicateInput.type === 'date') {
184
+ // This prevents the ag-grid dropdown closing when a date is selected
185
+ event.stopPropagation();
186
+ }
187
+ }, disabled: this.isFilterDisabled(), type: predicateInput.type, autoFocus: index === 0, value: filter.Predicate.Inputs[index], onChange: (e) => this.changeColumnPredicateInput(e.target.value, index), mb: 1, flex: 1, fontSize: 2 }))));
182
188
  }
183
189
  isFilterDisabled() {
184
190
  var _a;
@@ -78,9 +78,7 @@ const ListBoxFilterForm = (props) => {
78
78
  const textClear = (React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { autoFocus: true, type: "text", placeholder: "Search Column Values", value: FilterValue, style: {
79
79
  paddingTop: 'var(--ab-space-1)',
80
80
  paddingBottom: 'var(--ab-space-1)',
81
- paddingLeft: 'var(--ab-space-1)',
82
- borderRadius: 'var(--ab__border-radius)',
83
- }, OnTextChange: handleFilterValueChange }));
81
+ }, inputStyle: { padding: 'var(--ab-space-1)' }, OnTextChange: handleFilterValueChange }));
84
82
  const baseClassName = 'ab-ListBoxFilterForm';
85
83
  return (React.createElement("div", { className: (0, join_1.default)(baseClassName, props.useAgGridStyle ? `${baseClassName}--aggrid-style` : null, props.isLoading && `${baseClassName}--loading`) },
86
84
  React.createElement(rebass_1.Box, { px: 2 },
@@ -57,7 +57,8 @@ class QuickFilterFormComponent extends React.Component {
57
57
  hideEvent = 'blur';
58
58
  }
59
59
  let showQuickFilterDropdown = true;
60
- let hideQuickFilterDropdownFunction = this.props.api.optionsApi.getColumnFilterOptions().quickFilterOptions.hideQuickFilterDropdown;
60
+ let hideQuickFilterDropdownFunction = this.props.api.optionsApi.getColumnFilterOptions().quickFilterOptions
61
+ .hideQuickFilterDropdown;
61
62
  if (hideQuickFilterDropdownFunction) {
62
63
  const columnFilterContext = {
63
64
  column: this.props.currentColumn,
@@ -79,7 +80,7 @@ class QuickFilterFormComponent extends React.Component {
79
80
  showQuickFilterInput = !hideQuickFilterInputFunction(columnFilterContext);
80
81
  }
81
82
  return (React.createElement(React.Fragment, null,
82
- showQuickFilterDropdown && (React.createElement(OverlayTrigger_1.default, { className: "ab-QuickFilter", showEvent: showEvent, hideEvent: hideEvent, preventPortalEventPropagation: showEvent === 'click', targetOffset: 10, hideDelay: 300, "data-name": "quick-filter-overlay", render: () => (React.createElement(rebass_1.Flex, { className: "ab-QuickFilter__dropdown", flexDirection: "column", "data-name": "quick-filter", fontSize: 2 },
83
+ showQuickFilterDropdown && (React.createElement(OverlayTrigger_1.default, { className: "ab-QuickFilter", showEvent: showEvent, hideEvent: hideEvent, preventPortalEventPropagation: showEvent === 'click', targetOffset: 10, hideDelay: 50, "data-name": "quick-filter-overlay", render: () => (React.createElement(rebass_1.Flex, { className: "ab-QuickFilter__dropdown", flexDirection: "column", "data-name": "quick-filter", fontSize: 2 },
83
84
  (transientColumnFilter === null || transientColumnFilter === void 0 ? void 0 : transientColumnFilter.Predicate.PredicateId) && (React.createElement(SimpleButton_1.default, { p: 2, variant: "text", onClick: () => this.clearFilter() },
84
85
  React.createElement("span", { style: { width: 20, marginRight: 10 } },
85
86
  React.createElement(icons_1.Icon, { name: "delete" })),
@@ -102,7 +103,7 @@ class QuickFilterFormComponent extends React.Component {
102
103
  api.show();
103
104
  this.shouldOpenValuesDropdown = false;
104
105
  }
105
- }, quickFilterValuesTrigger: this.props.quickFilterValuesTrigger }));
106
+ }, valuesFilterTrigger: this.props.valuesFilterTrigger }));
106
107
  }
107
108
  return (activePredicateDef &&
108
109
  (activePredicateDef === null || activePredicateDef === void 0 ? void 0 : activePredicateDef.inputs) === undefined && (React.createElement(rebass_1.Box, { color: this.isFilterDisabled() ? undefined : 'var(--ab-color-text-on-primary)', disabled: this.isFilterDisabled(), p: 1, alignSelf: "center" }, activePredicateDef.label)));
@@ -252,6 +253,6 @@ function mapDispatchToProps(dispatch) {
252
253
  const QuickFilterForm = (0, react_redux_1.connect)(mapStateToProps, mapDispatchToProps)(QuickFilterFormComponent);
253
254
  const QuickFilterFormReact = (columnFilterProps) => {
254
255
  var _a, _b, _c;
255
- return (0, renderWithAdaptableContext_1.renderWithAdaptableContext)(React.createElement(QuickFilterForm, { api: columnFilterProps.Adaptable.api, quickFilterTrigger: (_a = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _a === void 0 ? void 0 : _a.quickFilterOptions.quickFilterTrigger, quickFilterValuesTrigger: (_b = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _b === void 0 ? void 0 : _b.quickFilterOptions.quickFilterValuesTrigger, quickFilterDebounce: (_c = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _c === void 0 ? void 0 : _c.quickFilterOptions.quickFilterDebounce, currentColumn: columnFilterProps.Column, teamSharingActivated: false, embedColumnMenu: columnFilterProps.Adaptable.embedColumnMenu }), columnFilterProps.Adaptable);
256
+ return (0, renderWithAdaptableContext_1.renderWithAdaptableContext)(React.createElement(QuickFilterForm, { api: columnFilterProps.Adaptable.api, quickFilterTrigger: (_a = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _a === void 0 ? void 0 : _a.quickFilterOptions.quickFilterTrigger, valuesFilterTrigger: (_b = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _b === void 0 ? void 0 : _b.valuesFilterOptions.valuesFilterTrigger, quickFilterDebounce: (_c = columnFilterProps.Adaptable.adaptableOptions.columnFilterOptions) === null || _c === void 0 ? void 0 : _c.quickFilterOptions.quickFilterDebounce, currentColumn: columnFilterProps.Column, teamSharingActivated: false, embedColumnMenu: columnFilterProps.Adaptable.embedColumnMenu }), columnFilterProps.Adaptable);
256
257
  };
257
258
  exports.QuickFilterFormReact = QuickFilterFormReact;
@@ -2,7 +2,7 @@
2
2
  import { ColumnFilter } from '../../../PredefinedConfig/Common/ColumnFilter';
3
3
  import { AdaptableApi } from '../../../Api/AdaptableApi';
4
4
  import { AdaptableColumn } from '../../../PredefinedConfig/Common/AdaptableColumn';
5
- import { QuickFilterOptions } from '../../../types';
5
+ import { ValuesFilterOptions } from '../../../types';
6
6
  export interface QuickFilterValuesProps {
7
7
  api: AdaptableApi;
8
8
  currentColumn: AdaptableColumn;
@@ -14,6 +14,6 @@ export interface QuickFilterValuesProps {
14
14
  show: () => any;
15
15
  hide: () => any;
16
16
  }) => void;
17
- quickFilterValuesTrigger?: QuickFilterOptions['quickFilterValuesTrigger'];
17
+ valuesFilterTrigger?: ValuesFilterOptions['valuesFilterTrigger'];
18
18
  }
19
19
  export declare const QuickFilterValues: (props: QuickFilterValuesProps) => JSX.Element;
@@ -99,7 +99,7 @@ const QuickFilterValues = (props) => {
99
99
  }
100
100
  };
101
101
  let showEvent = 'mouseenter';
102
- if (props.quickFilterValuesTrigger === 'click') {
102
+ if (props.valuesFilterTrigger === 'click') {
103
103
  showEvent = 'click';
104
104
  }
105
105
  let selectedValues = props.columnFilter.Predicate.PredicateId === 'Values' ? 'Select Values' : 'Exclude Values';
@@ -115,7 +115,8 @@ const QuickFilterValues = (props) => {
115
115
  return label !== null && label !== void 0 ? label : input;
116
116
  }).join(', ');
117
117
  }
118
- const quickFilterValuesWidth = props.api.optionsApi.getAdaptableOptions().columnFilterOptions.quickFilterOptions.quickFilterValuesWidth;
118
+ const quickFilterValuesWidth = props.api.optionsApi.getAdaptableOptions().columnFilterOptions.quickFilterOptions
119
+ .quickFilterValuesWidth;
119
120
  const getPopoverWidth = (targetWidth) => {
120
121
  if (quickFilterValuesWidth === 'auto') {
121
122
  return Math.max(180, targetWidth);
@@ -127,7 +128,7 @@ const QuickFilterValues = (props) => {
127
128
  };
128
129
  return (React.createElement(OverlayTrigger_1.default, { showEvent: showEvent,
129
130
  // cannot hide on blur, because the form input receives the input when this is opened
130
- hideEvent: "mouseleave", hideDelay: 300, ref: (api) => {
131
+ hideEvent: "mouseleave", hideDelay: 50, ref: (api) => {
131
132
  valuesDropdownRef.current = api;
132
133
  props.registerValuesDropdownApi(api);
133
134
  }, onVisibleChange: (visible) => {
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ interface NotesAndCommentsPopupProps {
3
+ }
4
+ export declare const GridCellPopup: React.FunctionComponent<NotesAndCommentsPopupProps>;
5
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GridCellPopup = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_redux_1 = require("react-redux");
7
+ const rebass_1 = require("rebass");
8
+ const NotesRedux_1 = require("../../../../Redux/ActionsReducers/NotesRedux");
9
+ const SystemRedux_1 = require("../../../../Redux/ActionsReducers/SystemRedux");
10
+ const AdaptableContext_1 = require("../../../AdaptableContext");
11
+ const CommentsEditor_1 = require("../../../Comments/CommentsEditor");
12
+ const NoteEditor_1 = require("../../../Notes/NoteEditor");
13
+ const CellPopup_1 = require("../../CellPopup");
14
+ const ConnectedNoteEditor = ({ enableEditMode }) => {
15
+ const { api } = (0, AdaptableContext_1.useAdaptable)();
16
+ const isReadonly = api.entitlementApi.isModuleReadOnlyEntitlement('Notes');
17
+ const editMode = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesEditModeSelector)(state.System));
18
+ const cellPopupService = api.internalApi.getCellPopupService();
19
+ const cellAddress = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesSelector)(state.System));
20
+ const [
21
+ // Only handle first note for now
22
+ // Later we can handle multiple notes
23
+ note,] = (0, react_redux_1.useSelector)((state) => {
24
+ return cellAddress ? (0, NotesRedux_1.GetNotesSelector)(state.Notes, cellAddress) : [];
25
+ });
26
+ const handleNoteChange = React.useCallback((value) => {
27
+ api.notesApi.updateNoteText(value, note);
28
+ }, [note]);
29
+ return (React.createElement(rebass_1.Flex, { onClick: () => enableEditMode(), flexDirection: "column", className: "ab-NotesPopup" },
30
+ React.createElement(NoteEditor_1.NoteEditor, { isReadonly: isReadonly, editMode: editMode, key: note === null || note === void 0 ? void 0 : note.Uuid, onClose: () => cellPopupService.hidePopup(), note: note === null || note === void 0 ? void 0 : note.Value, onNoteChange: (value) => handleNoteChange(value) })));
31
+ };
32
+ const GridCellPopup = (props) => {
33
+ const { api } = (0, AdaptableContext_1.useAdaptable)();
34
+ const cellPopupRef = React.useRef(null);
35
+ const editMode = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesEditModeSelector)(state.System));
36
+ const focusedEntity = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesFocusedEntitySelector)(state.System));
37
+ const cellAddress = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesSelector)(state.System));
38
+ const enableEditMode = (entity) => {
39
+ if (!editMode) {
40
+ const cellPopupService = api.internalApi.getCellPopupService();
41
+ cellPopupService.showPopup(cellAddress, true);
42
+ cellPopupService.editFocusedEntity(entity);
43
+ }
44
+ };
45
+ React.useEffect(() => {
46
+ var _a, _b;
47
+ (_b = (_a = cellPopupRef === null || cellPopupRef === void 0 ? void 0 : cellPopupRef.current) === null || _a === void 0 ? void 0 : _a.refreshContent) === null || _b === void 0 ? void 0 : _b.call(_a);
48
+ }, [focusedEntity]);
49
+ if (!cellAddress) {
50
+ return React.createElement(React.Fragment, null);
51
+ }
52
+ const noteEditor = React.createElement(ConnectedNoteEditor, { enableEditMode: () => enableEditMode('Note') });
53
+ const commentEditor = (React.createElement(CommentsEditor_1.CommentsEditor, { onRefreshContent: () => { var _a, _b; return (_b = (_a = cellPopupRef === null || cellPopupRef === void 0 ? void 0 : cellPopupRef.current) === null || _a === void 0 ? void 0 : _a.refreshContent) === null || _b === void 0 ? void 0 : _b.call(_a); }, enableEditMode: () => enableEditMode('Comment') }));
54
+ return (React.createElement(CellPopup_1.CellPopup, { ref: cellPopupRef, key: `${cellAddress.PrimaryKeyValue}-${cellAddress.ColumnId}`, isOpen: true, primaryKeyValue: cellAddress.PrimaryKeyValue, columnId: cellAddress.ColumnId }, (() => {
55
+ switch (focusedEntity) {
56
+ case 'Note':
57
+ return noteEditor;
58
+ case 'Comment':
59
+ return commentEditor;
60
+ default:
61
+ return (React.createElement(React.Fragment, null,
62
+ noteEditor,
63
+ commentEditor));
64
+ }
65
+ })()));
66
+ };
67
+ exports.GridCellPopup = GridCellPopup;
@@ -0,0 +1 @@
1
+ export { GridCellPopup } from './GridCellPopup';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GridCellPopup = void 0;
4
+ var GridCellPopup_1 = require("./GridCellPopup");
5
+ Object.defineProperty(exports, "GridCellPopup", { enumerable: true, get: function () { return GridCellPopup_1.GridCellPopup; } });
@@ -9,5 +9,6 @@ export type ColumnSelectorProps<IsMulti extends boolean = false> = {
9
9
  filterColumn?: (column: AdaptableColumn) => boolean;
10
10
  value?: IsMulti extends true ? string[] : string;
11
11
  onChange: (column: IsMulti extends true ? string[] : string) => void;
12
+ placeholder?: string;
12
13
  };
13
14
  export declare const ColumnSelector: <IsMulti extends boolean = false>(props: ColumnSelectorProps<IsMulti>) => JSX.Element;
@@ -6,6 +6,7 @@ const React = tslib_1.__importStar(require("react"));
6
6
  const Select_1 = require("../../../components/Select");
7
7
  const AdaptableContext_1 = require("../../AdaptableContext");
8
8
  const ColumnSelector = function (props) {
9
+ var _a;
9
10
  const { api } = (0, AdaptableContext_1.useAdaptable)();
10
11
  const columns = React.useMemo(() => {
11
12
  return api.columnApi.getColumnsOfType(props.type);
@@ -25,7 +26,7 @@ const ColumnSelector = function (props) {
25
26
  }
26
27
  return true;
27
28
  });
28
- return (React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: "Select Column", onChange: (colId) => {
29
+ return (React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : 'Select Column', onChange: (colId) => {
29
30
  props.onChange(colId);
30
31
  }, options: options }));
31
32
  };
@@ -1,13 +1,14 @@
1
1
  /// <reference types="react" />
2
2
  export type ValueType = number | string | Date;
3
- interface PermittedValuesSelectorProps<Value extends ValueType> {
3
+ interface PermittedValuesSelectorProps<Value extends ValueType, IsMulti extends boolean> {
4
+ isMulti?: IsMulti;
4
5
  columnId: string;
5
- value: Value;
6
- onChange: (value: Value) => void;
6
+ value: IsMulti extends true ? Value[] : Value;
7
+ onChange: (value: IsMulti extends true ? Value[] : Value) => void;
7
8
  allowNewValues?: boolean;
8
9
  className?: string;
9
10
  disabled?: boolean;
10
11
  placeholder?: string;
11
12
  }
12
- export declare const PermittedValuesSelector: <Value extends ValueType>(props: PermittedValuesSelectorProps<Value>) => JSX.Element;
13
+ export declare const PermittedValuesSelector: <Value extends ValueType, IsMulti extends boolean = false>(props: PermittedValuesSelectorProps<Value, IsMulti>) => JSX.Element;
13
14
  export {};