@adaptabletools/adaptable 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 +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 +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 +23 -4
  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 +86 -6
  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 +7 -7
  261. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  262. package/src/Redux/ActionsReducers/StyledColumnRedux.js +13 -0
  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 +1 -0
  317. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  318. package/src/Utilities/Extensions/ArrayExtensions.js +62 -13
  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 +26 -18
  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 +19 -7
  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 +6 -6
  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 +1 -1
  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 +61 -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 +48 -0
  378. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  379. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
  380. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  381. package/src/agGrid/AgGridModulesAdapter.js +66 -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 +2 -2
  388. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
  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 +116 -24
  394. package/src/components/icons/DefaultIcon.d.ts +0 -1
  395. package/src/components/icons/DefaultIcon.js +0 -6
  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 +24 -0
  409. package/src/types.d.ts +7 -8
  410. package/tsconfig.esm.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 -131
  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 -15
  417. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  418. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
  419. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -82,7 +82,7 @@ export const isPredicateEmpty = (predicate, predicateDef) => {
82
82
  predicate.args.length === 0 ||
83
83
  predicate.args.every((arg) => arg == undefined));
84
84
  };
85
- export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, api) => {
85
+ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, filterComponent, api) => {
86
86
  const combinator = columnFilter?.PredicatesOperator ?? 'AND';
87
87
  const qlPredicate = {
88
88
  operator: combinator,
@@ -99,6 +99,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
99
99
  if (typeof defaultNumericColumnFilter === 'function') {
100
100
  const context = {
101
101
  column: abColumn,
102
+ filterComponent,
102
103
  ...api.internalApi.buildBaseContext(),
103
104
  };
104
105
  defaultQlNumberPredicate = defaultNumericColumnFilter(context);
@@ -118,6 +119,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
118
119
  if (typeof defaultTextColumnFilter === 'function') {
119
120
  const context = {
120
121
  column: abColumn,
122
+ filterComponent,
121
123
  ...api.internalApi.buildBaseContext(),
122
124
  };
123
125
  defaultQlTextPredicate = defaultTextColumnFilter(context);
@@ -131,12 +133,14 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
131
133
  : { operator: 'Contains', args: [] };
132
134
  break;
133
135
  case 'date':
136
+ case 'dateString':
134
137
  let defaultQlDatePredicate;
135
138
  const defaultDateColumnFilter = columnFilterOptions.defaultDateColumnFilter;
136
139
  if (defaultDateColumnFilter) {
137
140
  if (typeof defaultDateColumnFilter === 'function') {
138
141
  const context = {
139
142
  column: abColumn,
143
+ filterComponent,
140
144
  ...api.internalApi.buildBaseContext(),
141
145
  };
142
146
  defaultQlDatePredicate = defaultDateColumnFilter(context);
@@ -160,6 +164,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
160
164
  if (typeof defaultArrayColumnFilter === 'function') {
161
165
  const context = {
162
166
  column: abColumn,
167
+ filterComponent,
163
168
  ...api.internalApi.buildBaseContext(),
164
169
  };
165
170
  defaultQlArrayPredicate = defaultArrayColumnFilter(context);
@@ -107,9 +107,8 @@ export const EntityRulesEditor = (props) => {
107
107
  });
108
108
  }
109
109
  };
110
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
111
110
  const filteredPredicateDefs = predicateDefs.filter((def) => {
112
- if (isValuesPredicateDef(def)) {
111
+ if (api.predicateApi.internalApi.IsInorNotInPredicateDef(def)) {
113
112
  return 'ColumnIds' in data.Scope && data.Scope.ColumnIds.length === 1;
114
113
  }
115
114
  return true;
@@ -29,7 +29,7 @@ export const ColumnValuesSelect = (props) => {
29
29
  minWidth: `var(--ab-cmp-select-column-menu-${column.columnId}__min-width, var(--ab-cmp-select-column-menu__min-width, 160px))`,
30
30
  };
31
31
  }, [column.columnId]);
32
- const component = (React.createElement(Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable: true, closeMenuOnSelect: false, menuStyle: menuStyle, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
32
+ const component = (React.createElement(Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable: 'menulist', closeMenuOnSelect: false, menuStyle: menuStyle, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
33
33
  return (React.createElement("div", { className: join(baseClassName, props.isLoading && `${baseClassName}--loading`, !value.length && `${baseClassName}--empty`), onKeyDownCapture: (e) => {
34
34
  const event = e.nativeEvent || e;
35
35
  event.stopPropagation = () => {
@@ -8,7 +8,7 @@ import { ButtonNew } from '../../Buttons/ButtonNew';
8
8
  import { PopupPanel } from './PopupPanel';
9
9
  import { Flex } from 'rebass';
10
10
  import { CheckBox } from '../../../../components/CheckBox';
11
- import { LayoutShowNotAssociatedObjects } from '../../../../Redux/ActionsReducers/InternalRedux';
11
+ import { LayoutShowNonExtendedObjects } from '../../../../Redux/ActionsReducers/InternalRedux';
12
12
  import SimpleButton from '../../../../components/SimpleButton';
13
13
  import { useAdaptable } from '../../../AdaptableContext';
14
14
  import { useEffect } from 'react';
@@ -113,16 +113,16 @@ export const AdaptablePopupModuleView = (props) => {
113
113
  .getModuleService()
114
114
  .getModuleById(props.module.moduleInfo.ModuleName);
115
115
  const dispatch = useDispatch();
116
- const showLayoutNotAssociatedObjects = useSelector((state) => state.Internal.Layout.ShowLayoutNotAssociatedObjects);
117
- const toggleButtonShowLayoutAssociatedObjects = () => {
118
- if (!adaptableModule?.canBeAssociatedWithLayouts()) {
116
+ const showLayoutNonExtendedObjects = useSelector((state) => state.Internal.Layout.showLayoutNonExtendedObjects);
117
+ const toggleButtonShowLayoutExtensionObjects = () => {
118
+ if (!adaptableModule?.containsLayoutExtensions()) {
119
119
  return;
120
120
  }
121
121
  if (!props.api.layoutApi.internalApi.hasLayoutSpecificObjects()) {
122
122
  return;
123
123
  }
124
124
  return (React.createElement(Flex, { justifyContent: "flex-start" },
125
- React.createElement(CheckBox, { padding: 0, margin: 0, checked: showLayoutNotAssociatedObjects, onChange: (checked) => dispatch(LayoutShowNotAssociatedObjects(checked)) },
125
+ React.createElement(CheckBox, { padding: 0, margin: 0, checked: showLayoutNonExtendedObjects, onChange: (checked) => dispatch(LayoutShowNonExtendedObjects(checked)) },
126
126
  "Show ",
127
127
  moduleInfo.FriendlyName,
128
128
  "s not available in current Layout")));
@@ -132,7 +132,7 @@ export const AdaptablePopupModuleView = (props) => {
132
132
  " ",
133
133
  newButton), infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed() },
134
134
  moduleViewProperties.HeaderComponent && React.createElement(moduleViewProperties.HeaderComponent, null),
135
- toggleButtonShowLayoutAssociatedObjects(),
135
+ toggleButtonShowLayoutExtensionObjects(),
136
136
  items?.length ? (React.createElement(AdaptableObjectList, { module: props.module, items: items })) : (React.createElement(EmptyContent, null, emptyContent ?? `Click 'New' to create a new ${moduleInfo.FriendlyName}`)),
137
137
  isWizardOpen && EditWizard && (React.createElement(EditWizard, { abObjectType: abObjectType, moduleInfo: moduleInfo, data: null, popupParams: props.popupParams, configEntities: null, onCloseWizard: handleWizardClose, onFinishWizard: handleWizardClose }))));
138
138
  };
@@ -10,7 +10,6 @@ import { ColumnValuesSelect } from '../FilterForm/ListBoxFilterForm';
10
10
  import { useAdaptable } from '../../AdaptableContext';
11
11
  import { useDistinctFilterColumnValues } from '../ColumnFilter/components/FloatingFilterValues';
12
12
  import { useEffect } from 'react';
13
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
14
13
  export const PredicateEditor = (props) => {
15
14
  const baseClassName = 'ab-PredicateEditor';
16
15
  const predicateDefsOptions = React.useMemo(() => props?.predicateDefs?.map((item) => ({
@@ -68,7 +67,7 @@ export const PredicateEditor = (props) => {
68
67
  index > 0 && React.createElement(HelpBlock, { margin: 2 }, "AND"),
69
68
  React.createElement(Flex, { key: index, flex: 1, flexDirection: "column" },
70
69
  React.createElement(AdaptableInput, { "data-name": `predicate-input-${index}`, marginTop: 2, type: predicateDefInput.type, autoFocus: index === 0, value: props.predicate.Inputs?.[index] ?? '', onChange: (e) => handlePredicateInputChange(e, index) })))))),
71
- isValuesPredicateDef(currentPredicateDef) && (React.createElement(Box, { mt: 2 },
70
+ adaptable.api.predicateApi.internalApi.IsInorNotInPredicateDef(currentPredicateDef) && (React.createElement(Box, { mt: 2 },
72
71
  React.createElement(ColumnValuesSelect, { isLoading: isDistinctColumnValuesLoading, column: column, options: quickFilterValues.values, selectProps: {
73
72
  onMenuOpen,
74
73
  }, dataType: column.dataType, value: props.predicate.Inputs, onChange: handlePredicateValuesChange })))));
@@ -17,7 +17,7 @@ export const BulkUpdateValueSelector = (props) => {
17
17
  // which is then triggering a get all values
18
18
  // not sure that we need to
19
19
  const permittedValueSelector = (React.createElement(Box, null,
20
- React.createElement(PermittedValuesSelector, { allowNewValues: true, disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: useCallback(({ currentSearchValue }) => {
20
+ React.createElement(PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: useCallback(({ currentSearchValue }) => {
21
21
  if (!columnId || !props.selectedGridCells.length) {
22
22
  return Promise.resolve([]);
23
23
  }
@@ -24,7 +24,7 @@ export const ColumnSelector = function (props) {
24
24
  }
25
25
  return true;
26
26
  });
27
- return (React.createElement(Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
27
+ return (React.createElement(Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
28
28
  props.onChange(colId);
29
29
  }, options: options }));
30
30
  };
@@ -11,7 +11,7 @@ export const FieldSelector = (props) => {
11
11
  value: field.name,
12
12
  }));
13
13
  return (React.createElement(React.Fragment, null,
14
- React.createElement(Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
14
+ React.createElement(Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
15
15
  props.onChange(fieldValue);
16
16
  }, options: options })));
17
17
  };
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { SelectProps } from '../../../components/Select';
3
3
  export type ValueType = number | string | Date;
4
4
  interface PermittedValuesSelectorProps<Value extends ValueType, IsMulti extends boolean> {
5
+ searchable?: false | 'inline' | 'menulist';
5
6
  isMulti?: IsMulti;
6
7
  columnId: string;
7
8
  value: IsMulti extends true ? Value[] : Value;
@@ -31,7 +31,7 @@ export const PermittedValuesSelector = function (props) {
31
31
  return currentSearchValue;
32
32
  },
33
33
  })
34
- : adaptable.api.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn({
34
+ : adaptable.api.filterApi.columnFilterApi.internalApi.getColumnFilterValues({
35
35
  columnId: props.columnId,
36
36
  get currentSearchValue() {
37
37
  searchValueUsedInFilterValue = true;
@@ -97,5 +97,5 @@ export const PermittedValuesSelector = function (props) {
97
97
  reload();
98
98
  }
99
99
  };
100
- return (React.createElement(Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
100
+ return (React.createElement(Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, searchable: props.searchable, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
101
101
  };
@@ -33,7 +33,7 @@ const DashboardComponent = (props) => {
33
33
  }
34
34
  else {
35
35
  const moduleToolbarName = visibleToolbarName;
36
- if (props.api.internalApi.getModuleService().isModuleAvailable(moduleToolbarName)) {
36
+ if (props.api.internalApi.getModuleService().isAdapTableModulePresent(moduleToolbarName)) {
37
37
  let moduleToolbarView = AdaptableViewPanelFactory.get(moduleToolbarName);
38
38
  if (moduleToolbarView) {
39
39
  let moduleInfo = props.api.internalApi
@@ -92,7 +92,7 @@ const DashboardComponent = (props) => {
92
92
  let instanceName = props.api.internalApi.getToolbarTitle();
93
93
  let dashboardOptions = props.api.optionsApi.getDashboardOptions();
94
94
  const shouldRenderQuickSearchHeader = dashboardOptions.showQuickSearchInHeader &&
95
- props.api.internalApi.getModuleService().getModuleById(QuickSearchModuleId).isModuleAvailable();
95
+ props.api.internalApi.getModuleService().isAdapTableModulePresent(QuickSearchModuleId);
96
96
  const applicationIcon = props.api.optionsApi.getUserInterfaceOptions().applicationIcon;
97
97
  if (props.DashboardState.IsHidden) {
98
98
  return React.createElement("div", null);
@@ -40,7 +40,9 @@ class DashboardPopupComponent extends React.Component {
40
40
  .find((ct) => ct.name === vt);
41
41
  return customToolbar
42
42
  ? true
43
- : this.props.api.internalApi.getModuleService().isModuleAvailable(vt);
43
+ : this.props.api.internalApi
44
+ .getModuleService()
45
+ .isAdapTableModulePresent(vt);
44
46
  });
45
47
  return { ...tab, Toolbars };
46
48
  });
@@ -7,7 +7,7 @@ export const PinnedDashboard = (props) => {
7
7
  const adaptable = useAdaptable();
8
8
  const dashboardState = useSelector((state) => state.Dashboard);
9
9
  const pinnedToolbars = (dashboardState.PinnedToolbars ?? []).filter((tb) => adaptable.api.dashboardApi.internalApi.isToolbarCustom(tb) ||
10
- adaptable.api.internalApi.getModuleService().isModuleAvailable(tb));
10
+ adaptable.api.internalApi.getModuleService().isAdapTableModulePresent(tb));
11
11
  if (!pinnedToolbars || pinnedToolbars.length == 0) {
12
12
  return React.createElement(React.Fragment, null);
13
13
  }
@@ -18,7 +18,7 @@ export const DataChangeHistoryGrid = (props) => {
18
18
  const initializeAdaptableGrid = async () => {
19
19
  const gridOptions = buildGridOptions(mainAdaptableInstance, changeHistoryLog);
20
20
  const adaptableOptions = buildAdaptableOptions(mainAdaptableInstance, adaptableContainerId, agGridContainerId, undoChangeEnabled, onUndoChange, onClearRow);
21
- const modules = mainAdaptableInstance.getAgGridRegisteredModules();
21
+ const modules = mainAdaptableInstance.agGridModulesAdapter.getAgGridRegisteredModules();
22
22
  const dataChangeHistoryAdaptableApi = await AdaptableAgGrid._initInternal({
23
23
  variant: 'vanilla',
24
24
  adaptableOptions,
@@ -140,8 +140,14 @@ const buildAdaptableOptions = (mainAdaptableInstance, adaptableContainerId, agGr
140
140
  SortOrder: 'Desc',
141
141
  },
142
142
  ],
143
- ColumnWidths: {
144
- undoActionColumn: 110,
143
+ ColumnSizing: {
144
+ 'changeInfo.primaryKeyValue': { Flex: 3 },
145
+ changedColumnLabel: { Flex: 3 },
146
+ 'changeInfo.oldValue': { Flex: 3 },
147
+ 'changeInfo.newValue': { Flex: 3 },
148
+ 'changeInfo.changedAt': { Flex: 3 },
149
+ changeTriggerLabel: { Flex: 2 },
150
+ undoActionColumn: { Width: 110 },
145
151
  },
146
152
  ColumnPinning: {
147
153
  undoActionColumn: 'right',
@@ -213,49 +219,31 @@ const buildGridOptions = (mainAdaptableInstance, changeHistoryLog) => {
213
219
  headerName: `Row (${mainPrimaryKeyColumnHeader})`,
214
220
  field: 'changeInfo.primaryKeyValue',
215
221
  cellDataType: 'text',
216
- suppressAutoSize: false,
217
- flex: 3,
218
- initialFlex: 3,
219
222
  },
220
223
  {
221
224
  headerName: 'Column',
222
225
  field: 'changedColumnLabel',
223
226
  cellDataType: 'text',
224
- suppressAutoSize: false,
225
- flex: 3,
226
- initialFlex: 3,
227
227
  },
228
228
  {
229
229
  headerName: 'Previous',
230
230
  field: 'changeInfo.oldValue',
231
231
  cellDataType: 'text',
232
- suppressAutoSize: false,
233
- flex: 3,
234
- initialFlex: 3,
235
232
  },
236
233
  {
237
234
  headerName: 'New',
238
235
  field: 'changeInfo.newValue',
239
236
  cellDataType: 'text',
240
- suppressAutoSize: false,
241
- flex: 3,
242
- initialFlex: 3,
243
237
  },
244
238
  {
245
239
  headerName: 'Changed',
246
240
  field: 'changeInfo.changedAt',
247
241
  cellDataType: 'date',
248
- suppressAutoSize: false,
249
- flex: 3,
250
- initialFlex: 3,
251
242
  },
252
243
  {
253
244
  headerName: 'Source',
254
245
  field: 'changeTriggerLabel',
255
246
  cellDataType: 'text',
256
- suppressAutoSize: false,
257
- flex: 2,
258
- initialFlex: 2,
259
247
  },
260
248
  ],
261
249
  rowData: mapChangeHistoryRowData(changeHistoryLog, mainAdaptableInstance),
@@ -119,53 +119,90 @@ export const getFormatDisplayTypeForScope = (scope, api) => {
119
119
  if ('All' in scope) {
120
120
  return undefined;
121
121
  }
122
- // need to see if all columns are numeric or date
122
+ // Date-related data types that should all be treated as 'date'
123
+ const dateTypes = api.columnApi.internalApi.getColumnDateTypes();
124
+ // Check for ColumnIds in scope
123
125
  if ('ColumnIds' in scope) {
124
126
  const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnWithColumnId(c)).filter(Boolean);
125
127
  const columnDataTypes = uniq(columns.map((c) => c.dataType));
126
- if (columnDataTypes.length == 1 && columnDataTypes[0] == 'number') {
128
+ // If there's only one data type
129
+ if (columnDataTypes.length === 1) {
130
+ const dataType = columnDataTypes[0];
131
+ if (dataType === 'number') {
132
+ return 'number';
133
+ }
134
+ if (dateTypes.includes(dataType)) {
135
+ return 'date';
136
+ }
137
+ if (dataType === 'text') {
138
+ return 'text';
139
+ }
140
+ }
141
+ // If there are multiple data types but they're all date types
142
+ else if (columnDataTypes.length > 0 &&
143
+ columnDataTypes.every((type) => dateTypes.includes(type))) {
144
+ return 'date';
145
+ }
146
+ return undefined;
147
+ }
148
+ // Check for DataTypes in scope
149
+ if ('DataTypes' in scope && scope.DataTypes.length === 1) {
150
+ const dataType = scope.DataTypes[0];
151
+ if (dataType === 'number') {
127
152
  return 'number';
128
153
  }
129
- if (columnDataTypes.length == 1 && columnDataTypes[0] == 'date') {
154
+ if (dateTypes.includes(dataType)) {
130
155
  return 'date';
131
156
  }
132
- if (columnDataTypes.length == 1 && columnDataTypes[0] == 'text') {
157
+ if (dataType === 'text') {
133
158
  return 'text';
134
159
  }
135
- return undefined;
136
- }
137
- if ('DataTypes' in scope && scope.DataTypes.length == 1 && scope.DataTypes[0] == 'number') {
138
- return 'number';
139
160
  }
140
- if ('DataTypes' in scope && scope.DataTypes.length == 1 && scope.DataTypes[0] == 'date') {
161
+ // If there are multiple data types but they're all date types
162
+ else if ('DataTypes' in scope &&
163
+ scope.DataTypes.length > 0 &&
164
+ scope.DataTypes.every((type) => dateTypes.includes(type))) {
141
165
  return 'date';
142
166
  }
143
- if ('DataTypes' in scope && scope.DataTypes.length == 1 && scope.DataTypes[0] == 'text') {
144
- return 'text';
145
- }
167
+ // Check for ColumnTypes in scope
146
168
  if ('ColumnTypes' in scope && scope.ColumnTypes.length) {
147
- // if a Pivot Total Column Type is specified, we can safely assume that the data type is number
169
+ // If a Pivot Total Column Type is specified, we can safely assume that the data type is number
148
170
  const pivotTotalTypes = [
149
171
  PIVOT_ANY_TOTAL_COLUMN_TYPE,
150
172
  PIVOT_GRAND_TOTAL_COLUMN_TYPE,
151
173
  PIVOT_COLUMN_TOTAL_COLUMN_TYPE,
152
174
  PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE,
153
175
  ];
154
- // if all column types are pivot total types, we can safely assume that the data type is number
176
+ // If all column types are pivot total types, we can safely assume that the data type is number
155
177
  if (scope.ColumnTypes.length > 0 &&
156
178
  scope.ColumnTypes.every((type) => pivotTotalTypes.includes(type))) {
157
179
  return 'number';
158
180
  }
159
- // need to check if all column with this column type has the same data type and return that particular one
181
+ // Check if all columns with this column type have the same data type
160
182
  const columns = scope.ColumnTypes.flatMap((columnType) => {
161
183
  return api.columnApi.getColumnsByColumnType(columnType);
162
184
  });
163
- // check if all have the same type
164
- if (columns.length &&
165
- columns.every((column) => column.dataType === columns[0].dataType) &&
166
- // supported data types
167
- ['number', 'date', 'text'].includes(columns[0].dataType)) {
168
- return columns[0].dataType;
185
+ if (columns.length) {
186
+ // Check if all columns have the same type
187
+ const allSameType = columns.every((column) => column.dataType === columns[0].dataType);
188
+ // Handle specific data types
189
+ if (allSameType) {
190
+ const dataType = columns[0].dataType;
191
+ if (dataType === 'number') {
192
+ return 'number';
193
+ }
194
+ if (dateTypes.includes(dataType)) {
195
+ return 'date';
196
+ }
197
+ if (dataType === 'text') {
198
+ return 'text';
199
+ }
200
+ }
201
+ // Check if all columns are date types (even if they're different date types)
202
+ const allDateTypes = columns.every((column) => dateTypes.includes(column.dataType));
203
+ if (allDateTypes) {
204
+ return 'date';
205
+ }
169
206
  }
170
207
  }
171
208
  return undefined;
@@ -83,18 +83,18 @@ export const FormatColumnSettingsWizardSection = (props) => {
83
83
  React.createElement(Tabs.Content, null,
84
84
  React.createElement(Flex, { flexDirection: "row" },
85
85
  React.createElement(FormLayout, null,
86
+ React.createElement(FormRow, { label: "Cell Alignment" },
87
+ React.createElement(ToggleGroup, null,
88
+ React.createElement(Toggle, { icon: "align-left", pressed: data.CellAlignment === 'Left', onPressedChange: (pressed) => pressed
89
+ ? onCellAlignmentSelectChanged('Left')
90
+ : onCellAlignmentSelectChanged(null) }),
91
+ React.createElement(Toggle, { icon: "align-center", pressed: data.CellAlignment === 'Center', onPressedChange: (pressed) => pressed
92
+ ? onCellAlignmentSelectChanged('Center')
93
+ : onCellAlignmentSelectChanged(null) }),
94
+ React.createElement(Toggle, { icon: "align-right", pressed: data.CellAlignment === 'Right', onPressedChange: (pressed) => pressed
95
+ ? onCellAlignmentSelectChanged('Right')
96
+ : onCellAlignmentSelectChanged(null) }))),
86
97
  data.Target === 'cell' && (React.createElement(React.Fragment, null,
87
- React.createElement(FormRow, { label: "Cell Alignment" },
88
- React.createElement(ToggleGroup, null,
89
- React.createElement(Toggle, { icon: "align-left", pressed: data.CellAlignment === 'Left', onPressedChange: (pressed) => pressed
90
- ? onCellAlignmentSelectChanged('Left')
91
- : onCellAlignmentSelectChanged(null) }),
92
- React.createElement(Toggle, { icon: "align-center", pressed: data.CellAlignment === 'Center', onPressedChange: (pressed) => pressed
93
- ? onCellAlignmentSelectChanged('Center')
94
- : onCellAlignmentSelectChanged(null) }),
95
- React.createElement(Toggle, { icon: "align-right", pressed: data.CellAlignment === 'Right', onPressedChange: (pressed) => pressed
96
- ? onCellAlignmentSelectChanged('Right')
97
- : onCellAlignmentSelectChanged(null) }))),
98
98
  React.createElement(FormRow, { label: "Exclude Data Rows:" },
99
99
  React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
100
100
  React.createElement(CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, mr: 2 }))),
@@ -13,7 +13,7 @@ export const AdaptableObjectsSummary = () => {
13
13
  const modules = adaptable.ModuleService.getModuleCollection();
14
14
  const baseClassName = 'ab-AdaptableObjectsSummary';
15
15
  return (React.createElement(Box, { className: baseClassName }, [...modules].map(([moduleName, module]) => {
16
- if (!module.isModuleAvailable()) {
16
+ if (!module.isModuleVisible()) {
17
17
  return null;
18
18
  }
19
19
  const items = module?.toViewAll?.();
@@ -10,7 +10,7 @@ import { AdaptableObjectRow } from '../../Components/AdaptableObjectRow';
10
10
  import { PopupPanel } from '../../Components/Popups/AdaptablePopup/PopupPanel';
11
11
  import { AdaptableObjectsSummary } from './AdaptableObjectsSummary';
12
12
  import { ADAPTABLE_VERSION } from '../../../EnvVars';
13
- import { AG_GRID_VERSION } from '../../../agGrid/agGridModules';
13
+ import { AG_GRID_VERSION } from '../../../agGrid/AgGridModulesAdapter';
14
14
  const adaptableVersion = ADAPTABLE_VERSION;
15
15
  const agGridVersion = AG_GRID_VERSION;
16
16
  export const GridInfoPopup = (props) => {
@@ -28,7 +28,7 @@ export const TransposedPopup = (props) => {
28
28
  // customisable
29
29
  return visibleColumns
30
30
  ? adaptable.api.columnApi.getVisibleColumns()
31
- : adaptable.api.columnApi.getColumns();
31
+ : adaptable.api.columnApi.getUIAvailableColumns();
32
32
  }, []);
33
33
  /**
34
34
  * This is used as first field
@@ -158,7 +158,7 @@ export const TransposedPopup = (props) => {
158
158
  rowData: transposedRowsAndColumns.transposedRows,
159
159
  sideBar: false,
160
160
  };
161
- const modules = adaptable.getAgGridRegisteredModules();
161
+ const modules = adaptable.agGridModulesAdapter.getAgGridRegisteredModules();
162
162
  AdaptableAgGrid._initInternal({
163
163
  variant: 'vanilla',
164
164
  adaptableOptions,
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import * as LayoutRedux from '../../../Redux/ActionsReducers/LayoutRedux';
3
3
  import { OnePageAdaptableWizard, OnePageWizardSummary } from '../../Wizard/OnePageAdaptableWizard';
4
- import ObjectFactory from '../../../Utilities/ObjectFactory';
5
4
  import { cloneObject } from '../../../Utilities/Helpers/Helper';
6
5
  import { SettingsSection, SettingsSectionSummary } from './sections/SettingsSection';
7
6
  import { Box } from 'rebass';
@@ -29,17 +28,17 @@ export const LayoutWizard = (props) => {
29
28
  if (initialLayout) {
30
29
  preparedLayout = cloneObject(initialLayout);
31
30
  if (props?.popupParams?.action === 'Clone') {
32
- preparedLayout.Name = '';
33
- delete preparedLayout.Uuid;
31
+ preparedLayout = {
32
+ ...adaptable.api.layoutApi.internalApi.cloneLayout(preparedLayout),
33
+ Name: '',
34
+ };
34
35
  }
35
36
  }
36
37
  else {
37
38
  const shouldCreatePivot = props.popupParams?.config?.layoutType === 'pivot' ||
38
39
  props.abObjectType?.name?.toLowerCase().includes('pivot') ||
39
40
  false;
40
- preparedLayout = shouldCreatePivot
41
- ? ObjectFactory.CreateEmptyPivotLayout({ Name: '' })
42
- : ObjectFactory.CreateEmptyLayout({ Name: '' });
41
+ preparedLayout = adaptable.api.layoutApi.internalApi.buildInitialLayout({ Name: '' }, shouldCreatePivot ? 'pivot' : 'table');
43
42
  }
44
43
  if (preparedLayout.SuppressAggFuncInHeader === undefined) {
45
44
  preparedLayout.SuppressAggFuncInHeader =
@@ -62,7 +61,6 @@ export const LayoutWizard = (props) => {
62
61
  break;
63
62
  case 'Clone':
64
63
  const clonedLayout = { ...layout };
65
- delete clonedLayout.Uuid;
66
64
  dispatch(LayoutRedux.LayoutAdd(clonedLayout));
67
65
  dispatch(LayoutRedux.LayoutSelect(clonedLayout.Name));
68
66
  break;