@adaptabletools/adaptable-cjs 20.3.0 → 21.0.0-canary.1

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 (419) hide show
  1. package/agGrid.d.ts +2 -1
  2. package/agGrid.js +3 -1
  3. package/base.css +36 -15
  4. package/base.css.map +1 -1
  5. package/icons/add-circle.svg +1 -0
  6. package/icons/add.svg +1 -0
  7. package/icons/alert.svg +1 -0
  8. package/icons/align-center.svg +1 -0
  9. package/icons/align-justify.svg +1 -0
  10. package/icons/align-left.svg +1 -0
  11. package/icons/align-right.svg +1 -0
  12. package/icons/arrow-down-long.svg +1 -0
  13. package/icons/arrow-down.svg +1 -0
  14. package/icons/arrow-expand.svg +1 -0
  15. package/icons/arrow-left.svg +1 -0
  16. package/icons/arrow-right.svg +1 -0
  17. package/icons/arrow-up-long.svg +1 -0
  18. package/icons/arrow-up.svg +1 -0
  19. package/icons/assignment.svg +1 -0
  20. package/icons/badge.svg +1 -0
  21. package/icons/bold.svg +1 -0
  22. package/icons/boolean-list.svg +1 -0
  23. package/icons/brain.svg +1 -0
  24. package/icons/broadcast.svg +1 -0
  25. package/icons/brush.svg +1 -0
  26. package/icons/building.svg +1 -0
  27. package/icons/calculated-column.svg +1 -0
  28. package/icons/calendar.svg +1 -0
  29. package/icons/call.svg +1 -0
  30. package/icons/case-lower.svg +1 -0
  31. package/icons/case-sentence.svg +1 -0
  32. package/icons/case-upper.svg +1 -0
  33. package/icons/cells.svg +1 -0
  34. package/icons/chart.svg +1 -0
  35. package/icons/chat.svg +1 -0
  36. package/icons/check-circle.svg +1 -0
  37. package/icons/check.svg +1 -0
  38. package/icons/checked.svg +1 -0
  39. package/icons/clipboard.svg +1 -0
  40. package/icons/clone.svg +1 -0
  41. package/icons/close.svg +1 -0
  42. package/icons/cloud-upload.svg +1 -0
  43. package/icons/collapse-all.svg +1 -0
  44. package/icons/collapse.svg +1 -0
  45. package/icons/color-palette.svg +1 -0
  46. package/icons/column-add.svg +1 -0
  47. package/icons/column-outline.svg +1 -0
  48. package/icons/columns.svg +1 -0
  49. package/icons/comment.svg +1 -0
  50. package/icons/comments.svg +1 -0
  51. package/icons/contact.svg +1 -0
  52. package/icons/contains.svg +1 -0
  53. package/icons/copy.svg +1 -0
  54. package/icons/csv.svg +1 -0
  55. package/icons/dashboard.svg +1 -0
  56. package/icons/data-set.svg +1 -0
  57. package/icons/date-range.svg +1 -0
  58. package/icons/delete.svg +1 -0
  59. package/icons/division.svg +1 -0
  60. package/icons/dock.svg +1 -0
  61. package/icons/dollar.svg +1 -0
  62. package/icons/download.svg +1 -0
  63. package/icons/downloaded.svg +1 -0
  64. package/icons/drag.svg +1 -0
  65. package/icons/edit-table.svg +1 -0
  66. package/icons/edit.svg +1 -0
  67. package/icons/ends-with.svg +1 -0
  68. package/icons/equals.svg +1 -0
  69. package/icons/equation.svg +1 -0
  70. package/icons/error.svg +1 -0
  71. package/icons/excel.svg +1 -0
  72. package/icons/expand-all.svg +1 -0
  73. package/icons/expand.svg +1 -0
  74. package/icons/exponent.svg +1 -0
  75. package/icons/export-data.svg +1 -0
  76. package/icons/export.svg +1 -0
  77. package/icons/fast-backward.svg +1 -0
  78. package/icons/fast-forward.svg +1 -0
  79. package/icons/fdc3.svg +1 -0
  80. package/icons/filled-circle.svg +1 -0
  81. package/icons/filter-list.svg +1 -0
  82. package/icons/filter-off.svg +1 -0
  83. package/icons/filter.svg +1 -0
  84. package/icons/flag.svg +1 -0
  85. package/icons/folder-open.svg +1 -0
  86. package/icons/folder-shared.svg +1 -0
  87. package/icons/folder.svg +1 -0
  88. package/icons/function.svg +1 -0
  89. package/icons/gradient.svg +1 -0
  90. package/icons/greater-than-or-equal.svg +1 -0
  91. package/icons/greater-than.svg +1 -0
  92. package/icons/grid-filter.svg +1 -0
  93. package/icons/grid-info.svg +1 -0
  94. package/icons/grid.svg +1 -0
  95. package/icons/history.svg +1 -0
  96. package/icons/home.svg +1 -0
  97. package/icons/horizontal-lines.svg +1 -0
  98. package/icons/import-export.svg +1 -0
  99. package/icons/import.svg +1 -0
  100. package/icons/info.svg +1 -0
  101. package/icons/interactions.svg +1 -0
  102. package/icons/italic.svg +1 -0
  103. package/icons/json.svg +1 -0
  104. package/icons/laptop.svg +1 -0
  105. package/icons/less-than-or-equal.svg +1 -0
  106. package/icons/less-than.svg +1 -0
  107. package/icons/lightning.svg +1 -0
  108. package/icons/link.svg +1 -0
  109. package/icons/list.svg +1 -0
  110. package/icons/logout.svg +1 -0
  111. package/icons/mail.svg +1 -0
  112. package/icons/menu.svg +1 -0
  113. package/icons/minus.svg +1 -0
  114. package/icons/money.svg +1 -0
  115. package/icons/multiplication.svg +1 -0
  116. package/icons/newpage.svg +1 -0
  117. package/icons/news.svg +1 -0
  118. package/icons/not-contains.svg +1 -0
  119. package/icons/not-equal.svg +1 -0
  120. package/icons/note.svg +1 -0
  121. package/icons/open-in-new.svg +1 -0
  122. package/icons/order.svg +1 -0
  123. package/icons/organisation.svg +1 -0
  124. package/icons/overline.svg +1 -0
  125. package/icons/paperclip.svg +1 -0
  126. package/icons/pause.svg +1 -0
  127. package/icons/percent-tag.svg +1 -0
  128. package/icons/percent.svg +1 -0
  129. package/icons/person.svg +1 -0
  130. package/icons/pie-chart.svg +1 -0
  131. package/icons/play.svg +1 -0
  132. package/icons/plus.svg +1 -0
  133. package/icons/quote.svg +1 -0
  134. package/icons/refresh.svg +1 -0
  135. package/icons/regex.svg +1 -0
  136. package/icons/reminder.svg +1 -0
  137. package/icons/resume.svg +1 -0
  138. package/icons/rows.svg +1 -0
  139. package/icons/save.svg +1 -0
  140. package/icons/schedule.svg +1 -0
  141. package/icons/science.svg +1 -0
  142. package/icons/search-table.svg +1 -0
  143. package/icons/search.svg +1 -0
  144. package/icons/select-all.svg +1 -0
  145. package/icons/select-fwd.svg +1 -0
  146. package/icons/select-off.svg +1 -0
  147. package/icons/settings.svg +1 -0
  148. package/icons/sort-asc.svg +1 -0
  149. package/icons/sort-desc.svg +1 -0
  150. package/icons/spanner.svg +1 -0
  151. package/icons/spark-line.svg +1 -0
  152. package/icons/starts-with.svg +1 -0
  153. package/icons/statusbar.svg +1 -0
  154. package/icons/stop.svg +1 -0
  155. package/icons/strikethrough.svg +1 -0
  156. package/icons/styled-grid.svg +1 -0
  157. package/icons/sync.svg +1 -0
  158. package/icons/tab-unselected.svg +1 -0
  159. package/icons/target.svg +1 -0
  160. package/icons/theme.svg +1 -0
  161. package/icons/traffic-lights.svg +1 -0
  162. package/icons/triangle-down.svg +1 -0
  163. package/icons/triangle-up.svg +1 -0
  164. package/icons/unchecked.svg +1 -0
  165. package/icons/underline.svg +1 -0
  166. package/icons/undo.svg +1 -0
  167. package/icons/unfilled-circle.svg +1 -0
  168. package/icons/upload.svg +1 -0
  169. package/icons/visibility-off-bold.svg +1 -0
  170. package/icons/visibility-off.svg +1 -0
  171. package/icons/visibility-on-bold.svg +1 -0
  172. package/icons/visibility-on.svg +1 -0
  173. package/icons/warning.svg +1 -0
  174. package/index.css +32 -15
  175. package/index.css.map +1 -1
  176. package/package.json +2 -2
  177. package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -5
  178. package/src/AdaptableOptions/ColumnOptions.d.ts +38 -38
  179. package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -2
  180. package/src/AdaptableOptions/EditOptions.d.ts +4 -7
  181. package/src/AdaptableOptions/FilterOptions.d.ts +50 -15
  182. package/src/AdaptableOptions/LayoutOptions.d.ts +40 -22
  183. package/src/AdaptableOptions/PredicateOptions.d.ts +1 -1
  184. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  185. package/src/AdaptableState/Common/AdaptableColumn.d.ts +7 -0
  186. package/src/AdaptableState/Common/AdaptablePredicate.js +2 -2
  187. package/src/AdaptableState/Common/CustomWindowConfig.d.ts +2 -2
  188. package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
  189. package/src/AdaptableState/FormatColumnState.d.ts +8 -1
  190. package/src/AdaptableState/InternalState.d.ts +1 -1
  191. package/src/AdaptableState/LayoutState.d.ts +26 -6
  192. package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
  193. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  194. package/src/Api/AlertApi.d.ts +5 -11
  195. package/src/Api/ColumnApi.d.ts +17 -1
  196. package/src/Api/ColumnFilterApi.d.ts +32 -2
  197. package/src/Api/CustomSortApi.d.ts +5 -10
  198. package/src/Api/FlashingCellApi.d.ts +10 -6
  199. package/src/Api/FormatColumnApi.d.ts +8 -18
  200. package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
  201. package/src/Api/Implementation/AlertApiImpl.js +7 -6
  202. package/src/Api/Implementation/ApiBase.d.ts +2 -12
  203. package/src/Api/Implementation/ApiBase.js +5 -5
  204. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
  205. package/src/Api/Implementation/ColumnApiImpl.js +59 -23
  206. package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
  207. package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
  208. package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
  209. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
  210. package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
  211. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
  212. package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
  213. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
  214. package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
  215. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
  216. package/src/Api/Implementation/LayoutApiImpl.js +107 -13
  217. package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
  218. package/src/Api/Implementation/LayoutHelpers.js +25 -5
  219. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
  220. package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
  221. package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
  222. package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
  223. package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
  224. package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
  225. package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
  226. package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
  227. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
  228. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
  229. package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
  230. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  231. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  232. package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
  233. package/src/Api/Internal/AlertInternalApi.js +10 -10
  234. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
  235. package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
  236. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
  237. package/src/Api/Internal/ColumnInternalApi.js +4 -0
  238. package/src/Api/Internal/DashboardInternalApi.js +1 -1
  239. package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
  240. package/src/Api/Internal/EntitlementInternalApi.js +8 -0
  241. package/src/Api/Internal/ExportInternalApi.js +1 -1
  242. package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
  243. package/src/Api/Internal/FormatColumnInternalApi.d.ts +8 -11
  244. package/src/Api/Internal/FormatColumnInternalApi.js +13 -13
  245. package/src/Api/Internal/GridInternalApi.d.ts +7 -10
  246. package/src/Api/Internal/GridInternalApi.js +76 -27
  247. package/src/Api/Internal/LayoutInternalApi.d.ts +10 -5
  248. package/src/Api/Internal/LayoutInternalApi.js +85 -5
  249. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  250. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  251. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  252. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  253. package/src/Api/LayoutApi.d.ts +7 -2
  254. package/src/Api/PlusMinusApi.d.ts +11 -7
  255. package/src/Api/ScheduleApi.d.ts +9 -16
  256. package/src/Api/ShortcutApi.d.ts +5 -6
  257. package/src/Api/StyledColumnApi.d.ts +10 -7
  258. package/src/Api/UserInterfaceApi.d.ts +5 -6
  259. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  260. package/src/Redux/ActionsReducers/InternalRedux.js +10 -10
  261. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  262. package/src/Redux/ActionsReducers/StyledColumnRedux.js +15 -1
  263. package/src/Redux/Store/AdaptableStore.js +10 -10
  264. package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
  265. package/src/Strategy/AdaptableModuleBase.js +46 -9
  266. package/src/Strategy/AlertModule.d.ts +3 -4
  267. package/src/Strategy/AlertModule.js +7 -4
  268. package/src/Strategy/CalculatedColumnModule.js +2 -2
  269. package/src/Strategy/CellSummaryModule.js +2 -2
  270. package/src/Strategy/ChartingModule.d.ts +3 -1
  271. package/src/Strategy/ChartingModule.js +9 -3
  272. package/src/Strategy/ColumnFilterModule.d.ts +1 -1
  273. package/src/Strategy/ColumnFilterModule.js +31 -15
  274. package/src/Strategy/ColumnInfoModule.js +2 -2
  275. package/src/Strategy/CommentModule.d.ts +1 -1
  276. package/src/Strategy/CommentModule.js +3 -3
  277. package/src/Strategy/CustomSortModule.d.ts +3 -4
  278. package/src/Strategy/CustomSortModule.js +2 -2
  279. package/src/Strategy/DashboardModule.js +1 -1
  280. package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
  281. package/src/Strategy/DataChangeHistoryModule.js +3 -10
  282. package/src/Strategy/DataImportModule.js +3 -3
  283. package/src/Strategy/ExportModule.js +1 -1
  284. package/src/Strategy/Fdc3Module.js +1 -1
  285. package/src/Strategy/FlashingCellModule.d.ts +3 -5
  286. package/src/Strategy/FlashingCellModule.js +3 -3
  287. package/src/Strategy/FormatColumnModule.d.ts +3 -4
  288. package/src/Strategy/FormatColumnModule.js +2 -2
  289. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  290. package/src/Strategy/FreeTextColumnModule.js +2 -2
  291. package/src/Strategy/GridInfoModule.js +2 -2
  292. package/src/Strategy/Interface/IModule.d.ts +7 -3
  293. package/src/Strategy/LayoutModule.js +11 -11
  294. package/src/Strategy/NoteModule.d.ts +1 -1
  295. package/src/Strategy/NoteModule.js +3 -3
  296. package/src/Strategy/PlusMinusModule.d.ts +3 -4
  297. package/src/Strategy/PlusMinusModule.js +2 -2
  298. package/src/Strategy/QuickSearchModule.d.ts +2 -0
  299. package/src/Strategy/QuickSearchModule.js +9 -0
  300. package/src/Strategy/ScheduleModule.d.ts +3 -4
  301. package/src/Strategy/ScheduleModule.js +2 -2
  302. package/src/Strategy/SettingsPanelModule.js +1 -1
  303. package/src/Strategy/ShortcutModule.d.ts +3 -4
  304. package/src/Strategy/ShortcutModule.js +2 -2
  305. package/src/Strategy/StatusBarModule.d.ts +3 -2
  306. package/src/Strategy/StatusBarModule.js +6 -3
  307. package/src/Strategy/StyledColumnModule.d.ts +3 -4
  308. package/src/Strategy/StyledColumnModule.js +2 -2
  309. package/src/Strategy/SystemStatusModule.js +2 -2
  310. package/src/Strategy/TeamSharingModule.d.ts +1 -1
  311. package/src/Strategy/TeamSharingModule.js +5 -2
  312. package/src/Strategy/ToolPanelModule.d.ts +1 -1
  313. package/src/Strategy/ToolPanelModule.js +1 -4
  314. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
  315. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  316. package/src/Utilities/Constants/DocumentationLinkConstants.js +2 -1
  317. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  318. package/src/Utilities/Extensions/ArrayExtensions.js +68 -15
  319. package/src/Utilities/Helpers/AdaptableHelper.d.ts +1 -0
  320. package/src/Utilities/Helpers/AdaptableHelper.js +1 -0
  321. package/src/Utilities/ObjectFactory.d.ts +7 -3
  322. package/src/Utilities/ObjectFactory.js +28 -19
  323. package/src/Utilities/Services/AnnotationsService.js +1 -1
  324. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  325. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  326. package/src/Utilities/Services/ModuleService.js +18 -6
  327. package/src/View/AdaptableView.js +3 -1
  328. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  329. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  330. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  331. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  332. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  333. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  334. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  335. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  336. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  337. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  338. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  339. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  340. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  341. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  342. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  343. package/src/View/Components/ColumnFilter/utils.js +6 -1
  344. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  345. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  346. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +5 -5
  347. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  348. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  349. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  350. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  351. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  352. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  353. package/src/View/Dashboard/Dashboard.js +2 -2
  354. package/src/View/Dashboard/DashboardPopup.js +3 -1
  355. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  356. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  357. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +58 -21
  358. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -11
  359. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  360. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
  361. package/src/View/Layout/TransposedPopup.js +2 -2
  362. package/src/View/Layout/Wizard/LayoutWizard.js +5 -7
  363. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  364. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  365. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  366. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  367. package/src/View/Theme/ThemeSelector.js +1 -1
  368. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  369. package/src/agGrid/AdaptableAgGrid.js +251 -216
  370. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  371. package/src/agGrid/AdaptableFilterHandler.js +65 -0
  372. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  373. package/src/agGrid/AgGridAdapter.js +13 -46
  374. package/src/agGrid/AgGridColumnAdapter.d.ts +2 -2
  375. package/src/agGrid/AgGridColumnAdapter.js +81 -36
  376. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  377. package/src/agGrid/AgGridFilterAdapter.js +53 -0
  378. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  379. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +26 -37
  380. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  381. package/src/agGrid/AgGridModulesAdapter.js +70 -0
  382. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  383. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  384. package/src/components/Dialog/index.js +1 -1
  385. package/src/components/Dropdown/Arrows.js +2 -2
  386. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  387. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +4 -4
  388. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +1 -1
  389. package/src/components/FileDroppable/index.js +1 -1
  390. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  391. package/src/components/OverlayTrigger/index.js +1 -1
  392. package/src/components/Select/Select.d.ts +1 -1
  393. package/src/components/Select/Select.js +114 -22
  394. package/src/components/icons/DefaultIcon.d.ts +0 -1
  395. package/src/components/icons/DefaultIcon.js +0 -8
  396. package/src/env.js +2 -2
  397. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  398. package/src/layout-manager/src/index.d.ts +11 -3
  399. package/src/layout-manager/src/index.js +302 -87
  400. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  401. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  402. package/src/metamodel/adaptable.metamodel.d.ts +103 -40
  403. package/src/metamodel/adaptable.metamodel.js +1 -1
  404. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  405. package/src/migration/VersionUpgrade17.js +1 -1
  406. package/src/migration/VersionUpgrade20.js +1 -0
  407. package/src/migration/VersionUpgrade21.d.ts +6 -0
  408. package/src/migration/VersionUpgrade21.js +28 -0
  409. package/src/types.d.ts +7 -8
  410. package/tsconfig.cjs.tsbuildinfo +1 -1
  411. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  412. package/src/agGrid/FilterWrapper.d.ts +0 -2
  413. package/src/agGrid/FilterWrapper.js +0 -136
  414. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  415. package/src/agGrid/agGridModules.d.ts +0 -3
  416. package/src/agGrid/agGridModules.js +0 -18
  417. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  418. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -21
  419. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -102,6 +102,7 @@ const agGridDataTypeDefinitions_1 = require("./agGridDataTypeDefinitions");
