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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/agGrid.d.ts +2 -1
  2. package/agGrid.js +3 -1
  3. package/base.css +36 -15
  4. package/base.css.map +1 -1
  5. package/icons/add-circle.svg +1 -0
  6. package/icons/add.svg +1 -0
  7. package/icons/alert.svg +1 -0
  8. package/icons/align-center.svg +1 -0
  9. package/icons/align-justify.svg +1 -0
  10. package/icons/align-left.svg +1 -0
  11. package/icons/align-right.svg +1 -0
  12. package/icons/arrow-down-long.svg +1 -0
  13. package/icons/arrow-down.svg +1 -0
  14. package/icons/arrow-expand.svg +1 -0
  15. package/icons/arrow-left.svg +1 -0
  16. package/icons/arrow-right.svg +1 -0
  17. package/icons/arrow-up-long.svg +1 -0
  18. package/icons/arrow-up.svg +1 -0
  19. package/icons/assignment.svg +1 -0
  20. package/icons/badge.svg +1 -0
  21. package/icons/bold.svg +1 -0
  22. package/icons/boolean-list.svg +1 -0
  23. package/icons/brain.svg +1 -0
  24. package/icons/broadcast.svg +1 -0
  25. package/icons/brush.svg +1 -0
  26. package/icons/building.svg +1 -0
  27. package/icons/calculated-column.svg +1 -0
  28. package/icons/calendar.svg +1 -0
  29. package/icons/call.svg +1 -0
  30. package/icons/case-lower.svg +1 -0
  31. package/icons/case-sentence.svg +1 -0
  32. package/icons/case-upper.svg +1 -0
  33. package/icons/cells.svg +1 -0
  34. package/icons/chart.svg +1 -0
  35. package/icons/chat.svg +1 -0
  36. package/icons/check-circle.svg +1 -0
  37. package/icons/check.svg +1 -0
  38. package/icons/checked.svg +1 -0
  39. package/icons/clipboard.svg +1 -0
  40. package/icons/clone.svg +1 -0
  41. package/icons/close.svg +1 -0
  42. package/icons/cloud-upload.svg +1 -0
  43. package/icons/collapse-all.svg +1 -0
  44. package/icons/collapse.svg +1 -0
  45. package/icons/color-palette.svg +1 -0
  46. package/icons/column-add.svg +1 -0
  47. package/icons/column-outline.svg +1 -0
  48. package/icons/columns.svg +1 -0
  49. package/icons/comment.svg +1 -0
  50. package/icons/comments.svg +1 -0
  51. package/icons/contact.svg +1 -0
  52. package/icons/contains.svg +1 -0
  53. package/icons/copy.svg +1 -0
  54. package/icons/csv.svg +1 -0
  55. package/icons/dashboard.svg +1 -0
  56. package/icons/data-set.svg +1 -0
  57. package/icons/date-range.svg +1 -0
  58. package/icons/delete.svg +1 -0
  59. package/icons/division.svg +1 -0
  60. package/icons/dock.svg +1 -0
  61. package/icons/dollar.svg +1 -0
  62. package/icons/download.svg +1 -0
  63. package/icons/downloaded.svg +1 -0
  64. package/icons/drag.svg +1 -0
  65. package/icons/edit-table.svg +1 -0
  66. package/icons/edit.svg +1 -0
  67. package/icons/ends-with.svg +1 -0
  68. package/icons/equals.svg +1 -0
  69. package/icons/equation.svg +1 -0
  70. package/icons/error.svg +1 -0
  71. package/icons/excel.svg +1 -0
  72. package/icons/expand-all.svg +1 -0
  73. package/icons/expand.svg +1 -0
  74. package/icons/exponent.svg +1 -0
  75. package/icons/export-data.svg +1 -0
  76. package/icons/export.svg +1 -0
  77. package/icons/fast-backward.svg +1 -0
  78. package/icons/fast-forward.svg +1 -0
  79. package/icons/fdc3.svg +1 -0
  80. package/icons/filled-circle.svg +1 -0
  81. package/icons/filter-list.svg +1 -0
  82. package/icons/filter-off.svg +1 -0
  83. package/icons/filter.svg +1 -0
  84. package/icons/flag.svg +1 -0
  85. package/icons/folder-open.svg +1 -0
  86. package/icons/folder-shared.svg +1 -0
  87. package/icons/folder.svg +1 -0
  88. package/icons/function.svg +1 -0
  89. package/icons/gradient.svg +1 -0
  90. package/icons/greater-than-or-equal.svg +1 -0
  91. package/icons/greater-than.svg +1 -0
  92. package/icons/grid-filter.svg +1 -0
  93. package/icons/grid-info.svg +1 -0
  94. package/icons/grid.svg +1 -0
  95. package/icons/history.svg +1 -0
  96. package/icons/home.svg +1 -0
  97. package/icons/horizontal-lines.svg +1 -0
  98. package/icons/import-export.svg +1 -0
  99. package/icons/import.svg +1 -0
  100. package/icons/info.svg +1 -0
  101. package/icons/interactions.svg +1 -0
  102. package/icons/italic.svg +1 -0
  103. package/icons/json.svg +1 -0
  104. package/icons/laptop.svg +1 -0
  105. package/icons/less-than-or-equal.svg +1 -0
  106. package/icons/less-than.svg +1 -0
  107. package/icons/lightning.svg +1 -0
  108. package/icons/link.svg +1 -0
  109. package/icons/list.svg +1 -0
  110. package/icons/logout.svg +1 -0
  111. package/icons/mail.svg +1 -0
  112. package/icons/menu.svg +1 -0
  113. package/icons/minus.svg +1 -0
  114. package/icons/money.svg +1 -0
  115. package/icons/multiplication.svg +1 -0
  116. package/icons/newpage.svg +1 -0
  117. package/icons/news.svg +1 -0
  118. package/icons/not-contains.svg +1 -0
  119. package/icons/not-equal.svg +1 -0
  120. package/icons/note.svg +1 -0
  121. package/icons/open-in-new.svg +1 -0
  122. package/icons/order.svg +1 -0
  123. package/icons/organisation.svg +1 -0
  124. package/icons/overline.svg +1 -0
  125. package/icons/paperclip.svg +1 -0
  126. package/icons/pause.svg +1 -0
  127. package/icons/percent-tag.svg +1 -0
  128. package/icons/percent.svg +1 -0
  129. package/icons/person.svg +1 -0
  130. package/icons/pie-chart.svg +1 -0
  131. package/icons/play.svg +1 -0
  132. package/icons/plus.svg +1 -0
  133. package/icons/quote.svg +1 -0
  134. package/icons/refresh.svg +1 -0
  135. package/icons/regex.svg +1 -0
  136. package/icons/reminder.svg +1 -0
  137. package/icons/resume.svg +1 -0
  138. package/icons/rows.svg +1 -0
  139. package/icons/save.svg +1 -0
  140. package/icons/schedule.svg +1 -0
  141. package/icons/science.svg +1 -0
  142. package/icons/search-table.svg +1 -0
  143. package/icons/search.svg +1 -0
  144. package/icons/select-all.svg +1 -0
  145. package/icons/select-fwd.svg +1 -0
  146. package/icons/select-off.svg +1 -0
  147. package/icons/settings.svg +1 -0
  148. package/icons/sort-asc.svg +1 -0
  149. package/icons/sort-desc.svg +1 -0
  150. package/icons/spanner.svg +1 -0
  151. package/icons/spark-line.svg +1 -0
  152. package/icons/starts-with.svg +1 -0
  153. package/icons/statusbar.svg +1 -0
  154. package/icons/stop.svg +1 -0
  155. package/icons/strikethrough.svg +1 -0
  156. package/icons/styled-grid.svg +1 -0
  157. package/icons/sync.svg +1 -0
  158. package/icons/tab-unselected.svg +1 -0
  159. package/icons/target.svg +1 -0
  160. package/icons/theme.svg +1 -0
  161. package/icons/traffic-lights.svg +1 -0
  162. package/icons/triangle-down.svg +1 -0
  163. package/icons/triangle-up.svg +1 -0
  164. package/icons/unchecked.svg +1 -0
  165. package/icons/underline.svg +1 -0
  166. package/icons/undo.svg +1 -0
  167. package/icons/unfilled-circle.svg +1 -0
  168. package/icons/upload.svg +1 -0
  169. package/icons/visibility-off-bold.svg +1 -0
  170. package/icons/visibility-off.svg +1 -0
  171. package/icons/visibility-on-bold.svg +1 -0
  172. package/icons/visibility-on.svg +1 -0
  173. package/icons/warning.svg +1 -0
  174. package/index.css +32 -15
  175. package/index.css.map +1 -1
  176. package/package.json +2 -2
  177. package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -5
  178. package/src/AdaptableOptions/ColumnOptions.d.ts +38 -38
  179. package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -2
  180. package/src/AdaptableOptions/EditOptions.d.ts +4 -7
  181. package/src/AdaptableOptions/FilterOptions.d.ts +50 -15
  182. package/src/AdaptableOptions/LayoutOptions.d.ts +40 -22
  183. package/src/AdaptableOptions/PredicateOptions.d.ts +1 -1
  184. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  185. package/src/AdaptableState/Common/AdaptableColumn.d.ts +7 -0
  186. package/src/AdaptableState/Common/AdaptablePredicate.js +2 -2
  187. package/src/AdaptableState/Common/CustomWindowConfig.d.ts +2 -2
  188. package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
  189. package/src/AdaptableState/FormatColumnState.d.ts +8 -1
  190. package/src/AdaptableState/InternalState.d.ts +1 -1
  191. package/src/AdaptableState/LayoutState.d.ts +26 -6
  192. package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
  193. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  194. package/src/Api/AlertApi.d.ts +5 -11
  195. package/src/Api/ColumnApi.d.ts +17 -1
  196. package/src/Api/ColumnFilterApi.d.ts +32 -2
  197. package/src/Api/CustomSortApi.d.ts +5 -10
  198. package/src/Api/FlashingCellApi.d.ts +10 -6
  199. package/src/Api/FormatColumnApi.d.ts +8 -18
  200. package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
  201. package/src/Api/Implementation/AlertApiImpl.js +7 -6
  202. package/src/Api/Implementation/ApiBase.d.ts +2 -12
  203. package/src/Api/Implementation/ApiBase.js +5 -5
  204. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
  205. package/src/Api/Implementation/ColumnApiImpl.js +59 -23
  206. package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
  207. package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
  208. package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
  209. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
  210. package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
  211. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
  212. package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
  213. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
  214. package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
  215. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
  216. package/src/Api/Implementation/LayoutApiImpl.js +107 -13
  217. package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
  218. package/src/Api/Implementation/LayoutHelpers.js +25 -5
  219. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
  220. package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
  221. package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
  222. package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
  223. package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
  224. package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
  225. package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
  226. package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
  227. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
  228. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
  229. package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
  230. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  231. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  232. package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
  233. package/src/Api/Internal/AlertInternalApi.js +10 -10
  234. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
  235. package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
  236. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
  237. package/src/Api/Internal/ColumnInternalApi.js +4 -0
  238. package/src/Api/Internal/DashboardInternalApi.js +1 -1
  239. package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
  240. package/src/Api/Internal/EntitlementInternalApi.js +8 -0
  241. package/src/Api/Internal/ExportInternalApi.js +1 -1
  242. package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
  243. package/src/Api/Internal/FormatColumnInternalApi.d.ts +8 -11
  244. package/src/Api/Internal/FormatColumnInternalApi.js +13 -13
  245. package/src/Api/Internal/GridInternalApi.d.ts +7 -10
  246. package/src/Api/Internal/GridInternalApi.js +76 -27
  247. package/src/Api/Internal/LayoutInternalApi.d.ts +10 -5
  248. package/src/Api/Internal/LayoutInternalApi.js +85 -5
  249. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  250. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  251. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  252. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  253. package/src/Api/LayoutApi.d.ts +7 -2
  254. package/src/Api/PlusMinusApi.d.ts +11 -7
  255. package/src/Api/ScheduleApi.d.ts +9 -16
  256. package/src/Api/ShortcutApi.d.ts +5 -6
  257. package/src/Api/StyledColumnApi.d.ts +10 -7
  258. package/src/Api/UserInterfaceApi.d.ts +5 -6
  259. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  260. package/src/Redux/ActionsReducers/InternalRedux.js +10 -10
  261. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  262. package/src/Redux/ActionsReducers/StyledColumnRedux.js +15 -1
  263. package/src/Redux/Store/AdaptableStore.js +10 -10
  264. package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
  265. package/src/Strategy/AdaptableModuleBase.js +46 -9
  266. package/src/Strategy/AlertModule.d.ts +3 -4
  267. package/src/Strategy/AlertModule.js +7 -4
  268. package/src/Strategy/CalculatedColumnModule.js +2 -2
  269. package/src/Strategy/CellSummaryModule.js +2 -2
  270. package/src/Strategy/ChartingModule.d.ts +3 -1
  271. package/src/Strategy/ChartingModule.js +9 -3
  272. package/src/Strategy/ColumnFilterModule.d.ts +1 -1
  273. package/src/Strategy/ColumnFilterModule.js +31 -15
  274. package/src/Strategy/ColumnInfoModule.js +2 -2
  275. package/src/Strategy/CommentModule.d.ts +1 -1
  276. package/src/Strategy/CommentModule.js +3 -3
  277. package/src/Strategy/CustomSortModule.d.ts +3 -4
  278. package/src/Strategy/CustomSortModule.js +2 -2
  279. package/src/Strategy/DashboardModule.js +1 -1
  280. package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
  281. package/src/Strategy/DataChangeHistoryModule.js +3 -10
  282. package/src/Strategy/DataImportModule.js +3 -3
  283. package/src/Strategy/ExportModule.js +1 -1
  284. package/src/Strategy/Fdc3Module.js +1 -1
  285. package/src/Strategy/FlashingCellModule.d.ts +3 -5
  286. package/src/Strategy/FlashingCellModule.js +3 -3
  287. package/src/Strategy/FormatColumnModule.d.ts +3 -4
  288. package/src/Strategy/FormatColumnModule.js +2 -2
  289. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  290. package/src/Strategy/FreeTextColumnModule.js +2 -2
  291. package/src/Strategy/GridInfoModule.js +2 -2
  292. package/src/Strategy/Interface/IModule.d.ts +7 -3
  293. package/src/Strategy/LayoutModule.js +11 -11
  294. package/src/Strategy/NoteModule.d.ts +1 -1
  295. package/src/Strategy/NoteModule.js +3 -3
  296. package/src/Strategy/PlusMinusModule.d.ts +3 -4
  297. package/src/Strategy/PlusMinusModule.js +2 -2
  298. package/src/Strategy/QuickSearchModule.d.ts +2 -0
  299. package/src/Strategy/QuickSearchModule.js +9 -0
  300. package/src/Strategy/ScheduleModule.d.ts +3 -4
  301. package/src/Strategy/ScheduleModule.js +2 -2
  302. package/src/Strategy/SettingsPanelModule.js +1 -1
  303. package/src/Strategy/ShortcutModule.d.ts +3 -4
  304. package/src/Strategy/ShortcutModule.js +2 -2
  305. package/src/Strategy/StatusBarModule.d.ts +3 -2
  306. package/src/Strategy/StatusBarModule.js +6 -3
  307. package/src/Strategy/StyledColumnModule.d.ts +3 -4
  308. package/src/Strategy/StyledColumnModule.js +2 -2
  309. package/src/Strategy/SystemStatusModule.js +2 -2
  310. package/src/Strategy/TeamSharingModule.d.ts +1 -1
  311. package/src/Strategy/TeamSharingModule.js +5 -2
  312. package/src/Strategy/ToolPanelModule.d.ts +1 -1
  313. package/src/Strategy/ToolPanelModule.js +1 -4
  314. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
  315. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  316. package/src/Utilities/Constants/DocumentationLinkConstants.js +2 -1
  317. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  318. package/src/Utilities/Extensions/ArrayExtensions.js +68 -15
  319. package/src/Utilities/Helpers/AdaptableHelper.d.ts +1 -0
  320. package/src/Utilities/Helpers/AdaptableHelper.js +1 -0
  321. package/src/Utilities/ObjectFactory.d.ts +7 -3
  322. package/src/Utilities/ObjectFactory.js +28 -19
  323. package/src/Utilities/Services/AnnotationsService.js +1 -1
  324. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  325. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  326. package/src/Utilities/Services/ModuleService.js +18 -6
  327. package/src/View/AdaptableView.js +3 -1
  328. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  329. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  330. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  331. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  332. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  333. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  334. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  335. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  336. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  337. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  338. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  339. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  340. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  341. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  342. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  343. package/src/View/Components/ColumnFilter/utils.js +6 -1
  344. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  345. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  346. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +5 -5
  347. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  348. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  349. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  350. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  351. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  352. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  353. package/src/View/Dashboard/Dashboard.js +2 -2
  354. package/src/View/Dashboard/DashboardPopup.js +3 -1
  355. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  356. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  357. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +58 -21
  358. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -11
  359. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  360. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
  361. package/src/View/Layout/TransposedPopup.js +2 -2
  362. package/src/View/Layout/Wizard/LayoutWizard.js +5 -7
  363. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  364. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  365. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  366. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  367. package/src/View/Theme/ThemeSelector.js +1 -1
  368. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  369. package/src/agGrid/AdaptableAgGrid.js +251 -216
  370. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  371. package/src/agGrid/AdaptableFilterHandler.js +65 -0
  372. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  373. package/src/agGrid/AgGridAdapter.js +13 -46
  374. package/src/agGrid/AgGridColumnAdapter.d.ts +2 -2
  375. package/src/agGrid/AgGridColumnAdapter.js +81 -36
  376. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  377. package/src/agGrid/AgGridFilterAdapter.js +53 -0
  378. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  379. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +26 -37
  380. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  381. package/src/agGrid/AgGridModulesAdapter.js +70 -0
  382. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  383. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  384. package/src/components/Dialog/index.js +1 -1
  385. package/src/components/Dropdown/Arrows.js +2 -2
  386. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  387. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +4 -4
  388. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +1 -1
  389. package/src/components/FileDroppable/index.js +1 -1
  390. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  391. package/src/components/OverlayTrigger/index.js +1 -1
  392. package/src/components/Select/Select.d.ts +1 -1
  393. package/src/components/Select/Select.js +114 -22
  394. package/src/components/icons/DefaultIcon.d.ts +0 -1
  395. package/src/components/icons/DefaultIcon.js +0 -8
  396. package/src/env.js +2 -2
  397. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  398. package/src/layout-manager/src/index.d.ts +11 -3
  399. package/src/layout-manager/src/index.js +302 -87
  400. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  401. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  402. package/src/metamodel/adaptable.metamodel.d.ts +103 -40
  403. package/src/metamodel/adaptable.metamodel.js +1 -1
  404. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  405. package/src/migration/VersionUpgrade17.js +1 -1
  406. package/src/migration/VersionUpgrade20.js +1 -0
  407. package/src/migration/VersionUpgrade21.d.ts +6 -0
  408. package/src/migration/VersionUpgrade21.js +28 -0
  409. package/src/types.d.ts +7 -8
  410. package/tsconfig.cjs.tsbuildinfo +1 -1
  411. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  412. package/src/agGrid/FilterWrapper.d.ts +0 -2
  413. package/src/agGrid/FilterWrapper.js +0 -136
  414. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  415. package/src/agGrid/agGridModules.d.ts +0 -3
  416. package/src/agGrid/agGridModules.js +0 -18
  417. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  418. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -21
  419. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -16,6 +16,16 @@ exports.PIVOT_ANY_TOTAL_COL_TYPE = 'pivotAnyTotal';
