@adaptabletools/adaptable 20.3.0 → 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 (415) 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 +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 +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 +101 -7
  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 +5 -5
  248. package/src/Api/Internal/LayoutInternalApi.js +42 -5
  249. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  250. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  251. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  252. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  253. package/src/Api/LayoutApi.d.ts +7 -2
  254. package/src/Api/PlusMinusApi.d.ts +11 -7
  255. package/src/Api/ScheduleApi.d.ts +9 -16
  256. package/src/Api/ShortcutApi.d.ts +5 -6
  257. package/src/Api/StyledColumnApi.d.ts +10 -7
  258. package/src/Api/UserInterfaceApi.d.ts +5 -6
  259. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  260. package/src/Redux/ActionsReducers/InternalRedux.js +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/ObjectFactory.js +3 -3
  320. package/src/Utilities/Services/AnnotationsService.js +1 -1
  321. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  322. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  323. package/src/Utilities/Services/ModuleService.js +19 -7
  324. package/src/View/AdaptableView.js +3 -1
  325. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  326. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  327. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  328. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  329. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  330. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  331. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  332. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  333. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  334. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  335. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  336. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  337. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  338. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  339. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  340. package/src/View/Components/ColumnFilter/utils.js +6 -1
  341. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  342. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  343. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -6
  344. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  345. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  346. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  347. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  348. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  349. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  350. package/src/View/Dashboard/Dashboard.js +2 -2
  351. package/src/View/Dashboard/DashboardPopup.js +3 -1
  352. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  353. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  354. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +58 -21
  355. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -11
  356. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  357. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -1
  358. package/src/View/Layout/TransposedPopup.js +2 -2
  359. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  360. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  361. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  362. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  363. package/src/View/Theme/ThemeSelector.js +1 -1
  364. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  365. package/src/agGrid/AdaptableAgGrid.js +251 -216
  366. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  367. package/src/agGrid/AdaptableFilterHandler.js +61 -0
  368. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  369. package/src/agGrid/AgGridAdapter.js +13 -46
  370. package/src/agGrid/AgGridColumnAdapter.d.ts +2 -2
  371. package/src/agGrid/AgGridColumnAdapter.js +81 -36
  372. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  373. package/src/agGrid/AgGridFilterAdapter.js +48 -0
  374. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  375. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
  376. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  377. package/src/agGrid/AgGridModulesAdapter.js +66 -0
  378. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  379. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  380. package/src/components/Dialog/index.js +1 -1
  381. package/src/components/Dropdown/Arrows.js +2 -2
  382. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  383. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +2 -2
  384. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
  385. package/src/components/FileDroppable/index.js +1 -1
  386. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  387. package/src/components/OverlayTrigger/index.js +1 -1
  388. package/src/components/Select/Select.d.ts +1 -1
  389. package/src/components/Select/Select.js +116 -24
  390. package/src/components/icons/DefaultIcon.d.ts +0 -1
  391. package/src/components/icons/DefaultIcon.js +0 -6
  392. package/src/env.js +2 -2
  393. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  394. package/src/layout-manager/src/index.d.ts +11 -3
  395. package/src/layout-manager/src/index.js +302 -87
  396. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  397. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  398. package/src/metamodel/adaptable.metamodel.d.ts +70 -19
  399. package/src/metamodel/adaptable.metamodel.js +1 -1
  400. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  401. package/src/migration/VersionUpgrade17.js +1 -1
  402. package/src/migration/VersionUpgrade20.js +1 -0
  403. package/src/migration/VersionUpgrade21.d.ts +6 -0
  404. package/src/migration/VersionUpgrade21.js +24 -0
  405. package/src/types.d.ts +7 -8
  406. package/tsconfig.esm.tsbuildinfo +1 -1
  407. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  408. package/src/agGrid/FilterWrapper.d.ts +0 -2
  409. package/src/agGrid/FilterWrapper.js +0 -131
  410. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  411. package/src/agGrid/agGridModules.d.ts +0 -3
  412. package/src/agGrid/agGridModules.js +0 -15
  413. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  414. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
  415. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -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,