102
102
  const AgGridThemeAdapter_1 = require("./AgGridThemeAdapter");
103
103
  const VersionUpgrade20_1 = require("../migration/VersionUpgrade20");
104
104
  const adaptableOverrideCheck_1 = require("../Utilities/adaptableOverrideCheck");
105
+ const AgGridModulesAdapter_1 = require("./AgGridModulesAdapter");
105
106
  const LocalEventService_Prototype = ag_grid_enterprise_1.LocalEventService.prototype;
106
107
  const LocalEventService_dispatchEvent = LocalEventService_Prototype.dispatchEvent;
107
108
  LocalEventService_Prototype.dispatchEvent = function (event) {
@@ -112,7 +113,12 @@ LocalEventService_Prototype.dispatchEvent = function (event) {
112
113
  }
113
114
  LocalEventService_dispatchEvent.apply(this, arguments);
114
115
  if (event.type === 'cellChanged' || event.type === 'dataChanged') {
116
+ // @ts-ignore
115
117
  const eventRowNode = event.node;
118
+ if (!eventRowNode) {
119
+ AdaptableLogger_1.AdaptableLogger.consoleErrorBase(`No RowNode found in passed event, this should never happen!`, event);
120
+ return;
121
+ }
116
122
  const extractGridApiFromRowNode = (rowNode) => {
117
123
  const rowNodeApi = rowNode?.beans?.gridApi;
118
124
  if (!rowNodeApi) {
@@ -185,6 +191,7 @@ class AdaptableAgGrid {
185
191
  this.agGridColumnAdapter = new AgGridColumnAdapter_1.AgGridColumnAdapter(this);
186
192
  this.agGridExportAdapter = new AgGridExportAdapter_1.AgGridExportAdapter(this);
187
193
  this.agGridThemeAdapter = new AgGridThemeAdapter_1.AgGridThemeAdapter(this);
194
+ this.agGridModulesAdapter = new AgGridModulesAdapter_1.AgGridModulesAdapter(this);
188
195
  this.DataService = new DataService_1.DataService(this);
189
196
  }
190
197
  static forEachAdaptable(fn) {
@@ -352,26 +359,29 @@ class AdaptableAgGrid {
352
359
  this.lifecycleState = 'setupAgGrid';
353
360
  const gridOptions = config.gridOptions;
354
361
  // Needed here because special column defs are required for deriving the adaptable column state
355
- const columnDefs = this.agGridAdapter.getColumnDefinitionsInclSpecialColumns(gridOptions.columnDefs || []);
362
+ let columnDefs = this.agGridAdapter.getColumnDefinitionsInclSpecialColumns(gridOptions.columnDefs || []);
356
363
  gridOptions.columnDefs = columnDefs;
357
364
  this.setInitialGridOptions(gridOptions, config.variant);
358
- const { gridState: initialGridState, layoutModel } = this.mapAdaptableStateToAgGridState(this.adaptableStore.TheStore.getState(), gridOptions.columnDefs, { isTree: !!gridOptions.treeData });
365
+ const { gridState: initialGridState, layoutModel } = this.mapAdaptableStateToAgGridState(this.adaptableStore.TheStore.getState(), gridOptions.columnDefs, {
366
+ isTree: !!gridOptions.treeData,
367
+ colTypes: gridOptions.columnTypes,
368
+ defaultColDef: gridOptions.defaultColDef,
369
+ });
370
+ columnDefs = src_1.LayoutManager.getColumnDefsChangesForLayout(layoutModel, columnDefs) ?? columnDefs;
371
+ gridOptions.columnDefs = columnDefs;
359
372
  gridOptions.initialState = initialGridState;
360
373
  if (layoutModel) {
361
374
  if ((0, isPivotLayoutModel_1.isPivotLayoutModel)(layoutModel)) {
362
375
  gridOptions.pivotDefaultExpanded = layoutModel.PivotExpandLevel;
363
376
  }
364
- else {
365
- gridOptions.groupDisplayType =
366
- layoutModel.RowGroupDisplayType === 'multi' ? 'multipleColumns' : 'singleColumn';
367
- }
377
+ gridOptions.groupDisplayType =
378
+ layoutModel.RowGroupDisplayType === 'multi' ? 'multipleColumns' : 'singleColumn';
379
+ // fixes issue #3053
380
+ gridOptions.suppressAggFuncInHeader = !!layoutModel.SuppressAggFuncInHeader;
368
381
  }
369
382
  this.lifecycleState = 'initAgGrid';
370
383
  this.agGridAdapter.initialGridOptions = gridOptions;
371
384
  const perfInitAgGrid = this.logger.beginPerf(`initAgGrid()`);
372
- // AG Grid evaluates early on the floatingFilter params, so we need to "suppress" the floating filter temporarily
373
- // we will reset it once Adaptable is ready
374
- this.agGridColumnAdapter.setupColumnFloatingFilterTemporarily(gridOptions);
375
385
  this.validateColumnDefTypes(gridOptions.columnDefs);
376
386
  const agGridApi = await this.initializeAgGrid(gridOptions, config.modules, config.renderAgGridFrameworkComponent);
377
387
  if (agGridApi === false) {
@@ -410,7 +420,9 @@ class AdaptableAgGrid {
410
420
  this.agGridAdapter.monkeyPatchingGridOptionsUpdates();
411
421
  this.agGridAdapter.monkeyPatchingAggColumnFilters();
412
422
  this.lifecycleState = 'agGridReady';
413
- this.logger.info(`Registered AG Grid modules: `, this.agGridAdapter.getAgGridRegisteredModuleNames().sort());
423
+ this.api.entitlementApi.internalApi.setModulesAgGridDepsInfos();
424
+ this.ModuleService.logMissingAgGridDepsInfos();
425
+ this.logger.info(`Registered AG Grid modules (incl. dependent modules): `, this.agGridModulesAdapter.getAgGridRegisteredModuleNames().sort());
414
426
  /**
415
427
  * At this point AG Grid is initialized!
416
428
  */
@@ -422,6 +434,9 @@ class AdaptableAgGrid {
422
434
  this.validatePrimaryKey();
423
435
  // TODO AFL MIG: we could just patch the defautl Layout on init? instead
424
436
  this.checkShouldClearExistingFiltersOrSearches();
437
+ // FIXME AFL FILTER: talk with Radu: should ColumnFilters still be ignored?!
438
+ // see layoutModel.Ignore_ColumnFilters
439
+ // initial filter model
425
440
  this.applyFiltering();
426
441
  // apply quick search if there is one
427
442
  // yes, we could have put this on the gridOptions.findSearchValue
@@ -440,19 +455,6 @@ class AdaptableAgGrid {
440
455
  (0, LayoutHelpers_1.checkForDuplicateColumns)(currentLayout);
441
456
  this._prevLayout = currentLayout;
442
457
  this.__prevLayoutForRefresh = currentLayout;
443
- if ((0, LayoutHelpers_1.isPivotLayout)(currentLayout)) {
444
- // this is very very strange!
445
- // for some projects, if the initial layout is pivot, the columnDefs of the pivot resutl columns are NOT derived correctly from the main colDefs
446
- // doing the following line fixes the issue because it foces the pivot columns to be created again
447
- // this proj works without the hack: /tests/pages/format-column/initial-pivot-layout.page.tsx
448
- // but this proj needs the hack: /tests/pages/format-column/initial-pivot-layout-docs.page.tsx
449
- this.agGridAdapter.setGridOption('pivotMode', false);
450
- this.agGridAdapter.setGridOption('pivotMode', true);
451
- // also quick search is not working initially, although the setupColumns is called correctly
452
- // so we need to do this to make it work
453
- // see test /tests/pages/quick-search/pivot-search.spec.ts
454
- this.updateColumnModelAndRefreshGrid();
455
- }
456
458
  const layoutModelForApply = (0, LayoutHelpers_1.layoutStateToLayoutModel)(currentLayout);
457
459
  this.layoutManager.applyRowGroupValues(layoutModelForApply.RowGroupValues, layoutModelForApply.RowGroupedColumns);
458
460
  this.layoutManager.applyColumnGroupCollapseExpandState(layoutModelForApply);
@@ -576,21 +578,27 @@ You need to define at least one Layout!`);
576
578
  normalize: true,
577
579
  });
578
580
  }
579
- applyFiltering() {
581
+ applyFiltering(config) {
582
+ // default updateColumnFilterModel to TRUE, if not provided
583
+ const updateColumnFilterModel = config?.updateColumnFilterModel ?? true;
580
584
  const agGridApi = this.agGridAdapter.getAgGridApi();
581
- this._emit('AdapTableFiltersApplied');
585
+ if (updateColumnFilterModel) {
586
+ const columnFilters = this.api.filterApi.columnFilterApi
587
+ .getActiveColumnFilters()
588
+ // FIXME AFL: we need this additional filter because 'getActiveColumnFilters' checks only for suspended while 'isColumnFilterActive' also checkss for COMPLETE filters
589
+ .filter((columnFilter) => this.api.filterApi.columnFilterApi.isColumnFilterActive(columnFilter));
590
+ const filterModel = {};
591
+ columnFilters.forEach((columnFilter) => {
592
+ filterModel[columnFilter.ColumnId] = columnFilter;
593
+ });
594
+ agGridApi.setFilterModel(filterModel);
595
+ }
596
+ // FIXME AFL FILTER why is this needed???
582
597
  this.refreshSelectedCellsState();
583
598
  this.refreshSelectedRowsState();
584
- this.agGridAdapter.updateColumnFilterActiveState();
585
599
  agGridApi.onFilterChanged();
600
+ this._emit('AdapTableFiltersApplied');
586
601
  }
587
- // refreshAgGridWithAdaptableState() {
588
- // this.refreshColDefs();
589
- // this.api.themeApi.applyCurrentTheme();
590
- // this.api.internalApi.setTreeMode(this.agGridAdapter.initialGridOptions.treeData);
591
- // this.checkShouldClearExistingFiltersOrSearches();
592
- // this.applyColumnFiltering();
593
- // }
594
602
  showQuickFilter() {
595
603
  const height = this.api.optionsApi.getFilterOptions().columnFilterOptions.quickFilterHeight;
596
604
  this.agGridAdapter.getAgGridApi().setGridOption('floatingFiltersHeight', height);
@@ -774,22 +782,36 @@ You need to define at least one Layout!`);
774
782
  ? true
775
783
  : original_allowContextMenuWithControlKey;
776
784
  });
785
+ /**
786
+ * `enableFilterHandlers`
787
+ */
788
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'enableFilterHandlers', (original_enableFilterHandlers) => {
789
+ const useAdaptableFiltering = this.api.optionsApi.getFilterOptions().useAdaptableFiltering;
790
+ if (useAdaptableFiltering) {
791
+ return true;
792
+ }
793
+ return original_enableFilterHandlers;
794
+ });
795
+ /**
796
+ * `suppressSetFilterByDefault`
797
+ */
798
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'suppressSetFilterByDefault', (original_suppressSetFilterByDefault) => {
799
+ const useAdaptableFiltering = this.api.optionsApi.getFilterOptions().useAdaptableFiltering;
800
+ if (useAdaptableFiltering) {
801
+ return true;
802
+ }
803
+ return original_suppressSetFilterByDefault;
804
+ });
777
805
  /**
778
806
  * `isExternalFilterPresent`
779
807
  */
780
808
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'isExternalFilterPresent', (original_isExternalFilterPresent) => {
781
809
  return (params) => {
782
810
  if (!this.isAvailable) {
783
- return true;
811
+ return false;
784
812
  }
785
813
  const isGridFilterActive = StringExtensions_1.default.IsNotNullOrEmpty(this.api.filterApi.gridFilterApi.getCurrentGridFilterExpression());
786
- const isTableColumnFiltersActive = ArrayExtensions_1.default.IsNotNullOrEmpty(this.api.filterApi.columnFilterApi
787
- .getActiveColumnFilters()
788
- .filter((columnFilter) => !this.api.columnApi.isPivotResultColumn(columnFilter.ColumnId)));
789
814
  return (isGridFilterActive ||
790
- // only Table ColumnFilters are handled here
791
- // see #doAggregateFiltersPassMonkeyPatcher for filtering Pivot Columns
792
- isTableColumnFiltersActive ||
793
815
  // it means that userPropertyValue will be called so we re-init that collection
794
816
  (original_isExternalFilterPresent ? original_isExternalFilterPresent(params) : false));
795
817
  };
@@ -817,20 +839,11 @@ You need to define at least one Layout!`);
817
839
  return true;
818
840
  }
819
841
  }
820
- // first assess if the Row i s filterable - if not, then return true so it appears in Grid
821
- const isRowFilterable = this.api.optionsApi.getFilterOptions().isRowFilterable;
822
- if (typeof isRowFilterable === 'function') {
823
- const rowFilterableContext = {
824
- ...this.api.internalApi.buildBaseContext(),
825
- rowNode: node,
826
- data: node.data,
827
- };
828
- if (!isRowFilterable(rowFilterableContext)) {
829
- return true;
830
- }
842
+ // first assess if the Row is filterable - if not, then return true so it always appears in Grid
843
+ const isRowFilterable = this.api.gridApi.internalApi.isRowFilterable(node);
844
+ if (!isRowFilterable) {
845
+ return true;
831
846
  }
832
- // get the Primary Key Value for the Row Node being evaluated
833
- const primaryKey = this.getPrimaryKeyValueFromRowNode(node);
834
847
  // next we assess a Grid Filter (if its running locally)
835
848
  const currentGridFilterExpression = this.api.filterApi.gridFilterApi.getCurrentGridFilterExpression();
836
849
  if (StringExtensions_1.default.IsNotNullOrEmpty(currentGridFilterExpression)) {
@@ -850,29 +863,6 @@ You need to define at least one Layout!`);
850
863
  }
851
864
  }
852
865
  }
853
- // finally we evaluate column filters
854
- const tableColumnFilters = this.api.filterApi.columnFilterApi
855
- .getActiveColumnFilters()
856
- .filter((columnFilter) => !this.api.columnApi.isPivotResultColumn(columnFilter.ColumnId));
857
- try {
858
- // only Table ColumnFilters are handled here
859
- // see #doAggregateFiltersPassMonkeyPatcher for filtering Pivot Columns
860
- if (tableColumnFilters.length > 0) {
861
- for (const columnFilter of tableColumnFilters) {
862
- const evaluateColumnFilterOnClient = this.api.expressionApi.internalApi.shouldEvaluatePredicatesInAdaptableQL('ColumnFilter', columnFilter, columnFilter.Predicates);
863
- if (evaluateColumnFilterOnClient) {
864
- const columnFilterEvaluationResult = this.api.filterApi.columnFilterApi.internalApi.evaluateColumnFilter(columnFilter, node);
865
- if (!columnFilterEvaluationResult) {
866
- return false;
867
- }
868
- }
869
- }
870
- }
871
- }
872
- catch (ex) {
873
- this.logger.error(ex);
874
- return false;
875
- }
876
866
  const result = original_doesExternalFilterPass
877
867
  ? original_doesExternalFilterPass(node)
878
868
  : true;
@@ -920,107 +910,111 @@ You need to define at least one Layout!`);
920
910
  /**
921
911
  * `sidebar`
922
912
  */
923
- this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'sideBar', (original_sideBar) => {
924
- if (!original_sideBar) {
925
- // lucky us, no sideBar is defined, so we don't have to do anything
926
- return original_sideBar;
927
- }
928
- const isAdaptableToolPanelHidden = this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel');
929
- const adaptableToolPanelDef = {
930
- id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
931
- toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
932
- labelDefault: GeneralConstants.ADAPTABLE,
933
- labelKey: 'adaptable',
934
- iconKey: 'menu',
935
- width: UIHelper_1.default.getAdaptableToolPanelWidth(),
936
- minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
937
- // maxWidth = undefined,
938
- };
939
- const mapToolPanelDefs = (toolPanelDefs = []) => {
940
- // if it's an alias for the adaptable tool panel, map it to a ToolPanelDef, otherwise return it as it is
941
- return toolPanelDefs.map((toolPanelDef) => toolPanelDef === GeneralConstants.ADAPTABLE_TOOLPANEL_ID
942
- ? adaptableToolPanelDef
943
- : toolPanelDef);
944
- };
945
- const isSideBarDefObject = (sidebarDef) => {
946
- return Array.isArray(sidebarDef?.toolPanels);
947
- };
948
- let result;
949
- if (original_sideBar === true) {
950
- // create all tool panels with default settings
951
- const toolPanels = [];
952
- toolPanels.push(GeneralConstants.AGGRID_TOOLPANEL_FILTERS);
953
- toolPanels.push(GeneralConstants.AGGRID_TOOLPANEL_COLUMNS);
954
- if (!isAdaptableToolPanelHidden) {
955
- toolPanels.push(adaptableToolPanelDef);
913
+ if (gridOptions.sideBar != undefined) {
914
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'sideBar', (original_sideBar) => {
915
+ if (!original_sideBar) {
916
+ // lucky us, no sideBar is defined, so we don't have to do anything
917
+ return original_sideBar;
956
918
  }
957
- result = {
958
- toolPanels: toolPanels,
919
+ const isAdaptableToolPanelHidden = this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel');
920
+ const adaptableToolPanelDef = {
921
+ id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
922
+ toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
923
+ labelDefault: GeneralConstants.ADAPTABLE,
924
+ labelKey: 'adaptable',
925
+ iconKey: 'menu',
926
+ width: UIHelper_1.default.getAdaptableToolPanelWidth(),
927
+ minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
928
+ // maxWidth = undefined,
959
929
  };
960
- }
961
- // if there is only one tool panel, and it's the adaptable one => we have to handle it
962
- else if (typeof original_sideBar === 'string') {
963
- if (gridOptions.sideBar === GeneralConstants.ADAPTABLE_TOOLPANEL_ID) {
964
- if (!isAdaptableToolPanelHidden)
965
- result = {
966
- toolPanels: [adaptableToolPanelDef],
967
- };
968
- }
969
- else {
970
- result = original_sideBar;
930
+ const mapToolPanelDefs = (toolPanelDefs = []) => {
931
+ // if it's an alias for the adaptable tool panel, map it to a ToolPanelDef, otherwise return it as it is
932
+ return toolPanelDefs.map((toolPanelDef) => toolPanelDef === GeneralConstants.ADAPTABLE_TOOLPANEL_ID
933
+ ? adaptableToolPanelDef
934
+ : toolPanelDef);
935
+ };
936
+ const isSideBarDefObject = (sidebarDef) => {
937
+ return Array.isArray(sidebarDef?.toolPanels);
938
+ };
939
+ let result;
940
+ if (original_sideBar === true) {
941
+ // create all tool panels with default settings
942
+ const toolPanels = [];
943
+ toolPanels.push(GeneralConstants.AGGRID_TOOLPANEL_FILTERS);
944
+ toolPanels.push(GeneralConstants.AGGRID_TOOLPANEL_COLUMNS);
945
+ if (!isAdaptableToolPanelHidden) {
946
+ toolPanels.push(adaptableToolPanelDef);
947
+ }
948
+ result = {
949
+ toolPanels: toolPanels,
950
+ };
971
951
  }
972
- }
973
- // if it's an array, process the tool panel definitions
974
- else if (Array.isArray(original_sideBar)) {
975
- if (!original_sideBar.includes(GeneralConstants.ADAPTABLE_TOOLPANEL_ID) ||
976
- isAdaptableToolPanelHidden) {
977
- result = original_sideBar;
952
+ // if there is only one tool panel, and it's the adaptable one => we have to handle it
953
+ else if (typeof original_sideBar === 'string') {
954
+ if (gridOptions.sideBar === GeneralConstants.ADAPTABLE_TOOLPANEL_ID) {
955
+ if (!isAdaptableToolPanelHidden)
956
+ result = {
957
+ toolPanels: [adaptableToolPanelDef],
958
+ };
959
+ }
960
+ else {
961
+ result = original_sideBar;
962
+ }
978
963
  }
979
964
  // if it's an array, process the tool panel definitions
980
- const sidebarDef = {};
981
- sidebarDef.toolPanels = mapToolPanelDefs(original_sideBar);
982
- result = sidebarDef;
983
- }
984
- // if it's fully-fledged SideBarDef, process its tool panel definitions
985
- else if (isSideBarDefObject(original_sideBar)) {
986
- if (original_sideBar.toolPanels?.some((toolpanelDef) => typeof toolpanelDef !== 'string' &&
987
- toolpanelDef.id === GeneralConstants.ADAPTABLE_TOOLPANEL_ID &&
988
- !isAdaptableToolPanelHidden)) {
989
- // if there is an Adaptable SideBarDef, don't touch it as it may contain user-defined properties
990
- result = original_sideBar;
991
- }
992
- else {
993
- result = {
994
- ...original_sideBar,
995
- toolPanels: mapToolPanelDefs(original_sideBar.toolPanels),
996
- };
965
+ else if (Array.isArray(original_sideBar)) {
966
+ if (!original_sideBar.includes(GeneralConstants.ADAPTABLE_TOOLPANEL_ID) ||
967
+ isAdaptableToolPanelHidden) {
968
+ result = original_sideBar;
969
+ }
970
+ // if it's an array, process the tool panel definitions
971
+ const sidebarDef = {};
972
+ sidebarDef.toolPanels = mapToolPanelDefs(original_sideBar);
973
+ result = sidebarDef;
997
974
  }
998
- }
999
- this.hasAdaptableToolPanel =
1000
- isSideBarDefObject(result) &&
1001
- result.toolPanels?.some((toolPanelDef) => typeof toolPanelDef !== 'string' &&
1002
- toolPanelDef.id === GeneralConstants.ADAPTABLE_TOOLPANEL_ID);
1003
- return result;
1004
- });
1005
- /**
1006
- * `statusBar`
1007
- */
1008
- this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'statusBar', (original_statusBar) => {
1009
- const statusPanels = (original_statusBar?.statusPanels ?? [])?.map((statusPanel) => {
1010
- if (statusPanel.statusPanel === StatusBarState_1.ADAPTABLE_STATUS_PANEL) {
1011
- this.adaptableStatusPanelKeys.push(statusPanel.key);
1012
- const context = {
1013
- Key: statusPanel.key,
1014
- };
1015
- return {
1016
- ...statusPanel,
1017
- statusPanel: (0, createAgStatusPanelComponent_1.createAgStatusPanelComponent)(AdaptableStatusBar_1.AdaptableStatusBar, this, context),
1018
- };
975
+ // if it's fully-fledged SideBarDef, process its tool panel definitions
976
+ else if (isSideBarDefObject(original_sideBar)) {
977
+ if (original_sideBar.toolPanels?.some((toolpanelDef) => typeof toolpanelDef !== 'string' &&
978
+ toolpanelDef.id === GeneralConstants.ADAPTABLE_TOOLPANEL_ID &&
979
+ !isAdaptableToolPanelHidden)) {
980
+ // if there is an Adaptable SideBarDef, don't touch it as it may contain user-defined properties
981
+ result = original_sideBar;
982
+ }
983
+ else {
984
+ result = {
985
+ ...original_sideBar,
986
+ toolPanels: mapToolPanelDefs(original_sideBar.toolPanels),
987
+ };
988
+ }
1019
989
  }
1020
- return statusPanel;
990
+ this.hasAdaptableToolPanel =
991
+ isSideBarDefObject(result) &&
992
+ result.toolPanels?.some((toolPanelDef) => typeof toolPanelDef !== 'string' &&
993
+ toolPanelDef.id === GeneralConstants.ADAPTABLE_TOOLPANEL_ID);
994
+ return result;
1021
995
  });
1022
- return { ...original_statusBar, statusPanels };
1023
- });
996
+ }
997
+ if (gridOptions.statusBar != undefined) {
998
+ /**
999
+ * `statusBar`
1000
+ */
1001
+ this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'statusBar', (original_statusBar) => {
1002
+ const statusPanels = (original_statusBar?.statusPanels ?? [])?.map((statusPanel) => {
1003
+ if (statusPanel.statusPanel === StatusBarState_1.ADAPTABLE_STATUS_PANEL) {
1004
+ this.adaptableStatusPanelKeys.push(statusPanel.key);
1005
+ const context = {
1006
+ Key: statusPanel.key,
1007
+ };
1008
+ return {
1009
+ ...statusPanel,
1010
+ statusPanel: (0, createAgStatusPanelComponent_1.createAgStatusPanelComponent)(AdaptableStatusBar_1.AdaptableStatusBar, this, context),
1011
+ };
1012
+ }
1013
+ return statusPanel;
1014
+ });
1015
+ return { ...original_statusBar, statusPanels };
1016
+ });
1017
+ }
1024
1018
  /**
1025
1019
  * `getRowStyle`
1026
1020
  */
@@ -1140,7 +1134,6 @@ You need to define at least one Layout!`);
1140
1134
  result = await renderAgGridFrameworkComponent(gridOptions);
1141
1135
  }