16
16
  exports.PIVOT_GRAND_TOTAL_COL_TYPE = 'pivotGrandTotal';
17
17
  exports.PIVOT_COLUMN_TOTAL_COL_TYPE = 'pivotColumnTotal';
18
18
  exports.PIVOT_AGGREGATION_TOTAL_COL_TYPE = 'pivotAggregationTotal';
19
+ function mapColDefs(colDefs, mapFn) {
20
+ const iteration = (c) => {
21
+ if (c.children) {
22
+ return { ...c, children: mapColDefs(c.children, mapFn) };
23
+ }
24
+ const colDef = c;
25
+ return mapFn(colDef);
26
+ };
27
+ return colDefs.map(iteration);
28
+ }
19
29
  function flattenColDefs(colDefs) {
20
30
  const res = [];
21
31
  const iteration = (c) => {
@@ -29,6 +39,25 @@ function flattenColDefs(colDefs) {
29
39
  colDefs.forEach(iteration);
30
40
  return res;
31
41
  }
42
+ function findInColDefs(colDefs, callback) {
43
+ function iteration(colDefs) {
44
+ for (const c of colDefs) {
45
+ if (c.children) {
46
+ const res = iteration(c.children);
47
+ if (res) {
48
+ return res;
49
+ }
50
+ }
51
+ else {
52
+ const colDef = c;
53
+ if (callback(colDef)) {
54
+ return colDef;
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return iteration(colDefs);
60
+ }
32
61
  const DEFAULT_COLUMN_WIDTH = 200;
33
62
  const DEFAULT_AGG_FUNC = 'sum';
34
63
  /**
@@ -70,6 +99,47 @@ function isGridLayoutSame(options) {
70
99
  }
71
100
  return (0, isLayoutEqual_1.isLayoutEqual)(gridLayout, layout);
72
101
  }
102
+ function getDefaultColumnSizeStateForColDef(colId, colDef, options) {
103
+ if (!colDef) {
104
+ colDef = findInColDefs(options?.columnDefs || [], (colDef) => colDef.colId ? colDef.colId === colId : colDef.field === colId);
105
+ if (!colDef) {
106
+ return undefined;
107
+ }
108
+ }
109
+ let propsFromColType = {
110
+ ...options?.defaultColDef,
111
+ };
112
+ if (options?.colTypes) {
113
+ // for col sizing, we want the columns sized as flex via col.type and defaultColDef
114
+ // to be sized as flex, even if they are not in the layout.ColumnSizing object
115
+ let colType = colDef?.type;
116
+ if (colType && !Array.isArray(colType)) {
117
+ colType = colType.split(',');
118
+ }
119
+ if (Array.isArray(colType) && colType.length) {
120
+ propsFromColType = colType.reduce((acc, type) => {
121
+ const props = options.colTypes[type];
122
+ if (props) {
123
+ return { ...acc, ...props };
124
+ }
125
+ return acc;
126
+ }, {});
127
+ }
128
+ }
129
+ if (propsFromColType.flex) {
130
+ return {
131
+ colId,
132
+ flex: propsFromColType.flex,
133
+ };
134
+ }
135
+ if (propsFromColType.width) {
136
+ return {
137
+ colId,
138
+ width: propsFromColType.width,
139
+ };
140
+ }
141
+ return undefined;
142
+ }
73
143
  class LayoutManager extends LMEmitter_1.LMEmitter {
74
144
  constructor(options) {
75
145
  super({ debugId: options.debugId });
@@ -114,6 +184,9 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
114
184
  }
115
185
  };
116
186
  this.columnDefsChanged = (colDefs) => {
187
+ if (this.suppressGlobalAgGridEventListener) {
188
+ return;
189
+ }
117
190
  this.warn('onColumnDefsChanged');
118
191
  this.indexColumns();
119
192
  if (this.currentLayout) {
@@ -197,7 +270,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
197
270
  // this.initialColumnWidths[colId] = colDef.width ?? colDef.initialWidth ?? DEFAULT_COLUMN_WIDTH; // this.gridApi.getColumn(colId).getActualWidth();
198
271
  // this.initialColumnWidths[colId] = col.getActualWidth();
199
272
  this.initialColumnWidths[colId] = this.getDefaultColumnWidthForCol(colId, colDef);
200
- const rowGroupColumns = this.gridApi.getRowGroupColumns();
273
+ const rowGroupColumns = this.gridApi.getRowGroupColumns() ?? [];
201
274
  rowGroupColumns.forEach((column) => {
202
275
  const colId = column.getColId();
203
276
  // const col = this.gridApi.getColumn(colId);
@@ -256,7 +329,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
256
329
  this.gridApi = options.gridApi;
257
330
  }
258
331
  getLayoutModelFromGrid() {
259
- return this.gridApi.isPivotMode()
332
+ return this.isInPivotMode()
260
333
  ? this.getPivotLayoutModelFromGrid()
261
334
  : this.getTableLayoutModelFromGrid();
262
335
  }
@@ -269,13 +342,15 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
269
342
  .filter((col) => !pivotResultColumnsSet.has(col.colId));
270
343
  let PivotColumns = this.gridApi.getPivotColumns().map((col) => col.getColId());
271
344
  const layout = this.getUndecidedLayoutModelFromGrid(columnState);
272
- let ColumnWidths = layout.ColumnWidths || {};
345
+ let ColumnSizing = layout.ColumnSizing || {};
273
346
  //let's also include the column widths of the pivotResult columns
274
347
  pivotResultColumns.forEach((col) => {
275
- ColumnWidths[col.getColId()] = col.getActualWidth();
348
+ ColumnSizing[col.getColId()] = {
349
+ Width: col.getActualWidth(),
350
+ };
276
351
  });
277
- if (!Object.keys(ColumnWidths).length) {
278
- ColumnWidths = undefined;
352
+ if (!Object.keys(ColumnSizing).length) {
353
+ ColumnSizing = undefined;
279
354
  }
280
355
  delete layout.TableColumns;
281
356
  const pivotLayout = {
@@ -293,7 +368,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
293
368
  PivotColumns,
294
369
  ColumnPinning: layout.ColumnPinning,
295
370
  ColumnSorts: layout.ColumnSorts,
296
- ColumnWidths,
371
+ ColumnSizing,
297
372
  ColumnVisibility: layout.ColumnVisibility,
298
373
  RowGroupValues: layout.RowGroupValues,
299
374
  ColumnGroupValues: layout.ColumnGroupValues,
@@ -324,7 +399,6 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
324
399
  getUndecidedLayoutModelFromGrid(columnState) {
325
400
  let TableColumns = columnState.map((c) => c.colId);
326
401
  // .filter((colId) => colId !== 'ag-Grid-SelectionColumn');
327
- let ColumnWidths = {};
328
402
  let ColumnSorts = [];
329
403
  let RowGroupedColumns = [];
330
404
  let RowGroupValues = undefined;
@@ -334,6 +408,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
334
408
  const gridState = this.gridApi.getState();
335
409
  const prevLayout = this.currentLayout;
336
410
  const prevAggColumns = prevLayout?.TableAggregationColumns ?? prevLayout?.PivotAggregationColumns;
411
+ let ColumnSizing = { ...prevLayout?.ColumnSizing };
337
412
  const prevAggColumnsMap = prevAggColumns?.reduce((acc, agg) => {
338
413
  acc[agg.ColumnId] = agg;
339
414
  return acc;
@@ -356,10 +431,19 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
356
431
  this.initialColumnWidths[colId.replace(normalizeLayoutModel_1.AUTO_GROUP_COLUMN_ID__MULTI_PREFIX, '')];
357
432
  }
358
433
  }
359
- // and only add the col width to the layout ColumnWidths
434
+ if (colState.flex != undefined) {
435
+ const colSizing = { ...ColumnSizing[colId] };
436
+ delete colSizing.Width;
437
+ colSizing.Flex = colState.flex;
438
+ ColumnSizing[colId] = colSizing;
439
+ }
440
+ // and only add the col width to the layout ColumnSizing
360
441
  // if it's different from the initial default column width
361
- if (colState.width && initialWidth != colState.width) {
362
- ColumnWidths[colId] = colState.width;
442
+ else if (colState.width && initialWidth != colState.width) {
443
+ const colSizing = { ...ColumnSizing[colId] };
444
+ delete colSizing.Flex;
445
+ colSizing.Width = colState.width;
446
+ ColumnSizing[colId] = colSizing;
363
447
  }
364
448
  if (colState.hide) {
365
449
  acc[colId] = false;
@@ -441,9 +525,9 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
441
525
  return col.isVisible();
442
526
  });
443
527
  const columnOrderSet = new Set(TableColumns);
444
- Object.keys(ColumnWidths).forEach((colId) => {
528
+ Object.keys(ColumnSizing).forEach((colId) => {
445
529
  if (!columnOrderSet.has(colId)) {
446
- delete ColumnWidths[colId];
530
+ delete ColumnSizing[colId];
447
531
  }
448
532
  });
449
533
  Object.keys(ColumnVisibility).forEach((colId) => {
@@ -611,7 +695,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
611
695
  Ignore_Uuid: this.currentLayout?.Ignore_Uuid,
612
696
  TableColumns: TableColumns,
613
697
  ColumnVisibility,
614
- ColumnWidths: ColumnWidths,
698
+ ColumnSizing,
615
699
  ColumnSorts,
616
700
  RowGroupedColumns,
617
701
  TableAggregationColumns,
@@ -623,6 +707,54 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
623
707
  });
624
708
  return layout;
625
709
  }
710
+ static getColumnDefsChangesForLayout(layout, colDefs) {
711
+ const columnSizing = layout.ColumnSizing || {};
712
+ const flatColDefs = flattenColDefs(colDefs);
713
+ const changedColDefs = new Map();
714
+ flatColDefs.forEach((colDef) => {
715
+ const colId = colDef.colId ?? colDef.field;
716
+ const colSizing = columnSizing[colId] || {};
717
+ if (colDef) {
718
+ let changed = false;
719
+ if (colSizing.MinWidth != undefined && colSizing.MinWidth != colDef.minWidth) {
720
+ colDef = { ...colDef, minWidth: colSizing.MinWidth };
721
+ changed = true;
722
+ }
723
+ if (colSizing.MaxWidth != undefined && colSizing.MaxWidth != colDef.maxWidth) {
724
+ colDef = { ...colDef, maxWidth: colSizing.MaxWidth };
725
+ changed = true;
726
+ }
727
+ // this (width and flex) shouldn't be needed theoretically, as applyColumnState will apply sizing
728
+ // using the newly computed column state
729
+ // but for whatever reason, this is needed here, for some edge cases
730
+ // eg: when a layout has a column width a width and minWidth
731
+ // and then we create a new layout with a different width and different min width
732
+ // then if we don't have this code, the new layout might wrongly apply the previous
733
+ // minWidth as the current column width
734
+ // see #edge-case-min-width-width-mismatch
735
+ if (colSizing.Width !== undefined && colSizing.Width !== colDef.width) {
736
+ colDef = { ...colDef, width: colSizing.Width };
737
+ }
738
+ if (colSizing.Flex !== undefined && colSizing.Flex !== colDef.flex) {
739
+ colDef = { ...colDef, flex: colSizing.Flex };
740
+ changed = true;
741
+ }
742
+ if (changed) {
743
+ changedColDefs.set(colId, colDef);
744
+ }
745
+ }
746
+ });
747
+ if (changedColDefs.size) {
748
+ return mapColDefs(colDefs, (colDef) => {
749
+ const changedColDef = changedColDefs.get(colDef.colId);
750
+ if (changedColDef) {
751
+ return changedColDef;
752
+ }
753
+ return colDef;
754
+ });
755
+ }
756
+ return null;
757
+ }
626
758
  static getAGGridInitialStateForLayout(layout, colDefs, options) {
627
759
  if ((0, isPivotLayoutModel_1.isPivotLayoutModel)(layout)) {
628
760
  return LayoutManager.getAGGridInitialStateForPivotLayout(layout, colDefs);
@@ -637,14 +769,15 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
637
769
  }
638
770
  // just in case the enduser provided falsy colIds, it will crash AG Grid internals
639
771
  layout.TableColumns = layout.TableColumns.filter((colId) => colId != undefined);
640
- layout = (0, normalizeLayoutModel_1.normalizeTableLayoutModel)(layout, _options);
772
+ layout = (0, normalizeLayoutModel_1.normalizeTableLayoutModel)(layout, { isTree: _options?.isTree ?? false });
641
773
  const agGridState = {};
642
774
  const columnIds = getColumnOrderIdsForAllColDefs(layout.TableColumns, colDefs);
643
775
  agGridState.columnOrder = {
644
776
  orderedColIds: columnIds,
645
777
  };
646
778
  const flatColDefs = flattenColDefs(colDefs);
647
- const getColDef = (colId) => flatColDefs.find((colDef) => colDef.colId === colId);
779
+ const colDefsById = new Map(flatColDefs.map((colDef) => [colDef.colId ?? colDef.field, colDef]));
780
+ const getColDef = (colId) => colDefsById.get(colId);
648
781
  agGridState.columnVisibility = {
649
782
  hiddenColIds: flatColDefs
650
783
  .filter((colDef) => {
@@ -656,15 +789,42 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
656
789
  })
657
790
  .map((colDef) => colDef.colId ?? colDef.field),
658
791
  };
659
- if (layout.ColumnWidths) {
660
- agGridState.columnSizing = {
661
- columnSizingModel: Object.keys(layout.ColumnWidths).map((colId) => {
662
- const width = layout.ColumnWidths[colId];
792
+ if (layout.ColumnSizing) {
793
+ const colsInColumnSizingModel = new Set();
794
+ const columnSizingModel = Object.keys(layout.ColumnSizing)
795
+ .map((colId) => {
796
+ const colSizing = layout.ColumnSizing[colId];
797
+ if (colSizing.Flex != undefined) {
798
+ colsInColumnSizingModel.add(colId);
663
799
  return {
664
800
  colId,
665
- width,
801
+ flex: colSizing.Flex,
666
802
  };
667
- }),
803
+ }
804
+ if (colSizing.Width != undefined) {
805
+ colsInColumnSizingModel.add(colId);
806
+ return {
807
+ colId,
808
+ width: colSizing.Width ?? DEFAULT_COLUMN_WIDTH,
809
+ };
810
+ }
811
+ })
812
+ .filter(Boolean);
813
+ const options = {
814
+ ..._options,
815
+ columnDefs: colDefs,
816
+ };
817
+ columnIds.forEach((colId) => {
818
+ if (!colsInColumnSizingModel.has(colId)) {
819
+ const colDef = getColDef(colId);
820
+ const colSizeState = getDefaultColumnSizeStateForColDef(colId, colDef, options);
821
+ if (colSizeState) {
822
+ columnSizingModel.push(colSizeState);
823
+ }
824
+ }
825
+ });
826
+ agGridState.columnSizing = {
827
+ columnSizingModel,
668
828
  };
669
829
  }
670
830
  if (layout.ColumnSorts) {
@@ -727,7 +887,8 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
727
887
  // orderedColIds: columnIds,
728
888
  // };
729
889
  const flatColDefs = flattenColDefs(colDefs);
730
- const getColDef = (colId) => flatColDefs.find((colDef) => colDef.colId === colId);
890
+ const colDefsById = new Map(flatColDefs.map((colDef) => [colDef.colId ?? colDef.field, colDef]));
891
+ const getColDef = (colId) => colDefsById.get(colId);
731
892
  // agGridState.columnVisibility = {
732
893
  // hiddenColIds: flatColDefs
733
894
  // .filter((colDef) => {
@@ -745,15 +906,24 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
745
906
  pivotMode: true,
746
907
  pivotColIds: layout.PivotColumns,
747
908
  };
748
- if (layout.ColumnWidths) {
749
- agGridState.columnSizing = {
750
- columnSizingModel: Object.keys(layout.ColumnWidths).map((colId) => {
751
- const width = layout.ColumnWidths[colId];
909
+ if (layout.ColumnSizing) {
910
+ const columnSizingModel = Object.keys(layout.ColumnSizing)
911
+ .map((colId) => {
912
+ const colSizing = layout.ColumnSizing[colId];
913
+ if (colSizing.Flex != undefined) {
752
914
  return {
753
915
  colId,
754
- width,
916
+ flex: colSizing.Flex,
755
917
  };
756
- }),
918
+ }
919
+ return {
920
+ colId,
921
+ width: colSizing.Width ?? DEFAULT_COLUMN_WIDTH,
922
+ };
923
+ })
924
+ .filter(Boolean);
925
+ agGridState.columnSizing = {
926
+ columnSizingModel,
757
927
  };
758
928
  }
759
929
  if (layout.ColumnSorts) {
@@ -864,7 +1034,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
864
1034
  // but we still want to avoid this unnecessary initial loop
865
1035
  // which may cause more adaptable work
866
1036
  const resume = this.suspendAgGridListener();
867
- const pivotMode = this.gridApi.isPivotMode();
1037
+ const pivotMode = this.isInPivotMode();
868
1038
  if (!!layout.SuppressAggFuncInHeader !== !!this.gridApi.getGridOption('suppressAggFuncInHeader')) {
869
1039
  this.gridApi.setGridOption('suppressAggFuncInHeader', !!layout.SuppressAggFuncInHeader);
870
1040
  }
@@ -890,6 +1060,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
890
1060
  else {
891
1061
  this.gridApi.setGridOption('grandTotalRow', null);
892
1062
  }
1063
+ this.applyColumnDefsChanges(layout);
893
1064
  if ((0, isPivotLayoutModel_1.isPivotLayoutModel)(layout)) {
894
1065
  try {
895
1066
  const perfApplyPivot = this.beginPerf('applyLayout:pivot');
@@ -914,6 +1085,17 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
914
1085
  resume();
915
1086
  }
916
1087
  }
1088
+ applyColumnDefsChanges(layout) {
1089
+ return this.applyColumnSizingColumnDefsChanges(layout);
1090
+ }
1091
+ applyColumnSizingColumnDefsChanges(layout) {
1092
+ const newColDefs = LayoutManager.getColumnDefsChangesForLayout(layout, this.gridApi.getColumnDefs());
1093
+ if (newColDefs) {
1094
+ this.gridApi.setGridOption('columnDefs', newColDefs);
1095
+ return true;
1096
+ }
1097
+ return false;
1098
+ }
917
1099
  applyTableLayout(layout, options) {
918
1100
  this.withSuppressColumnAnimation(() => {
919
1101
  // if we apply the state here, before calling setGridOption for groupDisplayType
@@ -1037,7 +1219,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1037
1219
  rowGroup: rowGroupIndex != null,
1038
1220
  };
1039
1221
  });
1040
- this.computeColumnWidths(layout, columnState);
1222
+ this.computeColumnSizing(layout, columnState);
1041
1223
  this.computeColumnSorts(layout, columnState);
1042
1224
  this.computePinnedColumns(layout, columnState);
1043
1225
  this.computePivotAggregations(layout, columnState);
@@ -1062,7 +1244,7 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1062
1244
  computeColumnStateForTableLayout(layout) {
1063
1245
  const columnState = {};
1064
1246
  this.computeColumnOrderAndVisibility(layout, columnState);
1065
- this.computeColumnWidths(layout, columnState);
1247
+ this.computeColumnSizing(layout, columnState);
1066
1248
  this.computeColumnSorts(layout, columnState);
1067
1249
  this.computeRowGrouping(layout, columnState);
1068
1250
  this.computeAggregations(layout, columnState);
@@ -1177,20 +1359,38 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1177
1359
  colDef = colDef ?? this.gridApi.getColumnDef(colId);
1178
1360
  return colDef?.width ?? DEFAULT_COLUMN_WIDTH;
1179
1361
  }
1180
- computeColumnWidths(layout, columnState) {
1181
- const widthMap = layout.ColumnWidths;
1182
- if (!widthMap || !Object.keys(widthMap).length) {
1183
- columnState.state.forEach((colState) => {
1184
- colState.width = this.getDefaultColumnWidthForCol(colState.colId);
1185
- });
1186
- return;
1187
- }
1362
+ computeColumnSizing(layout, columnState) {
1363
+ const ColumnSizing = layout.ColumnSizing || {};
1364
+ const colDefs = this.gridApi.getColumnDefs();
1365
+ const options = {
1366
+ columnDefs: colDefs,
1367
+ colTypes: this.gridApi.getGridOption('columnTypes'),
1368
+ defaultColDef: this.gridApi.getGridOption('defaultColDef'),
1369
+ };
1188
1370
  columnState.state.forEach((colState) => {
1189
- if (widthMap[colState.colId]) {
1190
- colState.width = widthMap[colState.colId];
1371
+ const colSizing = ColumnSizing[colState.colId];
1372
+ if (colSizing) {
1373
+ if (colSizing.Width != undefined) {
1374
+ colState.width = colSizing.Width;
1375
+ }
1376
+ else if (colSizing.Flex != undefined) {
1377
+ colState.flex = colSizing.Flex;
1378
+ }
1191
1379
  }
1192
1380
  else {
1193
- colState.width = this.getDefaultColumnWidthForCol(colState.colId);
1381
+ let defaultColState;
1382
+ if (!colState.flex) {
1383
+ defaultColState = getDefaultColumnSizeStateForColDef(colState.colId, undefined, options);
1384
+ if (defaultColState?.flex) {
1385
+ colState.flex = defaultColState.flex;
1386
+ }
1387
+ }
1388
+ if (!colState.flex) {
1389
+ colState.width =
1390
+ colState.width ??
1391
+ defaultColState?.width ??
1392
+ this.getDefaultColumnWidthForCol(colState.colId);
1393
+ }
1194
1394
  }
1195
1395
  });
1196
1396
  }
@@ -1221,9 +1421,9 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1221
1421
  // dont auto size hidden columns
1222
1422
  tableColumns = tableColumns.filter((colId) => !currentLayout.ColumnVisibility[colId]);
1223
1423
  }
1224
- if (currentLayout.ColumnWidths) {
1225
- // dont auto size columns with a set width
1226
- tableColumns = tableColumns.filter((colId) => !currentLayout.ColumnWidths[colId]);
1424
+ if (currentLayout.ColumnSizing) {
1425
+ // dont auto size columns with a set sizing
1426
+ tableColumns = tableColumns.filter((colId) => !currentLayout.ColumnSizing[colId]);
1227
1427
  }
1228
1428
  }
1229
1429
  columnIds = columnIds ?? tableColumns;
@@ -1234,50 +1434,62 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1234
1434
  return columnIds;
1235
1435
  }
1236
1436
  applyPivotLayout(layout, options) {
1237
- this.applyPivotTotals(layout);
1238
- const columnState = this.computeColumnStateForPivotLayout(layout);
1239
- // by simply calling this.gridApi.applyColumnState(columnState)
1240
- // the order of aggregations is not preserved/guaranteed by ag-grid
1241
- // so we want to apply multiple states - adding aggregations one by one
1242
- // first: no aggregation
1243
- // second: [agg[0]]
1244
- // third: [agg[0], agg[1]]
1245
- // fourth: ...etc
1246
- // so we apply the states for all aggregations except the last one
1247
- //
1248
- const aggregationsMapForOrder = (layout.PivotAggregationColumns || []).map((_, index) => layout.PivotAggregationColumns.slice(0, index));
1249
- aggregationsMapForOrder.forEach((agg) => {
1250
- // we're mutating the columnState here
1251
- this.computePivotAggregations({ ...layout, PivotAggregationColumns: agg }, columnState);
1252
- // and apply the state
1253
- this.gridApi.applyColumnState(columnState);
1254
- });
1255
- // now recompute and apply the last one
1256
- this.computePivotAggregations(layout, columnState);
1257
- this.gridApi.applyColumnState(columnState);
1258
- // let's also include the column widths of the pivotResult columns
1259
- // we can't simply include those in the columnState because the columnState will also apply order
1260
- // but we don't want to affect the order of the pivotResult columns
1261
- // so we'll do it manually, and apply the widths after the columnState
1262
- // by using the gridApi.setColumnWidths method
1263
- if (layout.ColumnWidths) {
1264
- const colWidthForPivotResultColumns = [];
1265
- (this.gridApi.getPivotResultColumns() || []).forEach((col) => {
1266
- const colId = col.getColId();
1267
- if (layout.ColumnWidths[colId]) {
1268
- colWidthForPivotResultColumns.push({ key: colId, newWidth: layout.ColumnWidths[colId] });
1437
+ this.withSuppressColumnAnimation(() => {
1438
+ this.applyPivotTotals(layout);
1439
+ const hasGroupedColumns = layout.PivotGroupedColumns && !!layout.PivotGroupedColumns.length;
1440
+ if (hasGroupedColumns) {
1441
+ const displayTypeFromLayout = layout.RowGroupDisplayType === 'multi' ? 'multipleColumns' : 'singleColumn';
1442
+ const groupDisplayType = this.gridApi.getGridOption('groupDisplayType');
1443
+ if (groupDisplayType !== displayTypeFromLayout) {
1444
+ this.gridApi.setGridOption('groupDisplayType', displayTypeFromLayout);
1269
1445
  }
1446
+ }
1447
+ const columnState = this.computeColumnStateForPivotLayout(layout);
1448
+ // by simply calling this.gridApi.applyColumnState(columnState)
1449
+ // the order of aggregations is not preserved/guaranteed by ag-grid
1450
+ // so we want to apply multiple states - adding aggregations one by one
1451
+ // first: no aggregation
1452
+ // second: [agg[0]]
1453
+ // third: [agg[0], agg[1]]
1454
+ // fourth: ...etc
1455
+ // so we apply the states for all aggregations except the last one
1456
+ //
1457
+ const aggregationsMapForOrder = (layout.PivotAggregationColumns || []).map((_, index) => layout.PivotAggregationColumns.slice(0, index));
1458
+ aggregationsMapForOrder.forEach((agg) => {
1459
+ // we're mutating the columnState here
1460
+ this.computePivotAggregations({ ...layout, PivotAggregationColumns: agg }, columnState);
1461
+ // and apply the state
1462
+ this.gridApi.applyColumnState(columnState);
1270
1463
  });
1271
- if (colWidthForPivotResultColumns.length) {
1272
- this.gridApi.setColumnWidths(colWidthForPivotResultColumns);
1464
+ // now recompute and apply the last one
1465
+ this.computePivotAggregations(layout, columnState);
1466
+ this.gridApi.applyColumnState(columnState);
1467
+ // let's also include the column widths of the pivotResult columns
1468
+ // we can't simply include those in the columnState because the columnState will also apply order
1469
+ // but we don't want to affect the order of the pivotResult columns
1470
+ // so we'll do it manually, and apply the widths after the columnState
1471
+ // by using the gridApi.setColumnWidths method
1472
+ if (layout.ColumnSizing) {
1473
+ const colWidthForPivotResultColumns = [];
1474
+ (this.gridApi.getPivotResultColumns() || []).forEach((col) => {
1475
+ const colId = col.getColId();
1476
+ if (layout.ColumnSizing[colId]?.Width != undefined) {
1477
+ colWidthForPivotResultColumns.push({
1478
+ key: colId,
1479
+ newWidth: layout.ColumnSizing[colId].Width ?? DEFAULT_COLUMN_WIDTH,
1480
+ });
1481
+ }
1482
+ });
1483
+ if (colWidthForPivotResultColumns.length) {
1484
+ this.gridApi.setColumnWidths(colWidthForPivotResultColumns);
1485
+ }
1273
1486
  }
1274
- }
1275
- this.applyColumnGroupCollapseExpandState(layout);
1276
- const hasGroupedColumns = layout.PivotGroupedColumns && layout.PivotGroupedColumns.length;
1277
- // but also let's not forget to apply the row group values
1278
- if (hasGroupedColumns && layout.RowGroupValues && !options?.skipApplyRowGroupsExpandedState) {
1279
- this.applyRowGroupValues(layout.RowGroupValues, layout.PivotGroupedColumns);
1280
- }
1487
+ this.applyColumnGroupCollapseExpandState(layout);
1488
+ // but also let's not forget to apply the row group values
1489
+ if (hasGroupedColumns && layout.RowGroupValues && !options?.skipApplyRowGroupsExpandedState) {
1490
+ this.applyRowGroupValues(layout.RowGroupValues, layout.PivotGroupedColumns);
1491
+ }
1492
+ });
1281
1493
  }
1282
1494
  applyPivotTotals(layout) {
1283
1495
  /**
@@ -1497,5 +1709,8 @@ class LayoutManager extends LMEmitter_1.LMEmitter {
1497
1709
  };
1498
1710
  }
1499
1711
  }
1712
+ isInPivotMode() {
1713
+ return this.gridApi.isModuleRegistered('PivotModule') && this.gridApi.isPivotMode();
1714
+ }
1500
1715
  }
1501
1716
  exports.LayoutManager = LayoutManager;
@@ -21,8 +21,8 @@ function normalizeTableLayoutModel(layout, options) {
21
21
  if (!layout.ColumnPinning) {
22
22
  layout.ColumnPinning = {};
23
23
  }
24
- if (!layout.ColumnWidths) {
25
- layout.ColumnWidths = {};
24
+ if (!layout.ColumnSizing) {
25
+ layout.ColumnSizing = {};
26
26
  }
27
27
  if (!layout.RowGroupedColumns) {
28
28
  layout.RowGroupedColumns = [];
@@ -128,8 +128,8 @@ function normalizePivotLayoutModel(layout) {
128
128
  if (!layout.ColumnPinning) {
129
129
  layout.ColumnPinning = {};
130
130
  }
131
- if (!layout.ColumnWidths) {
132
- layout.ColumnWidths = {};
131
+ if (!layout.ColumnSizing) {
132
+ layout.ColumnSizing = {};
133
133
  }
134
134
  if (!layout.PivotGroupedColumns) {
135
135
  layout.PivotGroupedColumns = [];
@@ -161,6 +161,9 @@ function normalizePivotLayoutModel(layout) {
161
161
  // make it an own property
162
162
  layout.PivotColumnTotal = undefined;
163
163
  }
164
+ if (layout.PivotGroupedColumns && layout.PivotGroupedColumns.length) {
165
+ layout.RowGroupDisplayType = layout.RowGroupDisplayType || 'single';
166
+ }
164
167
  return layout;
165
168
  }
166
169
  exports.normalizePivotLayoutModel = normalizePivotLayoutModel;
@@ -8,8 +8,8 @@ function simplifyTableLayoutModel(layout) {
8
8
  if (layout.ColumnVisibility && !Object.keys(layout.ColumnVisibility).length) {
9
9
  delete layout.ColumnVisibility;
10
10
  }
11
- if (layout.ColumnWidths && !Object.keys(layout.ColumnWidths).length) {
12
- delete layout.ColumnWidths;
11
+ if (layout.ColumnSizing && !Object.keys(layout.ColumnSizing).length) {
12
+ delete layout.ColumnSizing;
13
13
  }
14
14
  if (layout.ColumnSorts && !layout.ColumnSorts.length) {
15
15
  delete layout.ColumnSorts;
@@ -73,8 +73,8 @@ function simplifyTableLayoutModel(layout) {
73
73
  exports.simplifyTableLayoutModel = simplifyTableLayoutModel;
74
74
  function simplifyPivotLayoutModel(layout) {
75
75
  layout = structuredClone(layout);
76
- if (layout.ColumnWidths && !Object.keys(layout.ColumnWidths).length) {
77
- delete layout.ColumnWidths;
76
+ if (layout.ColumnSizing && !Object.keys(layout.ColumnSizing).length) {
77
+ delete layout.ColumnSizing;
78
78
  }
79
79
  if (!layout.SuppressAggFuncInHeader) {
80
80
  delete layout.SuppressAggFuncInHeader;