@@ -45,7 +45,7 @@ export const ColumnsSectionSummary = () => {
45
45
  }
46
46
  const friendlyName = adaptable.api.columnApi.getFriendlyNameForColumnId(columnId, layout);
47
47
  const header = layout.ColumnHeaders?.[columnId] ?? '';
48
- const columnWidth = layout.ColumnWidths?.[columnId];
48
+ const columnWidth = layout.ColumnSizing?.[columnId]?.Width;
49
49
  const columnPinning = layout.ColumnPinning?.[columnId];
50
50
  let agg = (layout.TableAggregationColumns || []).find((agg) => agg.ColumnId === columnId)?.AggFunc;
51
51
  agg = typeof agg === 'object' ? agg.type : agg;
@@ -156,7 +156,11 @@ const ColumnRow = (props) => {
156
156
  ];
157
157
  const { column } = props;
158
158
  // width
159
- const columnWidth = props.layout.ColumnWidths?.[column.columnId];
159
+ const columnWidth = props.layout.ColumnSizing?.[column.columnId]?.Width;
160
+ const columnFlex = props.layout.ColumnSizing?.[column.columnId]?.Flex;
161
+ const minWidth = props.layout.ColumnSizing?.[column.columnId]?.MinWidth;
162
+ const maxWidth = props.layout.ColumnSizing?.[column.columnId]?.MaxWidth;
163
+ const resizable = column.resizable !== false;
160
164
  const visible = (!isPivotLayout(props.layout) &&
161
165
  props.layout.TableColumns.includes(column.columnId) &&
162
166
  props.layout.ColumnVisibility?.[column.columnId] !== false) ||
@@ -186,11 +190,29 @@ const ColumnRow = (props) => {
186
190
  props.onColumnNameChange(props.column.columnId, event.target.value);
187
191
  }, value: customHeader })),
188
192
  React.createElement(FormRow, { label: "Width" },
189
- React.createElement(Input, { "data-name": "column-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", disabled: !props.column.resizable, onChange: (event) => {
193
+ React.createElement(Input, { "data-name": "column-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", disabled: resizable === false, onChange: (event) => {
190
194
  let value = parseFloat(event.target.value);
191
195
  value = typeof value === 'number' && !isNaN(value) ? value : void 0;
192
196
  props.onColumnWidthChange(props.column.columnId, value);
193
- }, value: columnWidth })),
197
+ }, value: columnWidth ?? '' })),
198
+ React.createElement(FormRow, { label: "Flex" },
199
+ React.createElement(Input, { "data-name": "column-flex", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column flex", disabled: resizable === false, onChange: (event) => {
200
+ let value = parseFloat(event.target.value);
201
+ value = typeof value === 'number' && !isNaN(value) ? value : void 0;
202
+ props.onColumnFlexChange(props.column.columnId, value);
203
+ }, value: columnFlex ?? '' })),
204
+ React.createElement(FormRow, { label: "Min Width" },
205
+ React.createElement(Input, { "data-name": "column-min-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column min width", disabled: resizable === false, onChange: (event) => {
206
+ let value = parseFloat(event.target.value);
207
+ value = typeof value === 'number' && !isNaN(value) ? value : void 0;
208
+ props.onColumnMinWidthChange(props.column.columnId, value);
209
+ }, value: minWidth ?? '' })),
210
+ React.createElement(FormRow, { label: "Max Width" },
211
+ React.createElement(Input, { "data-name": "column-max-width", className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column max width", disabled: resizable === false, onChange: (event) => {
212
+ let value = parseFloat(event.target.value);
213
+ value = typeof value === 'number' && !isNaN(value) ? value : void 0;
214
+ props.onColumnMaxWidthChange(props.column.columnId, value);
215
+ }, value: maxWidth ?? '' })),
194
216
  React.createElement(FormRow, { label: "Pinning" },
195
217
  React.createElement(DropdownButton, { "data-name": "column-pinning", columns: ['label'], items: pinningOptions }, pinningOptions.find((option) => option.value === columnPinning).label))))))));