1142
1136
  catch (err) {
1143
- console.log('Failed to get AG Grid API');
1144
1137
  result = false;
1145
1138
  }
1146
1139
  if (result === false) {
@@ -1151,7 +1144,6 @@ You need to define at least one Layout!`);
1151
1144
  // in that case, we have to re-populate it with the Adaptable context values
1152
1145
  const agGridContext = agGridApi.getGridOption('context');
1153
1146
  if (!agGridContext) {
1154
- console.log('Failed to get AG Grid context');
1155
1147
  return false;
1156
1148
  }
1157
1149
  if (!agGridContext.__adaptable) {
@@ -1191,9 +1183,6 @@ You need to define at least one Layout!`);
1191
1183
  useRowNodeLookUp() {
1192
1184
  return this.agGridAdapter.getAgGridApi().getGridOption('getRowId') != undefined;
1193
1185
  }
1194
- getAgGridRegisteredModules() {
1195
- return this.agGridAdapter.getAgGridRegisteredModules();
1196
- }
1197
1186
  getAgGridContainerElement() {
1198
1187
  if (!this.DANGER_USE_GETTER_agGridContainerElement) {
1199
1188
  this.DANGER_USE_GETTER_agGridContainerElement =
@@ -1242,6 +1231,9 @@ You need to define at least one Layout!`);
1242
1231
  return selectedRowInfo;
1243
1232
  }
1244
1233
  isGridRowSelectable() {
1234
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('RowSelectionModule')) {
1235
+ return false;
1236
+ }
1245
1237
  const rowSelection = this.agGridAdapter.getAgGridApi().getGridOption('rowSelection');
1246
1238
  if (rowSelection == undefined) {
1247
1239
  return false;
@@ -1255,9 +1247,11 @@ You need to define at least one Layout!`);
1255
1247
  return false;
1256
1248
  }
