@adaptabletools/adaptable 20.3.0-canary.2 → 21.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 (427) hide show
  1. package/agGrid.d.ts +2 -1
  2. package/agGrid.js +2 -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 +71 -187
  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 +8 -21
  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 +11 -11
  188. package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
  189. package/src/AdaptableState/Common/ProgressIndicatorConfig.d.ts +1 -4
  190. package/src/AdaptableState/Common/RowScope.d.ts +1 -1
  191. package/src/AdaptableState/FormatColumnState.d.ts +16 -9
  192. package/src/AdaptableState/InternalState.d.ts +1 -1
  193. package/src/AdaptableState/LayoutState.d.ts +26 -6
  194. package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
  195. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  196. package/src/Api/AlertApi.d.ts +5 -11
  197. package/src/Api/ColumnApi.d.ts +17 -1
  198. package/src/Api/ColumnFilterApi.d.ts +32 -2
  199. package/src/Api/CustomSortApi.d.ts +5 -10
  200. package/src/Api/FlashingCellApi.d.ts +10 -6
  201. package/src/Api/FormatColumnApi.d.ts +8 -18
  202. package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
  203. package/src/Api/Implementation/AlertApiImpl.js +7 -6
  204. package/src/Api/Implementation/ApiBase.d.ts +2 -12
  205. package/src/Api/Implementation/ApiBase.js +5 -5
  206. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
  207. package/src/Api/Implementation/ColumnApiImpl.js +59 -23
  208. package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
  209. package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
  210. package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
  211. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
  212. package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
  213. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
  214. package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
  215. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
  216. package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
  217. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
  218. package/src/Api/Implementation/LayoutApiImpl.js +101 -7
  219. package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
  220. package/src/Api/Implementation/LayoutHelpers.js +23 -4
  221. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
  222. package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
  223. package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
  224. package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
  225. package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
  226. package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
  227. package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
  228. package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
  229. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
  230. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
  231. package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
  232. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  233. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  234. package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
  235. package/src/Api/Internal/AlertInternalApi.js +10 -10
  236. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
  237. package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
  238. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
  239. package/src/Api/Internal/ColumnInternalApi.js +6 -2
  240. package/src/Api/Internal/DashboardInternalApi.js +1 -1
  241. package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
  242. package/src/Api/Internal/EntitlementInternalApi.js +8 -0
  243. package/src/Api/Internal/ExportInternalApi.js +1 -1
  244. package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
  245. package/src/Api/Internal/FormatColumnInternalApi.d.ts +12 -13
  246. package/src/Api/Internal/FormatColumnInternalApi.js +45 -16
  247. package/src/Api/Internal/GridInternalApi.d.ts +7 -10
  248. package/src/Api/Internal/GridInternalApi.js +76 -27
  249. package/src/Api/Internal/LayoutInternalApi.d.ts +5 -5
  250. package/src/Api/Internal/LayoutInternalApi.js +42 -5
  251. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  252. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  253. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  254. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  255. package/src/Api/LayoutApi.d.ts +7 -2
  256. package/src/Api/PlusMinusApi.d.ts +11 -7
  257. package/src/Api/ScheduleApi.d.ts +9 -16
  258. package/src/Api/ShortcutApi.d.ts +5 -6
  259. package/src/Api/StyledColumnApi.d.ts +10 -7
  260. package/src/Api/UserInterfaceApi.d.ts +5 -6
  261. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  262. package/src/Redux/ActionsReducers/InternalRedux.js +7 -7
  263. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  264. package/src/Redux/ActionsReducers/StyledColumnRedux.js +13 -0
  265. package/src/Redux/Store/AdaptableStore.js +10 -10
  266. package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
  267. package/src/Strategy/AdaptableModuleBase.js +46 -9
  268. package/src/Strategy/AlertModule.d.ts +3 -4
  269. package/src/Strategy/AlertModule.js +7 -4
  270. package/src/Strategy/CalculatedColumnModule.js +2 -2
  271. package/src/Strategy/CellSummaryModule.js +2 -2
  272. package/src/Strategy/ChartingModule.d.ts +3 -1
  273. package/src/Strategy/ChartingModule.js +9 -3
  274. package/src/Strategy/ColumnFilterModule.d.ts +1 -1
  275. package/src/Strategy/ColumnFilterModule.js +31 -15
  276. package/src/Strategy/ColumnInfoModule.js +2 -2
  277. package/src/Strategy/CommentModule.d.ts +1 -1
  278. package/src/Strategy/CommentModule.js +3 -3
  279. package/src/Strategy/CustomSortModule.d.ts +3 -4
  280. package/src/Strategy/CustomSortModule.js +2 -2
  281. package/src/Strategy/DashboardModule.js +1 -1
  282. package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
  283. package/src/Strategy/DataChangeHistoryModule.js +3 -10
  284. package/src/Strategy/DataImportModule.js +3 -3
  285. package/src/Strategy/ExportModule.js +1 -1
  286. package/src/Strategy/Fdc3Module.js +1 -1
  287. package/src/Strategy/FlashingCellModule.d.ts +3 -5
  288. package/src/Strategy/FlashingCellModule.js +3 -3
  289. package/src/Strategy/FormatColumnModule.d.ts +3 -4
  290. package/src/Strategy/FormatColumnModule.js +4 -2
  291. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  292. package/src/Strategy/FreeTextColumnModule.js +2 -2
  293. package/src/Strategy/GridInfoModule.js +2 -2
  294. package/src/Strategy/Interface/IModule.d.ts +7 -3
  295. package/src/Strategy/LayoutModule.js +11 -11
  296. package/src/Strategy/NoteModule.d.ts +1 -1
  297. package/src/Strategy/NoteModule.js +3 -3
  298. package/src/Strategy/PlusMinusModule.d.ts +3 -4
  299. package/src/Strategy/PlusMinusModule.js +2 -2
  300. package/src/Strategy/QuickSearchModule.d.ts +2 -0
  301. package/src/Strategy/QuickSearchModule.js +9 -0
  302. package/src/Strategy/ScheduleModule.d.ts +3 -4
  303. package/src/Strategy/ScheduleModule.js +2 -2
  304. package/src/Strategy/SettingsPanelModule.js +1 -1
  305. package/src/Strategy/ShortcutModule.d.ts +3 -4
  306. package/src/Strategy/ShortcutModule.js +2 -2
  307. package/src/Strategy/StatusBarModule.d.ts +3 -2
  308. package/src/Strategy/StatusBarModule.js +6 -3
  309. package/src/Strategy/StyledColumnModule.d.ts +3 -4
  310. package/src/Strategy/StyledColumnModule.js +2 -2
  311. package/src/Strategy/SystemStatusModule.js +2 -2
  312. package/src/Strategy/TeamSharingModule.d.ts +1 -1
  313. package/src/Strategy/TeamSharingModule.js +5 -2
  314. package/src/Strategy/ToolPanelModule.d.ts +1 -1
  315. package/src/Strategy/ToolPanelModule.js +1 -4
  316. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.d.ts +5 -0
  317. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +12 -0
  318. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
  319. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  320. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -0
  321. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  322. package/src/Utilities/Extensions/ArrayExtensions.js +62 -13
  323. package/src/Utilities/ObjectFactory.js +3 -2
  324. package/src/Utilities/Services/AnnotationsService.js +1 -1
  325. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  326. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  327. package/src/Utilities/Services/ModuleService.js +19 -7
  328. package/src/Utilities/getScopeViewItems.js +5 -2
  329. package/src/View/AdaptableView.js +3 -1
  330. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  331. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  332. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  333. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  334. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  335. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  336. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  337. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  338. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  339. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  340. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  341. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  342. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  343. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  344. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  345. package/src/View/Components/ColumnFilter/utils.js +6 -1
  346. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  347. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  348. package/src/View/Components/NewScopeComponent.js +5 -1
  349. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -6
  350. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  351. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  352. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  353. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  354. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  355. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  356. package/src/View/Dashboard/Dashboard.js +2 -2
  357. package/src/View/Dashboard/DashboardPopup.js +3 -1
  358. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  359. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  360. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +59 -22
  361. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +4 -0
  362. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -40
  363. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +13 -12
  364. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +8 -0
  365. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +31 -0
  366. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +18 -4
  367. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  368. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -1
  369. package/src/View/Layout/TransposedPopup.js +2 -2
  370. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  371. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  372. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  373. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  374. package/src/View/Theme/ThemeSelector.js +1 -1
  375. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  376. package/src/agGrid/AdaptableAgGrid.js +256 -218
  377. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  378. package/src/agGrid/AdaptableFilterHandler.js +61 -0
  379. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  380. package/src/agGrid/AgGridAdapter.js +13 -46
  381. package/src/agGrid/AgGridColumnAdapter.d.ts +3 -3
  382. package/src/agGrid/AgGridColumnAdapter.js +86 -40
  383. package/src/agGrid/AgGridExportAdapter.js +1 -1
  384. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  385. package/src/agGrid/AgGridFilterAdapter.js +48 -0
  386. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  387. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
  388. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  389. package/src/agGrid/AgGridModulesAdapter.js +66 -0
  390. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  391. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  392. package/src/components/Dialog/index.js +1 -1
  393. package/src/components/Dropdown/Arrows.js +2 -2
  394. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  395. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +2 -2
  396. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
  397. package/src/components/FileDroppable/index.js +1 -1
  398. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  399. package/src/components/OverlayTrigger/index.js +1 -1
  400. package/src/components/Select/Select.d.ts +1 -1
  401. package/src/components/Select/Select.js +116 -24
  402. package/src/components/icons/DefaultIcon.d.ts +0 -1
  403. package/src/components/icons/DefaultIcon.js +0 -6
  404. package/src/env.js +2 -2
  405. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  406. package/src/layout-manager/src/index.d.ts +11 -3
  407. package/src/layout-manager/src/index.js +302 -87
  408. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  409. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  410. package/src/metamodel/adaptable.metamodel.d.ts +172 -20
  411. package/src/metamodel/adaptable.metamodel.js +1 -1
  412. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  413. package/src/migration/VersionUpgrade17.js +1 -1
  414. package/src/migration/VersionUpgrade20.js +1 -0
  415. package/src/migration/VersionUpgrade21.d.ts +6 -0
  416. package/src/migration/VersionUpgrade21.js +24 -0
  417. package/src/types.d.ts +8 -9
  418. package/tsconfig.esm.tsbuildinfo +1 -1
  419. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  420. package/src/agGrid/FilterWrapper.d.ts +0 -2
  421. package/src/agGrid/FilterWrapper.js +0 -131
  422. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  423. package/src/agGrid/agGridModules.d.ts +0 -3
  424. package/src/agGrid/agGridModules.js +0 -15
  425. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  426. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
  427. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { AdaptableModuleBase } from './AdaptableModuleBase';