196
218
  };
@@ -345,12 +367,45 @@ export const ColumnsSection = (props) => {
345
367
  });
346
368
  };
347
369
  const handleColumnWidthChange = (columnId, width) => {
370
+ const ColumnSizing = { ...layout.ColumnSizing };
371
+ const colSizingForCol = { ...ColumnSizing[columnId] };
372
+ delete colSizingForCol.Flex;
373
+ colSizingForCol.Width = width;
374
+ ColumnSizing[columnId] = colSizingForCol;
348
375
  onChange({
349
376
  ...layout,
350
- ColumnWidths: {
351
- ...layout.ColumnWidths,
352
- [columnId]: width,
353
- },
377
+ ColumnSizing,
378
+ });
379
+ };
380
+ const handleColumnFlexChange = (columnId, flex) => {
381
+ const ColumnSizing = { ...layout.ColumnSizing };
382
+ const colSizingForCol = { ...ColumnSizing[columnId] };
383
+ delete colSizingForCol.Width;
384
+ colSizingForCol.Flex = flex;
385
+ ColumnSizing[columnId] = colSizingForCol;
386
+ onChange({
387
+ ...layout,
388
+ ColumnSizing,
389
+ });
390
+ };
391
+ const handleColumnMinWidthChange = (columnId, minWidth) => {
392
+ const ColumnSizing = { ...layout.ColumnSizing };
393
+ const colSizingForCol = { ...ColumnSizing[columnId] };
394
+ colSizingForCol.MinWidth = minWidth;
395
+ ColumnSizing[columnId] = colSizingForCol;
396
+ onChange({
397
+ ...layout,
398
+ ColumnSizing,
399
+ });
400
+ };
401
+ const handleColumnMaxWidthChange = (columnId, maxWidth) => {
402
+ const ColumnSizing = { ...layout.ColumnSizing };
403
+ const colSizingForCol = { ...ColumnSizing[columnId] };
404
+ colSizingForCol.MaxWidth = maxWidth;
405
+ ColumnSizing[columnId] = colSizingForCol;
406
+ onChange({
407
+ ...layout,
408
+ ColumnSizing,
354
409
  });
355
410
  };
356
411
  const visibleIds = layout.TableColumns.filter((colId) => {
@@ -382,7 +437,7 @@ export const ColumnsSection = (props) => {
382
437
  React.createElement(ReorderDraggable, { toIdentifier: (option) => `${option.columnId}`, isOptionDraggable: (option) => {
383
438
  return option.moveable;
384
439
  }, order: currentOrder, renderOption: (option) => {
385
- return (React.createElement(ColumnRow, { onColumnNameChange: handleColumnNameChange, onColumnWidthChange: handleColumnWidthChange, onColumnVisibilityChange: handleColumnVisibilityChange, onPinChange: handlePinChange, layout: layout, column: option }));
440
+ return (React.createElement(ColumnRow, { onColumnNameChange: handleColumnNameChange, onColumnWidthChange: handleColumnWidthChange, onColumnFlexChange: handleColumnFlexChange, onColumnMinWidthChange: handleColumnMinWidthChange, onColumnMaxWidthChange: handleColumnMaxWidthChange, onColumnVisibilityChange: handleColumnVisibilityChange, onPinChange: handlePinChange, layout: layout, column: option }));
386
441
  }, onChange: handleColumnsChange }),
387
442
  renderSelectionSection({
388
443
  options: visibleIds,
@@ -327,30 +327,30 @@ export const PivotAggregationsSection = (props) => {
327
327
  label: StringExtensions.CamelCaseToHumanText(position),
328
328
  value: position,
329
329
  };
330
- }), placeholder: "Off", value: layout.GrandTotalRow, onChange: (value) => {
330
+ }), placeholder: "[none]", value: layout.GrandTotalRow, onChange: (value) => {
331
331
  props.onChange({
332
332
  ...layout,
333
333
  GrandTotalRow: value,
334
334
  });
335
335
  }, isClearable: true })),