1257
1249
  isGridRangeSelectable() {
1258
- return (this.agGridAdapter.isAgGridModuleRegistered('CellSelection') &&
1259
- (this.agGridAdapter.getGridOption('enableRangeSelection') ||
1260
- !!this.agGridAdapter.getGridOption('cellSelection')));
1250
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('CellSelectionModule')) {
1251
+ return false;
1252
+ }
1253
+ return (this.agGridAdapter.getGridOption('enableRangeSelection') ||
1254
+ !!this.agGridAdapter.getGridOption('cellSelection'));
1261
1255
  }
1262
1256
  initAdaptableStore() {
1263
1257
  const perfNewAdaptableStore = this.logger.beginPerf(`initAdaptableStore()`);
@@ -1409,8 +1403,7 @@ You need to define at least one Layout!`);
1409
1403
  'chartOptionsChanged',
1410
1404
  'chartDestroyed',
1411
1405
  ];
1412
- const chartingModule = this.ModuleService.getModuleById('Charting');
1413
- if (chartingModule.isModuleAvailable()) {
1406
+ if (this.ModuleService.isAdapTableModulePresent('Charting')) {
1414
1407
  // We need to break the loop of charting changes for 'chartOptionsChanged', which is triggered by the subsequent agGridApi.updateChart(...)
1415
1408
  // see #ag_grid_update_chart_loop
1416
1409
  let lastChartOptionsChangePayload = '';
@@ -1458,7 +1451,7 @@ You need to define at least one Layout!`);
1458
1451
  shouldAutoSizeLayout() {
1459
1452
  const { layoutApi } = this.api;
1460
1453
  const currentLayout = layoutApi.getCurrentLayout();
1461
- if (currentLayout.ColumnWidths && Object.keys(currentLayout.ColumnWidths).length > 0) {
1454
+ if (currentLayout.ColumnSizing && Object.keys(currentLayout.ColumnSizing).length > 0) {
1462
1455
  return;
1463
1456
  }
1464
1457
  return currentLayout.AutoSizeColumns;
@@ -1572,7 +1565,7 @@ You need to define at least one Layout!`);
1572
1565
  const adaptableStatusPanels = this.agGridAdapter
1573
1566
  .getAgGridApi()
1574
1567
  .getGridOption('statusBar')
1575
- ?.statusPanels?.filter((statusPanel) => this.adaptableStatusPanelKeys.includes(statusPanel.key));
1568
+ ?.statusPanels?.filter((statusPanel) => this.adaptableStatusPanelKeys.includes(statusPanel.key)) ?? [];
1576
1569
  const statusBarModule = this.ModuleService.getModuleById(ModuleConstants.StatusBarModuleId);
1577
1570
  // need to add only the adaptable panels
1578
1571
  statusBarModule.syncStateWithOptions(adaptableStatusPanels);
@@ -1603,10 +1596,14 @@ You need to define at least one Layout!`);
1603
1596
  }