2
2
  import { AdaptableModuleView, AdaptableObjectView } from './Interface/IModule';
3
3
  import { AdaptableApi } from '../Api/AdaptableApi';
4
+ import { LayoutExtendedConfig } from '../types';
4
5
  import { BaseSchedule } from '../AdaptableState/Common/Schedule';
5
6
  import { IScheduleModule } from './Interface/IScheduleModule';
6
7
  export declare class ScheduleModule extends AdaptableModuleBase implements IScheduleModule {
@@ -12,11 +13,9 @@ export declare class ScheduleModule extends AdaptableModuleBase implements ISche
12
13
  private addMidnightRefreshSchedule;
13
14
  private getDateFromSchedule;
14
15
  private clearAllJobs;
15
- getModuleAdaptableObjects(config?: {
16
- includeLayoutNotAssociatedObjects?: boolean;
17
- }): BaseSchedule[];
16
+ getModuleAdaptableObjects(config?: LayoutExtendedConfig): BaseSchedule[];
18
17
  toView(schedule: BaseSchedule): AdaptableObjectView;
19
18
  toViewAll(): AdaptableObjectView[];
20
19
  getViewProperties(): AdaptableModuleView;
21
- canBeAssociatedWithLayouts(): boolean;
20
+ containsLayoutExtensions(): boolean;
22
21
  }
@@ -145,7 +145,7 @@ export class ScheduleModule extends AdaptableModuleBase {
145
145
  }
146
146
  toViewAll() {
147
147
  return this.getModuleAdaptableObjects({
148
- includeLayoutNotAssociatedObjects: this.showLayoutNotAssociatedObjects(),
148
+ includeLayoutNotExtendedObjects: this.showLayoutNonExtendedObjects(),
149
149
  }).map((schedule) => this.toView(schedule));
150
150
  }