336
336
  React.createElement(FormRow, { label: 'Pivot Grand Total' },
337
- React.createElement(Select, { style: { width: 120 }, options: ['before', 'after'].map((position) => {
337
+ React.createElement(Select, { style: { width: 160 }, options: ['before', 'after'].map((position) => {
338
338
  return {
339
339
  label: StringExtensions.CapitaliseFirstLetter(position),
340
340
  value: position,
341
341
  };
342
- }), placeholder: "Off", value: layout.PivotGrandTotal, onChange: (value) => {
342
+ }), placeholder: "[none]", value: layout.PivotGrandTotal, onChange: (value) => {
343
343
  props.onChange({
344
344
  ...layout,
345
345
  PivotGrandTotal: value,
346
346
  });
347
347
  }, isClearable: true })),
348
- React.createElement(FormRow, { label: 'Pivot Column Total' }, isPivotColumnTotalEnabled === true ? (React.createElement(Select, { style: { width: 120 }, options: ['before', 'after'].map((position) => {
348
+ React.createElement(FormRow, { label: 'Pivot Column Total' }, isPivotColumnTotalEnabled === true ? (React.createElement(Select, { style: { width: 160 }, options: ['before', 'after'].map((position) => {
349
349
  return {
350
350
  label: StringExtensions.CapitaliseFirstLetter(position),
351
351
  value: position,
352
352
  };
353
- }), placeholder: "Off", value: layout.PivotColumnTotal, onChange: (value) => {
353
+ }), placeholder: "[none]", value: layout.PivotColumnTotal, onChange: (value) => {
354
354
  props.onChange({
355
355
  ...layout,
356
356
  PivotColumnTotal: value,
@@ -18,10 +18,7 @@ export const AdaptableStatusBar = (props) => {
18
18
  const allMenuItems = useSelector((state) => state?.Internal?.SettingsPanelModuleEntries);
19
19
  return (React.createElement(Flex, { className: "ab-StatusBar-Panel", "data-id": props.context.Key }, statusSubPanels?.StatusBarPanels?.map((subPanel) => {
20
20
  const module = adaptable.ModuleService.getModuleById(subPanel);
21
- if (!module) {
22
- return React.createElement(React.Fragment, { key: subPanel });
23
- }
24
- if (!module.isModuleAvailable()) {
21
+ if (!module?.isModuleVisible()) {
25
22
  return React.createElement(React.Fragment, { key: subPanel });
26
23
  }
27
24
  /**
@@ -27,7 +27,7 @@ export const StatusBarPopup = (props) => {
27
27
  }, [statusPanels]);
28
28
  const availableItems = ALL_STATUS_SUB_PANELS.filter((panel) => {
29
29
  const module = adaptable.ModuleService.getModuleById(panel);
30
- return module && module.isModuleAvailable();
30
+ return module?.isModuleVisible();
31
31
  }).map((panel) => {
32
32
  const module = adaptable.ModuleService.getModuleById(panel);
33
33
  return { Id: panel, Title: module.moduleInfo.FriendlyName };
@@ -23,7 +23,7 @@ export const ThemeSelector = (props) => {
23
23
  label: theme.Description,
24
24
  };
25
25
  });
26
- return (React.createElement(Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown", searchable: false, options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
26
+ return (React.createElement(Select, { "aria-label": "Select Theme", "data-name": "select-theme-dropdown", options: optionThemes, value: currentTheme, disabled: disabled, size: props.size, onChange: (themeName) => {
27
27
  dispatch(ThemeRedux.ThemeSelect(themeName));
28
28
  } }));
29
29
  };