1604
1597
  }
1605
1598
  }
1599
+ isInPivotMode() {
1600
+ return (this.agGridModulesAdapter.isAgGridModuleRegistered('PivotModule') &&
1601
+ this.agGridAdapter.getAgGridApi().isPivotMode());
1602
+ }
1606
1603
  deriveAdaptableColumnStateFromAgGrid() {
1607
1604
  const allColumns = [];
1608
1605
  const gridApi = this.agGridAdapter.getAgGridApi();
1609
- const isPivot = gridApi.isPivotMode();
1606
+ const isPivot = this.isInPivotMode();
1610
1607
  let agGridCols = isPivot
1611
1608
  ? gridApi.getColumns()
1612
1609
  : // we call getAllGridColumns because we want to also have the generated group columns
@@ -2241,9 +2238,17 @@ You need to define at least one Layout!`);
2241
2238
  this.autoSizeColumns([columnId]);
2242
2239
  }
2243
2240
  autoSizeColumns(columnIds) {
2241
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
2242
+ this.logger.consoleError(`Could not auto-size columns [${columnIds}] - missing required AG Grid module 'ColumnAutoSizeModule'`);
2243
+ return;
2244
+ }
2244
2245
  this.layoutManager.autoSizeColumns(columnIds);
2245
2246
  }
2246
2247
  autoSizeAllColumns() {
2248
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
2249
+ this.logger.consoleError(`Could not auto-size all columns - missing required AG Grid module 'ColumnAutoSizeModule'`);
2250
+ return;
2251
+ }
2247
2252
  const agGridApi = this.agGridAdapter.getAgGridApi();
2248
2253
  if (agGridApi) {
2249
2254
  agGridApi.autoSizeAllColumns();
@@ -2254,6 +2259,7 @@ You need to define at least one Layout!`);
2254
2259
  }