151
151
  getViewProperties() {
@@ -257,7 +257,7 @@ export class ScheduleModule extends AdaptableModuleBase {
257
257
  },
258
258
  };
259
259
  }
260
- canBeAssociatedWithLayouts() {
260
+ containsLayoutExtensions() {
261
261
  return true;
262
262
  }
263
263
  }
@@ -18,7 +18,7 @@ export class SettingsPanelModule extends AdaptableModuleBase {
18
18
  ];
19
19
  }
20
20
  createModuleMenuItem(source) {
21
- if (this.isModuleAvailable()) {
21
+ if (this.isModuleVisible()) {
22
22
  return this.createMenuItemReduxAction('settings-panel-open', 'Open ' + this.moduleInfo.FriendlyName, this.moduleInfo.Glyph, PopupRedux.PopupShowScreen());
23
23
  }
24
24
  }
@@ -5,13 +5,12 @@ import { AdaptableApi } from '../Api/AdaptableApi';
5
5
  import { AdaptableObject } from '../AdaptableState/Common/AdaptableObject';
6
6
  import { AdaptableModuleView, AdaptableObjectView } from './Interface/IModule';
7
7
  import { IKeyDownListenerModule } from './Interface/IKeyDownListenerModule';
8
+ import { LayoutExtendedConfig } from '../types';
8
9
  export declare class ShortcutModule extends AdaptableModuleBase implements IKeyDownListenerModule {
9
10
  private shouldHandleKeyDown;
10
11
  private adaptable;
11
12
  constructor(api: AdaptableApi);
12
- getModuleAdaptableObjects(config?: {
13
- includeLayoutNotAssociatedObjects?: boolean;
14
- }): AdaptableObject[];
13
+ getModuleAdaptableObjects(config?: LayoutExtendedConfig): AdaptableObject[];
15
14
  hasNamedQueryReferences(): boolean;
16
15
  getTeamSharingAction(): TeamSharingImportInfo<Shortcut>;
17
16
  onAdaptableReady(): void;
@@ -22,5 +21,5 @@ export declare class ShortcutModule extends AdaptableModuleBase implements IKeyD
22
21
  toView(shortcut: Shortcut): AdaptableObjectView;
23
22
  toViewAll(): AdaptableObjectView[];
24
23
  getViewProperties(): AdaptableModuleView;
25
- canBeAssociatedWithLayouts(): boolean;
24
+ containsLayoutExtensions(): boolean;
26
25
  }
@@ -88,7 +88,7 @@ export class ShortcutModule extends AdaptableModuleBase {
88
88
  }
89
89
  toViewAll() {
90
90
  return this.getModuleAdaptableObjects({
91
- includeLayoutNotAssociatedObjects: this.showLayoutNotAssociatedObjects(),
91
+ includeLayoutNotExtendedObjects: this.showLayoutNonExtendedObjects(),
92
92
  }).map((shortcut) => this.toView(shortcut));
93
93
  }
94
94
  getViewProperties() {
@@ -104,7 +104,7 @@ export class ShortcutModule extends AdaptableModuleBase {
104
104
  },
105
105
  };
106
106
  }
107
- canBeAssociatedWithLayouts() {
107
+ containsLayoutExtensions() {
108
108
  return true;
109
109
  }
110
110
  }
@@ -1,9 +1,10 @@
1
1
  import { AdaptableModuleBase } from './AdaptableModuleBase';
2
2
  import { IModule } from './Interface/IModule';
3
3
  import { AdaptableApi } from '../Api/AdaptableApi';
4
- import { GridOptions } from 'ag-grid-enterprise';
4
+ import { AgModuleName, GridOptions } from 'ag-grid-enterprise';
5
5
  export declare class StatusBarModule extends AdaptableModuleBase implements IModule {
6
6
  constructor(api: AdaptableApi);
7
+ protected getAgGridModuleDependencies(): AgModuleName[];
8
+ isModuleEnabled(): boolean;
7
9
  syncStateWithOptions(agGridAdaptablePanels: GridOptions['statusBar']['statusPanels']): void;
8
- isModuleAvailable(): boolean;
9
10
  }