2255
2260
  async getDistinctFilterValuesForColumn(options) {
2256
2261
  const { column } = options;
2262
+ const self = this;
2257
2263
  // First get the Grid Cells in the Column
2258
2264
  const currentGridCells = this.getDistinctGridCellsForColumn(column);
2259
2265
  // If there are custom distinct value, return them; otherwise return the Grids Cells just retrieved
@@ -2275,6 +2281,7 @@ You need to define at least one Layout!`);
2275
2281
  value: gridCell.rawValue,
2276
2282
  isSelected: gridCell.rowNode.displayed,
2277
2283
  count: gridCell.count,
2284
+ tooltip: false,
2278
2285
  get visible() {
2279
2286
  return gridCell.visible;
2280
2287
  },
@@ -2292,6 +2299,27 @@ You need to define at least one Layout!`);
2292
2299
  value: gridCell.rawValue,
2293
2300
  isSelected: gridCell.rowNode.displayed,
2294
2301
  count: gridCell.count,
2302
+ tooltip: false,
2303
+ get visible() {
2304
+ return gridCell.visible;
2305
+ },
2306
+ get visibleCount() {
2307
+ return gridCell.visibleCount;
2308
+ },
2309
+ };
2310
+ });
2311
+ return result;
2312
+ },
2313
+ get orderedValues() {
2314
+ const rowNodes = gridApiInternal.getSortedRowNodesWithCurrentLayoutSortOrder();
2315
+ const currentGridCells = self.getDistinctGridCellsForColumn(column, rowNodes);
2316
+ const result = currentGridCells.map((gridCell) => {
2317
+ return {
2318
+ label: gridCell.displayValue,
2319
+ value: gridCell.rawValue,
2320
+ isSelected: gridCell.rowNode.displayed,
2321
+ count: gridCell.count,
2322
+ tooltip: false,
2295
2323
  get visible() {
2296
2324
  return gridCell.visible;
2297
2325
  },
@@ -2310,12 +2338,16 @@ You need to define at least one Layout!`);
2310
2338
  catch (error) {
2311
2339
  this.logger.consoleError(`Failed to fetch custom filter values`, column, error);
2312
2340
  }
2313
- if (customDistinctValues) {
2314
- return this.getGridCellsForCustomColumnValues(customDistinctValues, column);
2315
- }
2341
+ return customDistinctValues ?? [];
2316
2342
  }
2317
2343
  // No distinct values so lets return unique grid cells
2318
- return currentGridCells;
2344
+ return currentGridCells.map((gridCell) => {
2345
+ const inFilterValue = {
2346
+ value: gridCell.rawValue,
2347
+ label: gridCell.displayValue,
2348
+ };
2349
+ return inFilterValue;
2350
+ });
2319
2351
  }
2320
2352
  async getDistinctEditValuesForColumn(options) {
2321
2353
  const { column, gridCell } = options;
@@ -2352,42 +2384,34 @@ You need to define at least one Layout!`);
2352
2384
  catch (error) {
2353
2385
  this.logger.consoleError(`Failed to fetch custom edit values`, column, error);
2354
2386
  }
2355
- if (customDistinctValues) {
2356
- return this.getGridCellsForCustomColumnValues(customDistinctValues, column);
2357
- }
2387
+ return customDistinctValues ?? [];
2358
2388
  }
2359
2389
  }
2360
2390
  // No distinct values so lets return unique grid cells
2361
- return currentGridCells;
2391
+ return currentGridCells.map((gridCell) => {
2392
+ const result = {
2393
+ value: gridCell.rawValue,
2394
+ label: gridCell.displayValue,
2395
+ };
2396
+ return result;
2397
+ });
2362
2398
  }
2363
- getDistinctGridCellsForColumn(column) {
2399
+ getDistinctGridCellsForColumn(column, rowNodes) {
2364
2400
  let gridCells = [];
2365
2401
  const isPivotResultColumn = column.isGeneratedPivotResultColumn;
2366
- this.agGridAdapter.getAgGridApi().forEachNode((rowNode) => {
2402
+ const rowNodeCallback = (rowNode) => {
2367
2403
  const gridCell = this.addDistinctColumnValue(rowNode, column.columnId, isPivotResultColumn);
2368
2404
  if (gridCell) {
2369
2405
  gridCells.push(gridCell);
2370
2406
  }
2371
- });
2372
- return this.getUniqueGridCells(column, gridCells);
2373
- }
2374
- getGridCellsForCustomColumnValues(customColumnValues, column) {
2375
- let gridCells = [];
2376
- if (ArrayExtensions_1.default.IsNotNullOrEmpty(customColumnValues)) {
2377
- gridCells = customColumnValues.map((pv) => {
2378
- return {
2379
- rawValue: pv.value,
2380
- displayValue: pv.label ?? pv.value,
2381
- normalisedValue: pv.value,
2382
- columnId: column.columnId,
2383
- column: column,
2384
- rowNode: undefined,
2385
- isPivotCell: false,
2386
- isRowGroupCell: false,
2387
- };
2388
- });
2389
- return gridCells;
2407
+ };
2408
+ if (rowNodes) {
2409
+ rowNodes.forEach(rowNodeCallback);
2390
2410
  }
2411
+ else {
2412
+ this.agGridAdapter.getAgGridApi().forEachNode(rowNodeCallback);
2413
+ }
2414
+ return this.getUniqueGridCells(column, gridCells);
2391
2415
  }
2392
2416
  addDistinctColumnValue(rowNode, columnId, isPivotResultColumn) {
2393
2417
  if (!rowNode) {
@@ -2724,11 +2748,11 @@ You need to define at least one Layout!`);
2724
2748
  });
2725
2749
  }
2726
2750
  canGenerateCharts() {
2727
- return (this.agGridAdapter.isAgGridModuleRegistered('IntegratedCharts') &&
2728
- this.agGridAdapter.getAgGridApi().getGridOption('enableCharts'));
2751
+ const chartingModule = this.ModuleService.getModuleById('Charting');
2752
+ return chartingModule.isModuleEnabled() && chartingModule.isModuleAvailable();
2729
2753
  }
2730
2754
  canDisplaySparklines() {
2731
- return this.agGridAdapter.isAgGridModuleRegistered('Sparklines');
2755
+ return this.agGridModulesAdapter.isAgGridModuleRegistered('SparklinesModule');
2732
2756
  }
2733
2757
  showCharts(chartsDefinitions, chartContainer) {
2734
2758
  return chartsDefinitions.map((chartDefinition) => this.showChart(chartDefinition, chartContainer));
@@ -2806,12 +2830,20 @@ You need to define at least one Layout!`);
2806
2830
  return isGroupedActive;
2807
2831
  }
2808
2832
  setAgGridQuickSearch(searchText) {
2833
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('QuickFilterModule')) {
2834
+ this.logger.consoleError(`Can NOT set Quick Search text - missing required AG Grid module 'QuickFilterModule'`);
2835
+ return;
2836
+ }
2809
2837
  this.agGridAdapter.setGridOption('quickFilterText', searchText);
2810
2838
  }
2811
2839
  clearAgGridQuickSearch() {
2812
2840
  this.setAgGridQuickSearch('');
2813
2841
  }
2814
2842
  setAgGridFindSearchValue(searchText) {
2843
+ if (!this.agGridModulesAdapter.isAgGridModuleRegistered('FindModule')) {
2844
+ this.logger.consoleError(`Can NOT set Find Search text - missing required AG Grid module 'FindModule'`);
2845
+ return;
2846
+ }
2815
2847
  this.agGridAdapter.setGridOption('findSearchValue', searchText);
2816
2848
  }
2817
2849
  applyAdaptableTheme(theme) {
@@ -3017,6 +3049,7 @@ You need to define at least one Layout!`);
3017
3049
  'sideBar',
3018
3050
  'statusBar',
3019
3051
  'suppressAggFuncInHeader',
3052
+ 'defaultColDef',
3020
3053
  ]);
3021
3054
  if (liveGridOptions.components) {
3022
3055
  liveGridOptions.components.AdaptableToolPanel = null;
@@ -3048,6 +3081,8 @@ You need to define at least one Layout!`);
3048
3081
  this.agGridExportAdapter = null;
3049
3082
  this.agGridThemeAdapter?.destroy();
3050
3083
  this.agGridThemeAdapter = null;
3084
+ this.agGridModulesAdapter?.destroy();
3085
+ this.agGridModulesAdapter = null;
3051
3086
  this.rowListeners = null;
3052
3087
  this.emitter.destroy();
3053
3088
  this.emitter = null;
@@ -3109,10 +3144,10 @@ You need to define at least one Layout!`);
3109
3144
  this.unmountLoadingScreen = null;
3110
3145
  }
3111
3146
  canExportToExcel() {
3112
- return this.agGridAdapter.isAgGridModuleRegistered('ExcelExport');
3147
+ return this.agGridModulesAdapter.isAgGridModuleRegistered('ExcelExportModule');
3113
3148
  }
3114
3149
  canExportToCsv() {
3115
- return this.agGridAdapter.isAgGridModuleRegistered('CsvExport');
3150
+ return this.agGridModulesAdapter.isAgGridModuleRegistered('CsvExportModule');
3116
3151
  }
3117
3152
  isQuickFilterAvailable() {
3118
3153
  if (this.api.layoutApi.isCurrentLayoutPivot() &&