@@ -4,6 +4,12 @@ export class StatusBarModule extends AdaptableModuleBase {
4
4
  constructor(api) {
5
5
  super(ModuleConstants.StatusBarModuleId, ModuleConstants.StatusBarFriendlyName, 'statusbar', 'StatusBarPopup', 'Configure AdapTable Status Bar', api);
6
6
  }
7
+ getAgGridModuleDependencies() {
8
+ return ['StatusBarModule'];
9
+ }
10
+ isModuleEnabled() {
11
+ return this.api.statusBarApi.getAgGridStatusPanels().length > 0;
12
+ }
7
13
  syncStateWithOptions(agGridAdaptablePanels) {
8
14
  const statusPanelsState = this.api.statusBarApi.getAdaptableStatusBars();
9
15
  /**
@@ -25,7 +31,4 @@ export class StatusBarModule extends AdaptableModuleBase {
25
31
  });
26
32
  this.api.statusBarApi.setStatusBarPanels(newStatusPanelsState);
27
33
  }
28
- isModuleAvailable() {
29
- return super.isModuleAvailable() && this.api.statusBarApi.getAgGridStatusPanels().length > 0;
30
- }
31
34
  }
@@ -6,11 +6,10 @@ import { AdaptableModuleView, AdaptableObjectView, IModule } from './Interface/I
6
6
  import { AdaptableApi } from '../Api/AdaptableApi';
7
7
  import { AdaptableObject } from '../AdaptableState/Common/AdaptableObject';
8
8
  import { StyledColumn } from '../AdaptableState/StyledColumnState';
9
+ import { LayoutExtendedConfig } from '../types';
9
10
  export declare class StyledColumnModule extends AdaptableModuleBase implements IModule {
10
11
  constructor(api: AdaptableApi);
11
- getModuleAdaptableObjects(config?: {
12
- includeLayoutNotAssociatedObjects?: boolean;
13
- }): AdaptableObject[];
12
+ getModuleAdaptableObjects(config?: LayoutExtendedConfig): AdaptableObject[];
14
13
  getExplicitlyReferencedColumnIds(styledColumn: StyledColumn): string[];
15
14
  hasNamedQueryReferences(): boolean;
16
15
  createColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem<"separator" | "calculated-column-edit" | "cell-summary-show" | "chart-show" | "column-group" | "column-filter-group" | "column-filter-bar-hide" | "column-filter-bar-show" | "column-filter-clear" | "column-filter-suspend" | "column-filter-unsuspend" | "column-info-show" | "custom-sort-add" | "custom-sort-edit" | "dashboard-group" | "dashboard-collapse" | "dashboard-configure" | "dashboard-dock" | "dashboard-expand" | "dashboard-float" | "dashboard-hide" | "dashboard-show" | "data-import" | "flashing-cell-add" | "flashing-cell-delete" | "format-column-add" | "format-column-edit" | "free-text-column-edit" | "grid-group" | "grid-info-show" | "layout-column-caption-change" | "layout-column-hide" | "layout-edit" | "layout-column-select" | "layout-column-select-preserve" | "layout-column-select-reset" | "layout-grid-select" | "plus-minus-add" | "settings-panel-open" | "styling-group" | "styled-column-badge-add" | "styled-column-badge-edit" | "styled-column-gradient-add" | "styled-column-gradient-edit" | "styled-column-percent-bar-add" | "styled-column-percent-bar-edit" | "styled-column-sparkline-add" | "styled-column-sparkline-edit" | "system-status-show" | "_navbar">[];
@@ -19,7 +18,7 @@ export declare class StyledColumnModule extends AdaptableModuleBase implements I
19
18
  toView(styledColumn: StyledColumn): AdaptableObjectView;
20
19
  toViewAll(): AdaptableObjectView[];
21
20
  getViewProperties(): AdaptableModuleView;
22
- canBeAssociatedWithLayouts(): boolean;
21
+ containsLayoutExtensions(): boolean;
23
22
  private getTypeLabel;
24
23
  private getTypeName;
25
24
  }
@@ -226,7 +226,7 @@ export class StyledColumnModule extends AdaptableModuleBase {
226
226
  }
227
227
  toViewAll() {
228
228
  return this.getModuleAdaptableObjects({
229
- includeLayoutNotAssociatedObjects: this.showLayoutNotAssociatedObjects(),
229
+ includeLayoutNotExtendedObjects: this.showLayoutNonExtendedObjects(),
230
230
  }).map((styledColumn) => this.toView(styledColumn));
231
231
  }
232
232
  getViewProperties() {
@@ -242,7 +242,7 @@ export class StyledColumnModule extends AdaptableModuleBase {
242
242
  },
243
243
  };
244
244
  }
245
- canBeAssociatedWithLayouts() {
245
+ containsLayoutExtensions() {
246
246
  return true;
247
247
  }
248
248
  getTypeLabel(styledColumn) {
@@ -6,7 +6,7 @@ export class SystemStatusModule extends AdaptableModuleBase {
6
6
  super(ModuleConstants.SystemStatusModuleId, ModuleConstants.SystemStatusFriendlyName, 'traffic-lights', 'SystemStatusPopup', 'Provide messages about the Status of your application', api);
7
7
  }
8
8
  createColumnMenuItems(column) {
9
- if (this.isModuleAvailable()) {
9
+ if (this.isModuleVisible()) {
10
10
  return [
11
11
  this.createMenuItemShowPopup('system-status-show', 'Show System Status', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
12
12
  source: 'ColumnMenu',
@@ -15,7 +15,7 @@ export class SystemStatusModule extends AdaptableModuleBase {
15
15
  }
16
16
  }
17
17
  createContextMenuItems(menuContext) {
18
- if (this.isModuleAvailable()) {
18
+ if (this.isModuleVisible()) {
19
19
  let popUpParams = {
20
20
  source: 'ContextMenu',
21
21
  };
@@ -6,7 +6,7 @@ export declare class TeamSharingModule extends AdaptableModuleBase implements IM
6
6
  private SKIP_TEAMSHARING_UPDATE_ACTIONS;
7
7
  constructor(api: AdaptableApi);
8
8
  onAdaptableReady(): void;
9
- isModuleAvailable(): boolean;
9
+ isModuleEnabled(): boolean;
10
10
  isModuleObjectsShareable(): boolean;
11
11
  getPopupMaxWidth(): number | undefined;
12
12
  private handleStateChanged;
@@ -32,8 +32,11 @@ export class TeamSharingModule extends AdaptableModuleBase {
32
32
  }
33
33
  this.api.eventApi.on('AdaptableStateChanged', (adaptableStateChangedInfo) => this.handleStateChanged(adaptableStateChangedInfo));
34
34
  }
35
- isModuleAvailable() {
36
- return super.isModuleAvailable() && this.api.teamSharingApi.isTeamSharingAvailable();
35
+ isModuleEnabled() {
36
+ const teamSharingOptions = this.api.optionsApi.getTeamSharingOptions();
37
+ return (teamSharingOptions?.enableTeamSharing &&
38
+ typeof teamSharingOptions?.loadSharedEntities === 'function' &&
39
+ typeof teamSharingOptions?.persistSharedEntities === 'function');
37
40
  }
38
41
  isModuleObjectsShareable() {
39
42
  return false;
@@ -3,5 +3,5 @@ import { IModule } from './Interface/IModule';
3
3
  import { AdaptableApi } from '../Api/AdaptableApi';
4
4
  export declare class ToolPanelModule extends AdaptableModuleBase implements IModule {
5
5
  constructor(api: AdaptableApi);
6
- isModuleAvailable(): boolean;
6
+ isModuleEnabled(): boolean;
7
7
  }
@@ -4,10 +4,7 @@ export class ToolPanelModule extends AdaptableModuleBase {
4
4
  constructor(api) {
5
5
  super(ModuleConstants.ToolPanelModuleId, ModuleConstants.ToolPanelFriendlyName, 'clipboard', 'ToolPanelPopup', 'An alternative to using the Dashboard is the AdapTable Tool Panel, the Tool Panel is the collapsible area to the right of the Grid.', api);
6
6
  }
7
- isModuleAvailable() {
8
- if (!super.isModuleAvailable()) {
9
- return false;
10
- }
7
+ isModuleEnabled() {
11
8
  return this.api.internalApi.getAdaptableInstance().hasAdaptableToolPanel;
12
9
  }
13
10
  }
@@ -0,0 +1,5 @@
1
+ import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
2
+ export declare const getFormatColumnSettingsTargetItems: (formatColumn: FormatColumn) => {
3
+ name: string;
4
+ values: string[];
5
+ };
@@ -0,0 +1,12 @@
1
+ export const getFormatColumnSettingsTargetItems = (formatColumn) => {
2
+ if (!formatColumn.Target || formatColumn.Target === 'cell') {
3
+ return {
4
+ name: 'Target',
5
+ values: ['Column Cells'],
6
+ };
7
+ }
8
+ return {
9
+ name: 'Target',
10
+ values: ['Column Header'],
11
+ };
12
+ };
@@ -7,7 +7,7 @@ export const getFilterPreview = (columnFilter, api) => {
7
7
  const columnType = api.columnApi.getColumnDataTypeForColumnId(columnFilter.ColumnId);
8
8
  const qlDataType = mapColumnDataTypeToExpressionFunctionType(columnType);
9
9
  const qlPredicateDefs = predicateDefs.map((pd) => mapAdaptablePredicateDefToQlPredicateDef(pd, qlDataType));
10
- const qlPredicate = mapColumnFilterToQlPredicate(columnFilter, column, qlPredicateDefs, columnFilterOptions, api);
10
+ const qlPredicate = mapColumnFilterToQlPredicate(columnFilter, column, qlPredicateDefs, columnFilterOptions, 'FilterForm', api);
11
11
  return `[${qlPredicateToString(qlPredicate, qlPredicateDefs)}]`;
12
12
  };
13
13
  export const getLayoutFilterViewItems = (layout, api) => {
@@ -14,3 +14,4 @@ export declare const AdaptableOptionsDocsLink = "https://docs.adaptabletools.com
14
14
  export declare const AgGridModulesDocsLink = "https://docs.adaptabletools.com/guide/dev-guide-aggrid-modules-overview";
15
15
  export declare const AlertMessageDocsLink = "https://docs.adaptabletools.com/guide/handbook-alerting-message";
16
16
  export declare const FormatColumnPlaceholderDocsLink = "https://docs.adaptabletools.com/guide/handbook-column-formatting-display-format-placeholder";
17
+ export declare const AgGridRequiredModulesDocsLink = "https://docs.adaptabletools.com/guide/dev-guide-aggrid-modules-overview#mandatory-modules";
@@ -15,3 +15,4 @@ export const AdaptableOptionsDocsLink = `${HOST_URL_DOCS}/guide/reference-option
15
15
  export const AgGridModulesDocsLink = `${HOST_URL_DOCS}/guide/dev-guide-aggrid-modules-overview`;
16
16
  export const AlertMessageDocsLink = `${HOST_URL_DOCS}/guide/handbook-alerting-message`;
17
17
  export const FormatColumnPlaceholderDocsLink = `${HOST_URL_DOCS}/guide/handbook-column-formatting-display-format-placeholder`;
18
+ export const AgGridRequiredModulesDocsLink = `${HOST_URL_DOCS}/guide/dev-guide-aggrid-modules-overview#mandatory-modules`;
@@ -25,11 +25,23 @@ export declare function moveArray(array: any[], from: number, to: number): void;
25
25
  export declare function areArraysEqual(arr1: any[], arr2: any[]): boolean;
26
26
  export declare function areArraysNotEqual(arr1: any[], arr2: any[]): boolean;
27
27
  export declare function areArraysEqualWithOrder(arr1: any[], arr2: any[]): boolean;
28
- export declare function areArraysEqualWithOrderandProperties(value: any[], other: any[]): boolean;
28
+ /**
29
+ * Checks if two arrays contain the same elements (order-independent).
30
+ *
31
+ * @param arr1 First array to compare
32
+ * @param arr2 Second array to compare
33
+ * @param equalityFn Optional function to determine if two elements are equal
34
+ * @returns True if arrays contain the same elements, false otherwise
35
+ */
36
+ export declare function areArraysEqualWithCustomComparator<T>(arr1: T[] | null | undefined, arr2: T[] | null | undefined, equalityFn?: (a: T, b: T) => boolean): boolean;
37
+ export declare function areArraysEqualWithOrderAndProperties(value: any[], other: any[]): boolean;
29
38
  export declare function sortArrayWithProperty(sortOrder: SortOrder, values: any[], sortProperty?: string): any[];
30
39
  export declare function sortArray(values: any[], sortOrder?: SortOrder): any[];
40
+ export declare const getGenericComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
31
41
  export declare function sortCellValueArray<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
42
+ export declare const getNumericComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
32
43
  export declare function sortCellValueArrayNumeric<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
44
+ export declare const getDateComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
33
45
  export declare function sortCellValueArrayDates<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
34
46
  export declare function groupArrayBy(array: Array<any>, prop: string): Array<any>;
35
47
  export declare function createCommaSeparatedString(values: any[]): string;
@@ -72,7 +84,8 @@ export declare const ArrayExtensions: {
72
84
  areArraysEqual: typeof areArraysEqual;
73
85
  areArraysNotEqual: typeof areArraysNotEqual;
74
86
  areArraysEqualWithOrder: typeof areArraysEqualWithOrder;
75
- areArraysEqualWithOrderandProperties: typeof areArraysEqualWithOrderandProperties;
87
+ areArraysEqualWithOrderAndProperties: typeof areArraysEqualWithOrderAndProperties;
88
+ areArraysEqualWithCustomComparator: typeof areArraysEqualWithCustomComparator;
76
89
  sortArray: typeof sortArray;
77
90
  sortCellValueArray: typeof sortCellValueArray;
78
91
  sortCellValueArrayNumeric: typeof sortCellValueArrayNumeric;
@@ -114,7 +114,42 @@ export function areArraysEqualWithOrder(arr1, arr2) {
114
114
  }
115
115
  return arr1.every((x, index) => arr2.indexOf(x) == index);
116
116
  }
117
- export function areArraysEqualWithOrderandProperties(value, other) {
117
+ /**
118
+ * Checks if two arrays contain the same elements (order-independent).
119
+ *
120
+ * @param arr1 First array to compare
121
+ * @param arr2 Second array to compare
122
+ * @param equalityFn Optional function to determine if two elements are equal
123
+ * @returns True if arrays contain the same elements, false otherwise
124
+ */
125
+ export function areArraysEqualWithCustomComparator(arr1, arr2, equalityFn) {
126
+ // Handle null/undefined cases
127
+ if (!arr1 && !arr2) {
128
+ return true;
129
+ }
130
+ if (!arr1 || !arr2) {
131
+ return false;
132
+ }
133
+ // Check length
134
+ if (arr1.length !== arr2.length) {
135
+ return false;
136
+ }
137
+ // Use default equality comparison if no custom function provided
138
+ const compareElements = equalityFn || ((a, b) => a === b);
139
+ // For each element in arr1, find a matching element in arr2
140
+ const arr2Copy = [...arr2];
141
+ for (let i = 0; i < arr1.length; i++) {
142
+ const element = arr1[i];
143
+ const matchIndex = arr2Copy.findIndex((el) => compareElements(element, el));
144
+ if (matchIndex === -1) {
145
+ return false;
146
+ }
147
+ // Remove the matched element to prevent duplicate matches
148
+ arr2Copy.splice(matchIndex, 1);
149
+ }
150
+ return true;
151
+ }
152
+ export function areArraysEqualWithOrderAndProperties(value, other) {
118
153
  const type = Object.prototype.toString.call(value);
119
154
  // If the two objects are not the same type, return false
120
155
  if (type !== Object.prototype.toString.call(other)) {
@@ -136,7 +171,7 @@ export function areArraysEqualWithOrderandProperties(value, other) {
136
171
  const itemType = Object.prototype.toString.call(item1);
137
172
  // If an object or array, compare recursively
138
173
  if (['[object Array]', '[object Object]'].indexOf(itemType) >= 0) {
139
- if (!areArraysEqualWithOrderandProperties(item1, item2)) {
174
+ if (!areArraysEqualWithOrderAndProperties(item1, item2)) {
140
175
  return false;
141
176
  }
142
177
  }
@@ -211,15 +246,20 @@ export function sortArray(values, sortOrder = SortOrder.Asc) {
211
246
  const direction = sortOrder == SortOrder.Asc ? 1 : -1;
212
247
  return newValues.sort((a, b) => (a < b ? -1 * direction : a > b ? 1 * direction : 0));
213
248
  }
249
+ export const getGenericComparatorForGridCell = (sortOrder) => {
250
+ const direction = sortOrder == SortOrder.Asc ? 1 : -1;
251
+ return (a, b) => {
252
+ return a.rawValue < b.rawValue ? -1 * direction : a.rawValue > b.rawValue ? 1 * direction : 0;
253
+ };
254
+ };
214
255
  export function sortCellValueArray(cellValues, sortOrder = SortOrder.Asc) {
215
256
  const newValues = [].concat(cellValues);
216
- const direction = sortOrder == SortOrder.Asc ? 1 : -1;
217
- return newValues.sort((a, b) => a.rawValue < b.rawValue ? -1 * direction : a.rawValue > b.rawValue ? 1 * direction : 0);
257
+ const comparator = getGenericComparatorForGridCell(sortOrder);
258
+ return newValues.sort(comparator);
218
259
  }
219
- export function sortCellValueArrayNumeric(cellValues, sortOrder = SortOrder.Asc) {
260
+ export const getNumericComparatorForGridCell = (sortOrder) => {
220
261
  const direction = sortOrder == SortOrder.Asc ? 1 : -1;
221
- const newValues = [].concat(cellValues);
222
- return newValues.sort((a, b) => {
262
+ return (a, b) => {
223
263
  const valueAAsNumber = Number(a.rawValue);
224
264
  const valueBAsNumber = Number(b.rawValue);
225
265
  if (isNaN(valueAAsNumber)) {
@@ -233,15 +273,23 @@ export function sortCellValueArrayNumeric(cellValues, sortOrder = SortOrder.Asc)
233
273
  : valueAAsNumber > valueBAsNumber
234
274
  ? 1 * direction
235
275
  : 0;
236
- });
276
+ };
277
+ };
278
+ export function sortCellValueArrayNumeric(cellValues, sortOrder = SortOrder.Asc) {
279
+ const newValues = [].concat(cellValues);
280
+ const comparator = getNumericComparatorForGridCell(sortOrder);
281
+ return newValues.sort(comparator);
237
282
  }
238
- export function sortCellValueArrayDates(cellValues, sortOrder = SortOrder.Asc) {
239
- cellValues.sort((a, b) => {
283
+ export const getDateComparatorForGridCell = (sortOrder) => {
284
+ return (a, b) => {
240
285
  return sortOrder == SortOrder.Asc
241
286
  ? +new Date(a.rawValue) - +new Date(b.rawValue)
242
287
  : +new Date(b.rawValue) - +new Date(a.rawValue);
243
- });
244
- return cellValues;
288
+ };
289
+ };
290
+ export function sortCellValueArrayDates(cellValues, sortOrder = SortOrder.Asc) {
291
+ const comparator = getDateComparatorForGridCell(sortOrder);
292
+ return [].concat(cellValues).sort(comparator);
245
293
  }
246
294
  export function groupArrayBy(array, prop) {
247
295
  return array.reduce((acc, item) => {
@@ -346,7 +394,8 @@ export const ArrayExtensions = {
346
394
  areArraysEqual,
347
395
  areArraysNotEqual,
348
396
  areArraysEqualWithOrder,
349
- areArraysEqualWithOrderandProperties,
397
+ areArraysEqualWithOrderAndProperties,
398
+ areArraysEqualWithCustomComparator,
350
399
  sortArray,
351
400
  sortCellValueArray,
352
401
  sortCellValueArrayNumeric,
@@ -230,6 +230,7 @@ export function CreateEmptyFormatColumn() {
230
230
  DisplayFormat: undefined,
231
231
  CellAlignment: undefined,
232
232
  RowScope: undefined,
233
+ Target: 'cell',
233
234
  };
234
235
  }
235
236
  export function CreateEmptyFreeTextColumn(defaultSpecialColumnSettings) {
@@ -254,7 +255,7 @@ export function CreateEmptyPivotLayout(layout) {
254
255
  PivotColumns: layout.PivotColumns || [],
255
256
  PivotAggregationColumns: layout.PivotAggregationColumns || [],
256
257
  PivotGroupedColumns: layout.PivotGroupedColumns || [],
257
- ColumnWidths: layout.ColumnWidths || {},
258
+ ColumnSizing: layout.ColumnSizing || {},
258
259
  };
259
260
  return result;
260
261
  }
@@ -269,7 +270,7 @@ export function CreateEmptyLayout(layout, adaptableColumns) {
269
270
  TableColumns: tableLayout.TableColumns || [],
270
271
  ColumnSorts: tableLayout.ColumnSorts || [],
271
272
  ColumnFilters: tableLayout.ColumnFilters || [],
272
- ColumnWidths: tableLayout.ColumnWidths || {},
273
+ ColumnSizing: tableLayout.ColumnSizing || {},
273
274
  RowGroupedColumns: tableLayout.RowGroupedColumns ||
274
275
  (adaptableColumns ? adaptableColumns.filter((c) => c.isGrouped).map((c) => c.columnId) : []),
275
276
  };
@@ -41,7 +41,7 @@ export class AnnotationsService {
41
41
  shouldListenToEvents() {
42
42
  // Listen to events if we either have Notes in state or if Comments have been set up
43
43
  return (ArrayExtensions.IsNotNullOrEmpty(this.api.noteApi.getAllNotes()) ||
44
- this.api.internalApi.getModuleService().isModuleAvailable('Comment'));
44
+ this.api.internalApi.getModuleService().isAdapTableModulePresent('Comment'));
45
45
  }
46
46
  setUpEventListeners() {
47
47
  this.adaptable._on('MouseEnter', (event) => this.handleMouseEnter(event));
@@ -4,7 +4,8 @@ import { AdaptableObject } from '../../../AdaptableState/Common/AdaptableObject'
4
4
  import { IAdaptableService } from './IAdaptableService';
5
5
  import { AdaptableModule } from '../../../AdaptableState/Common/Types';
6
6
  export interface IModuleService extends IAdaptableService {
7
- isModuleAvailable(adaptableModule: AdaptableModule): boolean;
7
+ logMissingAgGridDepsInfos(): void;
8
+ isAdapTableModulePresent(adaptableModule: AdaptableModule): boolean;
8
9
  isModuleEditable(adaptableModule: AdaptableModule): boolean;
9
10
  createModuleUIItems(): void;
10
11
  getTeamSharingAction(adaptableModule: AdaptableModule): TeamSharingImportInfo<AdaptableObject> | undefined;
@@ -1,5 +1,5 @@
1
1
  import { AdaptableModule } from '../../types';
2
- import { IModule, ModuleInfo, IModuleCollection } from '../../Strategy/Interface/IModule';
2
+ import { IModule, IModuleCollection, ModuleInfo } from '../../Strategy/Interface/IModule';
3
3
  import { TeamSharingImportInfo } from '../../AdaptableState/TeamSharingState';
4
4
  import { AdaptableObject } from '../../AdaptableState/Common/AdaptableObject';
5
5
  import { IModuleService } from './Interface/IModuleService';
@@ -7,9 +7,9 @@ import { AdaptableApi } from '../../../types';
7
7
  export declare class ModuleService implements IModuleService {
8
8
  private adaptableApi;
9
9
  constructor(adaptableApi: AdaptableApi);
10
- isModuleAvailable(adaptableModule: AdaptableModule): boolean;
11
- isModuleName(adaptableModule: string): adaptableModule is AdaptableModule;
10
+ isAdapTableModulePresent(adaptableModule: AdaptableModule): boolean;
12
11
  isModuleEditable(adaptableModule: AdaptableModule): boolean;
12
+ logMissingAgGridDepsInfos(): void;
13
13
  getModuleFriendlyName(adaptableModule: AdaptableModule): string;
14
14
  createModuleUIItems(): void;
15
15
  private createSettingsPanelItems;
@@ -1,20 +1,16 @@
1
1
  import Helper from '../Helpers/Helper';
2
- import { HOST_URL_DOCS } from '../Constants/DocumentationLinkConstants';
3
- import { ALL_MODULES } from '../../AdaptableState/Common/Types';
2
+ import { AgGridRequiredModulesDocsLink, HOST_URL_DOCS, } from '../Constants/DocumentationLinkConstants';
4
3
  export class ModuleService {
5
4
  constructor(adaptableApi) {
6
5
  this.adaptableApi = adaptableApi;
7
6
  this.adaptableApi = adaptableApi;
8
7
  }
9
- isModuleAvailable(adaptableModule) {
8
+ isAdapTableModulePresent(adaptableModule) {
10
9
  let module = this.getModuleCollection().get(adaptableModule);
11
10
  if (!module) {
12
11
  return false;
13
12
  }
14
- return module.isModuleAvailable();
15
- }
16
- isModuleName(adaptableModule) {
17
- return ALL_MODULES.includes(adaptableModule);
13
+ return module.isModuleVisible();
18
14
  }
19
15
  isModuleEditable(adaptableModule) {
20
16
  let module = this.getModuleCollection().get(adaptableModule);
@@ -23,6 +19,22 @@ export class ModuleService {
23
19
  }
24
20
  return module.isModuleEditable();
25
21
  }
22
+ logMissingAgGridDepsInfos() {
23
+ // log missing core (required) AG Grid dependencies
24
+ const agGridModulesAdapter = this.adaptableApi.internalApi.getAgGridModulesAdapter();
25
+ const mandatoryAgGridModuleNames = agGridModulesAdapter.getMandatoryAgGridModuleNames();
26
+ const registeredAgGridModuleNames = agGridModulesAdapter.getAgGridRegisteredModuleNames();
27
+ const missingAgGridModuleNames = mandatoryAgGridModuleNames.filter((moduleName) => !registeredAgGridModuleNames.includes(moduleName));
28
+ if (missingAgGridModuleNames.length) {
29
+ this.adaptableApi.consoleError(`AdapTable requires the following AG Grid modules to be registered: ${missingAgGridModuleNames.join(', ')}.
30
+
31
+ See for more information: ${AgGridRequiredModulesDocsLink}`);
32
+ }
33
+ // log optional missing AG Grid dependencies for all modules
34
+ this.getModuleCollection().forEach((adaptableModule) => {
35
+ adaptableModule.logMissingAgGridDepsInfos();
36
+ });
37
+ }
26
38
  getModuleFriendlyName(adaptableModule) {
27
39
  return this.getModuleInfoByModule(adaptableModule)?.FriendlyName ?? adaptableModule;
28
40
  }
@@ -1,3 +1,4 @@
1
+ import StringExtensions from './Extensions/StringExtensions';
1
2
  export const getScopeViewItems = (scope, api) => {
2
3
  let values = [];
3
4
  if ('ColumnIds' in scope && Array.isArray(scope.ColumnIds)) {
@@ -5,7 +6,9 @@ export const getScopeViewItems = (scope, api) => {
5
6
  values = scope.ColumnIds.map((columnId) => api.columnApi.getFriendlyNameForColumnId(columnId)).filter(Boolean);
6
7
  }
7
8
  if ('DataTypes' in scope) {
8
- values = scope.DataTypes;
9
+ values = scope.DataTypes.map((d) => {
10
+ return 'Data Type: ' + StringExtensions.CapitaliseFirstLetter(d);
11
+ });
9
12
  }
10
13
  if ('All' in scope) {
11
14
  values = ['All Columns'];
@@ -14,7 +17,7 @@ export const getScopeViewItems = (scope, api) => {
14
17
  values = scope.ColumnTypes;
15
18
  }
16
19
  return {
17
- label: 'Scope & Target',
20
+ label: 'Scope',
18
21
  name: 'Target',
19
22
  values,
20
23
  };
@@ -20,7 +20,9 @@ class AdaptableView extends React.Component {
20
20
  return (React.createElement("div", null,
21
21
  React.createElement(GridCellPopup, null),
22
22
  React.createElement(QuickSearchDrawer, null),
23
- this.props.AdaptableApi.internalApi.getModuleService().isModuleAvailable('Dashboard') && (React.createElement(Dashboard, { api: this.props.AdaptableApi })),
23
+ this.props.AdaptableApi.internalApi
24
+ .getModuleService()
25
+ .isAdapTableModulePresent('Dashboard') && React.createElement(Dashboard, { api: this.props.AdaptableApi }),
24
26
  this.props.PopupState.PromptPopup.ShowPromptPopup && (React.createElement(AdaptablePopupPrompt, { message: this.props.PopupState.PromptPopup.Message, header: this.props.PopupState.PromptPopup.Header, onClose: this.props.onClosePromptPopup, onConfirm: this.props.onConfirmPromptPopup, onConfirmActionCreator: this.props.PopupState.PromptPopup.ConfirmActionCreator, defaultValue: this.props.PopupState.PromptPopup.DefaultValue })),
25
27
  Boolean(this.props.PopupState.ConfirmationPopup.ShowConfirmationPopup) && (React.createElement(AdaptablePopupConfirmation, { header: this.props.PopupState.ConfirmationPopup.Header, messsage: this.props.PopupState.ConfirmationPopup.Msg, showPopup: this.props.PopupState.ConfirmationPopup.ShowConfirmationPopup, cancelButtonText: this.props.PopupState.ConfirmationPopup.CancelButtonText, confirmButtonText: this.props.PopupState.ConfirmationPopup.ConfirmButtonText, onCancel: this.props.onCancelConfirmationPopup, onConfirm: this.props.onConfirmConfirmationPopup, showInputBox: this.props.PopupState.ConfirmationPopup.ShowInputBox, messageType: this.props.PopupState.ConfirmationPopup.MessageType, api: this.props.AdaptableApi })),
26
28
  Boolean(this.props.PopupState.ScreenPopup.ShowScreenPopup) && (React.createElement(AdaptablePopup, { componentName: this.props.PopupState.ScreenPopup.ComponentName, componentModule: this.props.PopupState.ScreenPopup.ComponentModule, onHide: this.props.onCloseScreenPopup, api: this.props.AdaptableApi, onClearParams: () => this.props.onClearPopupParams(), moduleParams: this.props.PopupState.ScreenPopup.Params, moduleProps: this.props.PopupState.ScreenPopup.PopupProps })),
@@ -40,6 +40,8 @@ const MODULES_WITH_SCOPE = [
40
40
  const ColumnDefPreview = (props) => {
41
41
  const adaptable = useAdaptable();
42
42
  if (props.column) {
43
+ const api = adaptable.api;
44
+ const summary = api.columnApi.getColumnSummaryForColumnId(props.column.columnId);
43
45
  const keyValuePairs = [
44
46
  {
45
47
  Key: 'Column Id',
@@ -112,7 +114,7 @@ const ColumnDefPreview = (props) => {
112
114
  {
113
115
  Key: 'Column Filter',
114
116
  Value: props.column.filterable
115
- ? adaptable.api.filterApi.columnFilterApi.columnFilterToString(adaptable.api.filterApi.columnFilterApi.getColumnFilterForColumn(props.column.columnId))
117
+ ? api.filterApi.columnFilterApi.columnFilterToString(summary.columnFilter)
116
118
  : 'Ignore',
117
119
  },
118
120
  {
@@ -143,6 +145,10 @@ const ColumnDefPreview = (props) => {
143
145
  Key: 'Sortable',
144
146
  Value: props.column.sortable ? 'Yes' : 'No',
145
147
  },
148
+ {
149
+ Key: 'No. Distinct Values',
150
+ Value: summary.uniqueGridCells.length,
151
+ },
146
152
  ]
147
153
  .map((keyValuePair) => {
148
154
  return {
@@ -162,7 +168,7 @@ const ColumnDefPreview = (props) => {
162
168
  const ModuleView = (props) => {
163
169
  const adaptable = useAdaptable();
164
170
  const module = adaptable.ModuleService.getModuleById(props.moduleName);
165
- if (!module || !module.isModuleAvailable()) {
171
+ if (!module?.isModuleVisible()) {
166
172
  return null;
167
173
  }
168
174
  const moduleInfo = module.moduleInfo;
@@ -213,7 +219,7 @@ export const ColumnInfo = (props) => {
213
219
  React.createElement(Box, { mb: 3 },
214
220
  React.createElement(FormLayout, null,
215
221
  React.createElement(FormRow, { label: "Select Column" },
216
- React.createElement(ColumnSelector, { filterColumn: (column) => !column.alwaysHidden, value: selectedColumnId, onChange: (columnId) => setSelectedColumnId(columnId) })))),
222
+ React.createElement(ColumnSelector, { value: selectedColumnId, onChange: (columnId) => setSelectedColumnId(columnId) })))),
217
223
  selectedColumnId && (React.createElement(Tabs, { mb: 3 },
218
224
  React.createElement(Tabs.Tab, null, "Column Summary"),
219
225
  React.createElement(Tabs.Tab, null, "Column State"),