@adaptabletools/adaptable-cjs 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 +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 +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 +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 +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 +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/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 +18 -6
  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 +5 -5
  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 +2 -2
  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 +65 -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 +53 -0
  374. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  375. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +26 -37
  376. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  377. package/src/agGrid/AgGridModulesAdapter.js +70 -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 +4 -4
  384. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +1 -1
  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 +114 -22
  390. package/src/components/icons/DefaultIcon.d.ts +0 -1
  391. package/src/components/icons/DefaultIcon.js +0 -8
  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 +28 -0
  405. package/src/types.d.ts +7 -8
  406. package/tsconfig.cjs.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 -136
  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 -18
  413. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  414. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -21
  415. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -10,7 +10,7 @@ class SystemStatusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
10
10
  super(ModuleConstants.SystemStatusModuleId, ModuleConstants.SystemStatusFriendlyName, 'traffic-lights', 'SystemStatusPopup', 'Provide messages about the Status of your application', api);
11
11
  }
12
12
  createColumnMenuItems(column) {
13
- if (this.isModuleAvailable()) {
13
+ if (this.isModuleVisible()) {
14
14
  return [
15
15
  this.createMenuItemShowPopup('system-status-show', 'Show System Status', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
16
16
  source: 'ColumnMenu',
@@ -19,7 +19,7 @@ class SystemStatusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
19
19
  }
20
20
  }
21
21
  createContextMenuItems(menuContext) {
22
- if (this.isModuleAvailable()) {
22
+ if (this.isModuleVisible()) {
23
23
  let popUpParams = {
24
24
  source: 'ContextMenu',
25
25
  };
@@ -6,7 +6,7 @@ export declare class TeamSharingModule extends AdaptableModuleBase implements IM
6
6
  private SKIP_TEAMSHARING_UPDATE_ACTIONS;
7
7
  constructor(api: AdaptableApi);
8
8
  onAdaptableReady(): void;
9
- isModuleAvailable(): boolean;
9
+ isModuleEnabled(): boolean;
10
10
  isModuleObjectsShareable(): boolean;
11
11
  getPopupMaxWidth(): number | undefined;
12
12
  private handleStateChanged;
@@ -36,8 +36,11 @@ class TeamSharingModule extends AdaptableModuleBase_1.AdaptableModuleBase {
36
36
  }
37
37
  this.api.eventApi.on('AdaptableStateChanged', (adaptableStateChangedInfo) => this.handleStateChanged(adaptableStateChangedInfo));
38
38
  }
39
- isModuleAvailable() {
40
- return super.isModuleAvailable() && this.api.teamSharingApi.isTeamSharingAvailable();
39
+ isModuleEnabled() {
40
+ const teamSharingOptions = this.api.optionsApi.getTeamSharingOptions();
41
+ return (teamSharingOptions?.enableTeamSharing &&
42
+ typeof teamSharingOptions?.loadSharedEntities === 'function' &&
43
+ typeof teamSharingOptions?.persistSharedEntities === 'function');
41
44
  }
42
45
  isModuleObjectsShareable() {
43
46
  return false;
@@ -3,5 +3,5 @@ import { IModule } from './Interface/IModule';
3
3
  import { AdaptableApi } from '../Api/AdaptableApi';
4
4
  export declare class ToolPanelModule extends AdaptableModuleBase implements IModule {
5
5
  constructor(api: AdaptableApi);
6
- isModuleAvailable(): boolean;
6
+ isModuleEnabled(): boolean;
7
7
  }
@@ -8,10 +8,7 @@ class ToolPanelModule extends AdaptableModuleBase_1.AdaptableModuleBase {
8
8
  constructor(api) {
9
9
  super(ModuleConstants.ToolPanelModuleId, ModuleConstants.ToolPanelFriendlyName, 'clipboard', 'ToolPanelPopup', 'An alternative to using the Dashboard is the AdapTable Tool Panel, the Tool Panel is the collapsible area to the right of the Grid.', api);
10
10
  }
11
- isModuleAvailable() {
12
- if (!super.isModuleAvailable()) {
13
- return false;
14
- }
11
+ isModuleEnabled() {
15
12
  return this.api.internalApi.getAdaptableInstance().hasAdaptableToolPanel;
16
13
  }
17
14
  }
@@ -10,7 +10,7 @@ const getFilterPreview = (columnFilter, api) => {
10
10
  const columnType = api.columnApi.getColumnDataTypeForColumnId(columnFilter.ColumnId);
11
11
  const qlDataType = (0, adaptableQlUtils_1.mapColumnDataTypeToExpressionFunctionType)(columnType);
12
12
  const qlPredicateDefs = predicateDefs.map((pd) => (0, utils_1.mapAdaptablePredicateDefToQlPredicateDef)(pd, qlDataType));
13
- const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, api);
13
+ const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, 'FilterForm', api);
14
14
  return `[${(0, utils_1.qlPredicateToString)(qlPredicate, qlPredicateDefs)}]`;
15
15
  };
16
16
  exports.getFilterPreview = getFilterPreview;
@@ -14,3 +14,4 @@ export declare const AdaptableOptionsDocsLink = "https://docs.adaptabletools.com
14
14
  export declare const AgGridModulesDocsLink = "https://docs.adaptabletools.com/guide/dev-guide-aggrid-modules-overview";
15
15
  export declare const AlertMessageDocsLink = "https://docs.adaptabletools.com/guide/handbook-alerting-message";
16
16
  export declare const FormatColumnPlaceholderDocsLink = "https://docs.adaptabletools.com/guide/handbook-column-formatting-display-format-placeholder";
17
+ export declare const AgGridRequiredModulesDocsLink = "https://docs.adaptabletools.com/guide/dev-guide-aggrid-modules-overview#mandatory-modules";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FormatColumnPlaceholderDocsLink = exports.AlertMessageDocsLink = exports.AgGridModulesDocsLink = exports.AdaptableOptionsDocsLink = exports.LicenseDocsLink = exports.PrimaryKeyDocsLink = exports.PredicateDocsLink = exports.QuantileAggregatedScalarQueryDocsLink = exports.CumulativeAggregatedScalarQueryDocsLink = exports.AggregatedScalarQueryDocsLink = exports.AggregatedBooleanQueryDocsLink = exports.ObservableQueryDocsLink = exports.ScalarQueryDocsLink = exports.BooleanQueryDocsLink = exports.ExpressionEditorDocsLink = exports.HOST_URL_DOCS = void 0;
3
+ exports.AgGridRequiredModulesDocsLink = exports.FormatColumnPlaceholderDocsLink = exports.AlertMessageDocsLink = exports.AgGridModulesDocsLink = exports.AdaptableOptionsDocsLink = exports.LicenseDocsLink = exports.PrimaryKeyDocsLink = exports.PredicateDocsLink = exports.QuantileAggregatedScalarQueryDocsLink = exports.CumulativeAggregatedScalarQueryDocsLink = exports.AggregatedScalarQueryDocsLink = exports.AggregatedBooleanQueryDocsLink = exports.ObservableQueryDocsLink = exports.ScalarQueryDocsLink = exports.BooleanQueryDocsLink = exports.ExpressionEditorDocsLink = exports.HOST_URL_DOCS = void 0;
4
4
  exports.HOST_URL_DOCS = 'https://docs.adaptabletools.com';
5
5
  //export const HOST_URL_DOCS = 'http://localhost:3000';
6
6
  exports.ExpressionEditorDocsLink = `${exports.HOST_URL_DOCS}/guide/ui-expression-editor`;
@@ -18,3 +18,4 @@ exports.AdaptableOptionsDocsLink = `${exports.HOST_URL_DOCS}/guide/reference-opt
18
18
  exports.AgGridModulesDocsLink = `${exports.HOST_URL_DOCS}/guide/dev-guide-aggrid-modules-overview`;
19
19
  exports.AlertMessageDocsLink = `${exports.HOST_URL_DOCS}/guide/handbook-alerting-message`;
20
20
  exports.FormatColumnPlaceholderDocsLink = `${exports.HOST_URL_DOCS}/guide/handbook-column-formatting-display-format-placeholder`;
21
+ exports.AgGridRequiredModulesDocsLink = `${exports.HOST_URL_DOCS}/guide/dev-guide-aggrid-modules-overview#mandatory-modules`;
@@ -25,11 +25,23 @@ export declare function moveArray(array: any[], from: number, to: number): void;
25
25
  export declare function areArraysEqual(arr1: any[], arr2: any[]): boolean;
26
26
  export declare function areArraysNotEqual(arr1: any[], arr2: any[]): boolean;
27
27
  export declare function areArraysEqualWithOrder(arr1: any[], arr2: any[]): boolean;
28
- export declare function areArraysEqualWithOrderandProperties(value: any[], other: any[]): boolean;
28
+ /**
29
+ * Checks if two arrays contain the same elements (order-independent).
30
+ *
31
+ * @param arr1 First array to compare
32
+ * @param arr2 Second array to compare
33
+ * @param equalityFn Optional function to determine if two elements are equal
34
+ * @returns True if arrays contain the same elements, false otherwise
35
+ */
36
+ export declare function areArraysEqualWithCustomComparator<T>(arr1: T[] | null | undefined, arr2: T[] | null | undefined, equalityFn?: (a: T, b: T) => boolean): boolean;
37
+ export declare function areArraysEqualWithOrderAndProperties(value: any[], other: any[]): boolean;
29
38
  export declare function sortArrayWithProperty(sortOrder: SortOrder, values: any[], sortProperty?: string): any[];
30
39
  export declare function sortArray(values: any[], sortOrder?: SortOrder): any[];
40
+ export declare const getGenericComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
31
41
  export declare function sortCellValueArray<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
42
+ export declare const getNumericComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
32
43
  export declare function sortCellValueArrayNumeric<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
44
+ export declare const getDateComparatorForGridCell: (sortOrder: SortOrder) => (a: GridCell, b: GridCell) => number;
33
45
  export declare function sortCellValueArrayDates<T extends GridCell>(cellValues: T[], sortOrder?: SortOrder): T[];
34
46
  export declare function groupArrayBy(array: Array<any>, prop: string): Array<any>;
35
47
  export declare function createCommaSeparatedString(values: any[]): string;
@@ -72,7 +84,8 @@ export declare const ArrayExtensions: {
72
84
  areArraysEqual: typeof areArraysEqual;
73
85
  areArraysNotEqual: typeof areArraysNotEqual;
74
86
  areArraysEqualWithOrder: typeof areArraysEqualWithOrder;
75
- areArraysEqualWithOrderandProperties: typeof areArraysEqualWithOrderandProperties;
87
+ areArraysEqualWithOrderAndProperties: typeof areArraysEqualWithOrderAndProperties;
88
+ areArraysEqualWithCustomComparator: typeof areArraysEqualWithCustomComparator;
76
89
  sortArray: typeof sortArray;
77
90
  sortCellValueArray: typeof sortCellValueArray;
78
91
  sortCellValueArrayNumeric: typeof sortCellValueArrayNumeric;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ArrayExtensions = exports.sortArrayWithOrder = exports.reorderArray = exports.SumArray = exports.createCommaSeparatedString = exports.groupArrayBy = exports.sortCellValueArrayDates = exports.sortCellValueArrayNumeric = exports.sortCellValueArray = exports.sortArray = exports.sortArrayWithProperty = exports.areArraysEqualWithOrderandProperties = exports.areArraysEqualWithOrder = exports.areArraysNotEqual = exports.areArraysEqual = exports.moveArray = exports.hasItemsOfCount = exports.hasOneItem = exports.getOccurrence = exports.HasSingleEmptyValue = exports.IsNotNullOrEmptyNorContainsSingleEmptyValue = exports.IsNullOrEmptyOrContainsSingleEmptyValue = exports.IsNotNullOrEmpty = exports.IsNullOrEmpty = exports.IsNotEmpty = exports.IsEmpty = exports.IsNotNull = exports.IsNull = exports.RetrieveDistinct = exports.NotContainsItem = exports.ContainsAnyItem = exports.ContainsItem = exports.AddItem = exports.NotCorrectLength = exports.CorrectLength = exports.GetLength = void 0;
3
+ exports.ArrayExtensions = exports.sortArrayWithOrder = exports.reorderArray = exports.SumArray = exports.createCommaSeparatedString = exports.groupArrayBy = exports.sortCellValueArrayDates = exports.getDateComparatorForGridCell = exports.sortCellValueArrayNumeric = exports.getNumericComparatorForGridCell = exports.sortCellValueArray = exports.getGenericComparatorForGridCell = exports.sortArray = exports.sortArrayWithProperty = exports.areArraysEqualWithOrderAndProperties = exports.areArraysEqualWithCustomComparator = exports.areArraysEqualWithOrder = exports.areArraysNotEqual = exports.areArraysEqual = exports.moveArray = exports.hasItemsOfCount = exports.hasOneItem = exports.getOccurrence = exports.HasSingleEmptyValue = exports.IsNotNullOrEmptyNorContainsSingleEmptyValue = exports.IsNullOrEmptyOrContainsSingleEmptyValue = exports.IsNotNullOrEmpty = exports.IsNullOrEmpty = exports.IsNotEmpty = exports.IsEmpty = exports.IsNotNull = exports.IsNull = exports.RetrieveDistinct = exports.NotContainsItem = exports.ContainsAnyItem = exports.ContainsItem = exports.AddItem = exports.NotCorrectLength = exports.CorrectLength = exports.GetLength = void 0;
4
4
  const Enums_1 = require("../../AdaptableState/Common/Enums");
5
5
  function GetLength(arrayToCheck) {
6
6
  return IsNotNull(arrayToCheck) ? arrayToCheck.length : 0;
@@ -141,7 +141,43 @@ function areArraysEqualWithOrder(arr1, arr2) {
141
141
  return arr1.every((x, index) => arr2.indexOf(x) == index);
142
142
  }
143
143
  exports.areArraysEqualWithOrder = areArraysEqualWithOrder;
144
- function areArraysEqualWithOrderandProperties(value, other) {
144
+ /**
145
+ * Checks if two arrays contain the same elements (order-independent).
146
+ *
147
+ * @param arr1 First array to compare
148
+ * @param arr2 Second array to compare
149
+ * @param equalityFn Optional function to determine if two elements are equal
150
+ * @returns True if arrays contain the same elements, false otherwise
151
+ */
152
+ function areArraysEqualWithCustomComparator(arr1, arr2, equalityFn) {
153
+ // Handle null/undefined cases
154
+ if (!arr1 && !arr2) {
155
+ return true;
156
+ }
157
+ if (!arr1 || !arr2) {
158
+ return false;
159
+ }
160
+ // Check length
161
+ if (arr1.length !== arr2.length) {
162
+ return false;
163
+ }
164
+ // Use default equality comparison if no custom function provided
165
+ const compareElements = equalityFn || ((a, b) => a === b);
166
+ // For each element in arr1, find a matching element in arr2
167
+ const arr2Copy = [...arr2];
168
+ for (let i = 0; i < arr1.length; i++) {
169
+ const element = arr1[i];
170
+ const matchIndex = arr2Copy.findIndex((el) => compareElements(element, el));
171
+ if (matchIndex === -1) {
172
+ return false;
173
+ }
174
+ // Remove the matched element to prevent duplicate matches
175
+ arr2Copy.splice(matchIndex, 1);
176
+ }
177
+ return true;
178
+ }
179
+ exports.areArraysEqualWithCustomComparator = areArraysEqualWithCustomComparator;
180
+ function areArraysEqualWithOrderAndProperties(value, other) {
145
181
  const type = Object.prototype.toString.call(value);
146
182
  // If the two objects are not the same type, return false
147
183
  if (type !== Object.prototype.toString.call(other)) {
@@ -163,7 +199,7 @@ function areArraysEqualWithOrderandProperties(value, other) {
163
199
  const itemType = Object.prototype.toString.call(item1);
164
200
  // If an object or array, compare recursively
165
201
  if (['[object Array]', '[object Object]'].indexOf(itemType) >= 0) {
166
- if (!areArraysEqualWithOrderandProperties(item1, item2)) {
202
+ if (!areArraysEqualWithOrderAndProperties(item1, item2)) {
167
203
  return false;
168
204
  }
169
205
  }
@@ -207,7 +243,7 @@ function areArraysEqualWithOrderandProperties(value, other) {
207
243
  // If nothing failed, return true
208
244
  return true;
209
245
  }
210
- exports.areArraysEqualWithOrderandProperties = areArraysEqualWithOrderandProperties;
246
+ exports.areArraysEqualWithOrderAndProperties = areArraysEqualWithOrderAndProperties;
211
247
  function sortArrayWithProperty(sortOrder, values, sortProperty) {
212
248
  if (sortProperty) {
213
249
  let newValues = [].concat(values);
@@ -241,16 +277,22 @@ function sortArray(values, sortOrder = Enums_1.SortOrder.Asc) {
241
277
  return newValues.sort((a, b) => (a < b ? -1 * direction : a > b ? 1 * direction : 0));
242
278
  }
243
279
  exports.sortArray = sortArray;
280
+ const getGenericComparatorForGridCell = (sortOrder) => {
281
+ const direction = sortOrder == Enums_1.SortOrder.Asc ? 1 : -1;
282
+ return (a, b) => {
283
+ return a.rawValue < b.rawValue ? -1 * direction : a.rawValue > b.rawValue ? 1 * direction : 0;
284
+ };
285
+ };
286
+ exports.getGenericComparatorForGridCell = getGenericComparatorForGridCell;
244
287
  function sortCellValueArray(cellValues, sortOrder = Enums_1.SortOrder.Asc) {
245
288
  const newValues = [].concat(cellValues);
246
- const direction = sortOrder == Enums_1.SortOrder.Asc ? 1 : -1;
247
- return newValues.sort((a, b) => a.rawValue < b.rawValue ? -1 * direction : a.rawValue > b.rawValue ? 1 * direction : 0);
289
+ const comparator = (0, exports.getGenericComparatorForGridCell)(sortOrder);
290
+ return newValues.sort(comparator);
248
291
  }
249
292
  exports.sortCellValueArray = sortCellValueArray;
250
- function sortCellValueArrayNumeric(cellValues, sortOrder = Enums_1.SortOrder.Asc) {
293
+ const getNumericComparatorForGridCell = (sortOrder) => {
251
294
  const direction = sortOrder == Enums_1.SortOrder.Asc ? 1 : -1;
252
- const newValues = [].concat(cellValues);
253
- return newValues.sort((a, b) => {
295
+ return (a, b) => {
254
296
  const valueAAsNumber = Number(a.rawValue);
255
297
  const valueBAsNumber = Number(b.rawValue);
256
298
  if (isNaN(valueAAsNumber)) {
@@ -264,16 +306,26 @@ function sortCellValueArrayNumeric(cellValues, sortOrder = Enums_1.SortOrder.Asc
264
306
  : valueAAsNumber > valueBAsNumber
265
307
  ? 1 * direction
266
308
  : 0;
267
- });
309
+ };
310
+ };
311
+ exports.getNumericComparatorForGridCell = getNumericComparatorForGridCell;
312
+ function sortCellValueArrayNumeric(cellValues, sortOrder = Enums_1.SortOrder.Asc) {
313
+ const newValues = [].concat(cellValues);
314
+ const comparator = (0, exports.getNumericComparatorForGridCell)(sortOrder);
315
+ return newValues.sort(comparator);
268
316
  }
269
317
  exports.sortCellValueArrayNumeric = sortCellValueArrayNumeric;
270
- function sortCellValueArrayDates(cellValues, sortOrder = Enums_1.SortOrder.Asc) {
271
- cellValues.sort((a, b) => {
318
+ const getDateComparatorForGridCell = (sortOrder) => {
319
+ return (a, b) => {
272
320
  return sortOrder == Enums_1.SortOrder.Asc
273
321
  ? +new Date(a.rawValue) - +new Date(b.rawValue)
274
322
  : +new Date(b.rawValue) - +new Date(a.rawValue);
275
- });
276
- return cellValues;
323
+ };
324
+ };
325
+ exports.getDateComparatorForGridCell = getDateComparatorForGridCell;
326
+ function sortCellValueArrayDates(cellValues, sortOrder = Enums_1.SortOrder.Asc) {
327
+ const comparator = (0, exports.getDateComparatorForGridCell)(sortOrder);
328
+ return [].concat(cellValues).sort(comparator);
277
329
  }
278
330
  exports.sortCellValueArrayDates = sortCellValueArrayDates;
279
331
  function groupArrayBy(array, prop) {
@@ -384,7 +436,8 @@ exports.ArrayExtensions = {
384
436
  areArraysEqual,
385
437
  areArraysNotEqual,
386
438
  areArraysEqualWithOrder,
387
- areArraysEqualWithOrderandProperties,
439
+ areArraysEqualWithOrderAndProperties,
440
+ areArraysEqualWithCustomComparator,
388
441
  sortArray,
389
442
  sortCellValueArray,
390
443
  sortCellValueArrayNumeric,
@@ -256,7 +256,7 @@ function CreateEmptyFormatColumn() {
256
256
  DisplayFormat: undefined,
257
257
  CellAlignment: undefined,
258
258
  RowScope: undefined,
259
- Target: 'cell'
259
+ Target: 'cell',
260
260
  };
261
261
  }
262
262
  exports.CreateEmptyFormatColumn = CreateEmptyFormatColumn;
@@ -283,7 +283,7 @@ function CreateEmptyPivotLayout(layout) {
283
283
  PivotColumns: layout.PivotColumns || [],
284
284
  PivotAggregationColumns: layout.PivotAggregationColumns || [],
285
285
  PivotGroupedColumns: layout.PivotGroupedColumns || [],
286
- ColumnWidths: layout.ColumnWidths || {},
286
+ ColumnSizing: layout.ColumnSizing || {},
287
287
  };
288
288
  return result;
289
289
  }
@@ -299,7 +299,7 @@ function CreateEmptyLayout(layout, adaptableColumns) {
299
299
  TableColumns: tableLayout.TableColumns || [],
300
300
  ColumnSorts: tableLayout.ColumnSorts || [],
301
301
  ColumnFilters: tableLayout.ColumnFilters || [],
302
- ColumnWidths: tableLayout.ColumnWidths || {},
302
+ ColumnSizing: tableLayout.ColumnSizing || {},
303
303
  RowGroupedColumns: tableLayout.RowGroupedColumns ||
304
304
  (adaptableColumns ? adaptableColumns.filter((c) => c.isGrouped).map((c) => c.columnId) : []),
305
305
  };
@@ -45,7 +45,7 @@ class AnnotationsService {
45
45
  shouldListenToEvents() {
46
46
  // Listen to events if we either have Notes in state or if Comments have been set up
47
47
  return (ArrayExtensions_1.default.IsNotNullOrEmpty(this.api.noteApi.getAllNotes()) ||
48
- this.api.internalApi.getModuleService().isModuleAvailable('Comment'));
48
+ this.api.internalApi.getModuleService().isAdapTableModulePresent('Comment'));
49
49
  }
50
50
  setUpEventListeners() {
51
51
  this.adaptable._on('MouseEnter', (event) => this.handleMouseEnter(event));
@@ -4,7 +4,8 @@ import { AdaptableObject } from '../../../AdaptableState/Common/AdaptableObject'
4
4
  import { IAdaptableService } from './IAdaptableService';
5
5
  import { AdaptableModule } from '../../../AdaptableState/Common/Types';
6
6
  export interface IModuleService extends IAdaptableService {
7
- isModuleAvailable(adaptableModule: AdaptableModule): boolean;
7
+ logMissingAgGridDepsInfos(): void;
8
+ isAdapTableModulePresent(adaptableModule: AdaptableModule): boolean;
8
9
  isModuleEditable(adaptableModule: AdaptableModule): boolean;
9
10
  createModuleUIItems(): void;
10
11
  getTeamSharingAction(adaptableModule: AdaptableModule): TeamSharingImportInfo<AdaptableObject> | undefined;
@@ -1,5 +1,5 @@
1
1
  import { AdaptableModule } from '../../types';
2
- import { IModule, ModuleInfo, IModuleCollection } from '../../Strategy/Interface/IModule';
2
+ import { IModule, IModuleCollection, ModuleInfo } from '../../Strategy/Interface/IModule';
3
3
  import { TeamSharingImportInfo } from '../../AdaptableState/TeamSharingState';
4
4
  import { AdaptableObject } from '../../AdaptableState/Common/AdaptableObject';
5
5
  import { IModuleService } from './Interface/IModuleService';
@@ -7,9 +7,9 @@ import { AdaptableApi } from '../../../types';
7
7
  export declare class ModuleService implements IModuleService {
8
8
  private adaptableApi;
9
9
  constructor(adaptableApi: AdaptableApi);
10
- isModuleAvailable(adaptableModule: AdaptableModule): boolean;
11
- isModuleName(adaptableModule: string): adaptableModule is AdaptableModule;
10
+ isAdapTableModulePresent(adaptableModule: AdaptableModule): boolean;
12
11
  isModuleEditable(adaptableModule: AdaptableModule): boolean;
12
+ logMissingAgGridDepsInfos(): void;
13
13
  getModuleFriendlyName(adaptableModule: AdaptableModule): string;
14
14
  createModuleUIItems(): void;
15
15
  private createSettingsPanelItems;
@@ -4,21 +4,17 @@ exports.ModuleService = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const Helper_1 = tslib_1.__importDefault(require("../Helpers/Helper"));
6
6
  const DocumentationLinkConstants_1 = require("../Constants/DocumentationLinkConstants");
7
- const Types_1 = require("../../AdaptableState/Common/Types");
8
7
  class ModuleService {
9
8
  constructor(adaptableApi) {
10
9
  this.adaptableApi = adaptableApi;
11
10
  this.adaptableApi = adaptableApi;
12
11
  }
13
- isModuleAvailable(adaptableModule) {
12
+ isAdapTableModulePresent(adaptableModule) {
14
13
  let module = this.getModuleCollection().get(adaptableModule);
15
14
  if (!module) {
16
15
  return false;
17
16
  }
18
- return module.isModuleAvailable();
19
- }
20
- isModuleName(adaptableModule) {
21
- return Types_1.ALL_MODULES.includes(adaptableModule);
17
+ return module.isModuleVisible();
22
18
  }
23
19
  isModuleEditable(adaptableModule) {
24
20
  let module = this.getModuleCollection().get(adaptableModule);
@@ -27,6 +23,22 @@ class ModuleService {
27
23
  }
28
24
  return module.isModuleEditable();
29
25
  }
26
+ logMissingAgGridDepsInfos() {
27
+ // log missing core (required) AG Grid dependencies
28
+ const agGridModulesAdapter = this.adaptableApi.internalApi.getAgGridModulesAdapter();
29
+ const mandatoryAgGridModuleNames = agGridModulesAdapter.getMandatoryAgGridModuleNames();
30
+ const registeredAgGridModuleNames = agGridModulesAdapter.getAgGridRegisteredModuleNames();
31
+ const missingAgGridModuleNames = mandatoryAgGridModuleNames.filter((moduleName) => !registeredAgGridModuleNames.includes(moduleName));
32
+ if (missingAgGridModuleNames.length) {
33
+ this.adaptableApi.consoleError(`AdapTable requires the following AG Grid modules to be registered: ${missingAgGridModuleNames.join(', ')}.
34
+
35
+ See for more information: ${DocumentationLinkConstants_1.AgGridRequiredModulesDocsLink}`);
36
+ }
37
+ // log optional missing AG Grid dependencies for all modules
38
+ this.getModuleCollection().forEach((adaptableModule) => {
39
+ adaptableModule.logMissingAgGridDepsInfos();
40
+ });
41
+ }
30
42
  getModuleFriendlyName(adaptableModule) {
31
43
  return this.getModuleInfoByModule(adaptableModule)?.FriendlyName ?? adaptableModule;
32
44
  }
@@ -24,7 +24,9 @@ class AdaptableView extends React.Component {
24
24
  return (React.createElement("div", null,
25
25
  React.createElement(GridCellPopup_1.GridCellPopup, null),
26
26
  React.createElement(FloatingQuickSearch_1.QuickSearchDrawer, null),
27
- this.props.AdaptableApi.internalApi.getModuleService().isModuleAvailable('Dashboard') && (React.createElement(Dashboard_1.Dashboard, { api: this.props.AdaptableApi })),
27
+ this.props.AdaptableApi.internalApi
28
+ .getModuleService()
29
+ .isAdapTableModulePresent('Dashboard') && React.createElement(Dashboard_1.Dashboard, { api: this.props.AdaptableApi }),
28
30
  this.props.PopupState.PromptPopup.ShowPromptPopup && (React.createElement(AdaptablePopupPrompt_1.AdaptablePopupPrompt, { message: this.props.PopupState.PromptPopup.Message, header: this.props.PopupState.PromptPopup.Header, onClose: this.props.onClosePromptPopup, onConfirm: this.props.onConfirmPromptPopup, onConfirmActionCreator: this.props.PopupState.PromptPopup.ConfirmActionCreator, defaultValue: this.props.PopupState.PromptPopup.DefaultValue })),
29
31
  Boolean(this.props.PopupState.ConfirmationPopup.ShowConfirmationPopup) && (React.createElement(AdaptablePopupConfirmation_1.AdaptablePopupConfirmation, { header: this.props.PopupState.ConfirmationPopup.Header, messsage: this.props.PopupState.ConfirmationPopup.Msg, showPopup: this.props.PopupState.ConfirmationPopup.ShowConfirmationPopup, cancelButtonText: this.props.PopupState.ConfirmationPopup.CancelButtonText, confirmButtonText: this.props.PopupState.ConfirmationPopup.ConfirmButtonText, onCancel: this.props.onCancelConfirmationPopup, onConfirm: this.props.onConfirmConfirmationPopup, showInputBox: this.props.PopupState.ConfirmationPopup.ShowInputBox, messageType: this.props.PopupState.ConfirmationPopup.MessageType, api: this.props.AdaptableApi })),
30
32
  Boolean(this.props.PopupState.ScreenPopup.ShowScreenPopup) && (React.createElement(AdaptablePopup_1.AdaptablePopup, { componentName: this.props.PopupState.ScreenPopup.ComponentName, componentModule: this.props.PopupState.ScreenPopup.ComponentModule, onHide: this.props.onCloseScreenPopup, api: this.props.AdaptableApi, onClearParams: () => this.props.onClearPopupParams(), moduleParams: this.props.PopupState.ScreenPopup.Params, moduleProps: this.props.PopupState.ScreenPopup.PopupProps })),
@@ -44,6 +44,8 @@ const MODULES_WITH_SCOPE = [
44
44
  const ColumnDefPreview = (props) => {
45
45
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
46
46
  if (props.column) {
47
+ const api = adaptable.api;
48
+ const summary = api.columnApi.getColumnSummaryForColumnId(props.column.columnId);
47
49
  const keyValuePairs = [
48
50
  {
49
51
  Key: 'Column Id',
@@ -116,7 +118,7 @@ const ColumnDefPreview = (props) => {
116
118
  {
117
119
  Key: 'Column Filter',
118
120
  Value: props.column.filterable
119
- ? adaptable.api.filterApi.columnFilterApi.columnFilterToString(adaptable.api.filterApi.columnFilterApi.getColumnFilterForColumn(props.column.columnId))
121
+ ? api.filterApi.columnFilterApi.columnFilterToString(summary.columnFilter)
120
122
  : 'Ignore',
121
123
  },
122
124
  {
@@ -147,6 +149,10 @@ const ColumnDefPreview = (props) => {
147
149
  Key: 'Sortable',
148
150
  Value: props.column.sortable ? 'Yes' : 'No',
149
151
  },
152
+ {
153
+ Key: 'No. Distinct Values',
154
+ Value: summary.uniqueGridCells.length,
155
+ },
150
156
  ]
151
157
  .map((keyValuePair) => {
152
158
  return {
@@ -166,7 +172,7 @@ const ColumnDefPreview = (props) => {
166
172
  const ModuleView = (props) => {
167
173
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
168
174
  const module = adaptable.ModuleService.getModuleById(props.moduleName);
169
- if (!module || !module.isModuleAvailable()) {
175
+ if (!module?.isModuleVisible()) {
170
176
  return null;
171
177
  }
172
178
  const moduleInfo = module.moduleInfo;
@@ -217,7 +223,7 @@ const ColumnInfo = (props) => {
217
223
  React.createElement(rebass_1.Box, { mb: 3 },
218
224
  React.createElement(FormLayout_1.default, null,
219
225
  React.createElement(FormLayout_1.FormRow, { label: "Select Column" },
220
- React.createElement(ColumnSelector_1.ColumnSelector, { filterColumn: (column) => !column.alwaysHidden, value: selectedColumnId, onChange: (columnId) => setSelectedColumnId(columnId) })))),
226
+ React.createElement(ColumnSelector_1.ColumnSelector, { value: selectedColumnId, onChange: (columnId) => setSelectedColumnId(columnId) })))),
221
227
  selectedColumnId && (React.createElement(Tabs_1.Tabs, { mb: 3 },
222
228
  React.createElement(Tabs_1.Tabs.Tab, null, "Column Summary"),
223
229
  React.createElement(Tabs_1.Tabs.Tab, null, "Column State"),
@@ -10,8 +10,7 @@ const AdaptableContext_1 = require("../../AdaptableContext");
10
10
  */
11
11
  const AdaptableIconSelector = (props) => {
12
12
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
13
- const userInterfaceOptions = adaptable.api.optionsApi.getAdaptableOptions()?.userInterfaceOptions;
14
- const customDefinedIcons = userInterfaceOptions.customIcons ?? [];
15
- return React.createElement(IconSelector_1.IconSelector, { customIcons: customDefinedIcons, ...props });
13
+ const customIcons = adaptable.api.userInterfaceApi.getCustomIcons();
14
+ return React.createElement(IconSelector_1.IconSelector, { customIcons: customIcons, ...props });
16
15
  };
17
16
  exports.AdaptableIconSelector = AdaptableIconSelector;
@@ -4,7 +4,6 @@ export interface AdaptableColumnFilterProps {
4
4
  columnId: string;
5
5
  padding?: BoxProps['p'];
6
6
  wrapperProps?: BoxProps;
7
- onChange?: () => void;
8
7
  }
9
8
  /**
10
9
  * This wrapper knows about predicates.
@@ -10,10 +10,9 @@ const useAdaptableFilterWrapper_1 = require("./useAdaptableFilterWrapper");
10
10
  * It transforms predicates in QlPredicates.
11
11
  */
12
12
  const AdaptableColumnFilter = (props) => {
13
- const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.columnId);
13
+ const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.columnId, 'FilterForm');
14
14
  return (React.createElement(ColumnFilter_1.ColumnFilterComponent, { wrapperProps: props.wrapperProps, columnId: props.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: React.useCallback((predicate) => {
15
15
  handlePredicateChange(predicate);
16
- props.onChange?.();
17
- }, [handlePredicateChange, props.onChange]) }));
16
+ }, [handlePredicateChange]) }));
18
17
  };
19
18
  exports.AdaptableColumnFilter = AdaptableColumnFilter;
@@ -1,8 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ColumnFilterProps } from '../../../Utilities/Interface/ColumnFilterProps';
3
3
  export interface AdaptableColumnFilterProps extends ColumnFilterProps {
4
- onClear?: () => void;
5
- onChange?: () => void;
6
4
  }
7
5
  /**
8
6
  * This wrapper knows about predicates.
@@ -12,15 +12,13 @@ const useAdaptableFilterWrapper_1 = require("./useAdaptableFilterWrapper");
12
12
  */
13
13
  const AdaptableFloatingFilter = (props) => {
14
14
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
15
- const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.Column.columnId);
15
+ const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = (0, useAdaptableFilterWrapper_1.useAdaptableFilterWrapper)(props.Column.columnId, 'FilterBar');
16
16
  const onClear = React.useCallback(() => {
17
17
  handleClear();
18
- props.onClear?.();
19
- }, [handleClear, props.onClear]);
18
+ }, [handleClear]);
20
19
  const onPredicateChange = React.useCallback((newPredicate) => {
21
20
  handlePredicateChange(newPredicate);
22
- props.onChange?.();
23
- }, [handlePredicateChange, props.onChange]);
21
+ }, [handlePredicateChange]);
24
22
  if (!column) {
25
23
  return null;
26
24
  }
@@ -36,8 +34,7 @@ const AdaptableFloatingFilter = (props) => {
36
34
  Inputs: [],
37
35
  },
38
36
  ]);
39
- props.onChange?.();
40
37
  }
41
- }, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange, onChange: props.onChange }));
38
+ }, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange }));
42
39
  };
43
40
  exports.AdaptableFloatingFilter = AdaptableFloatingFilter;
@@ -66,7 +66,7 @@ const AndOrInput = (props) => {
66
66
  };
67
67
  const ColumnFilterComponent = (props) => {
68
68
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
69
- const autoApplyColumnFilter = adaptable.adaptableOptions.filterOptions.columnFilterOptions?.autoApplyColumnFilter ?? true;
69
+ const autoApplyColumnFilter = adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
70
70
  const [predicateNotYetApplied, setPredicateNotYetApplied] = React.useState(props.predicate);
71
71
  const applyFilter = () => {
72
72
  props.onPredicateChange(currentPredicateRef.current);
@@ -120,7 +120,7 @@ const ColumnFilterComponent = (props) => {
120
120
  React.createElement(AndOrInput, { onChange: onCombineChange, operator: currentPredicate.operator }),
121
121
  React.createElement(SimpleButton_1.default, { ml: 2, onClick: () => onPredicateChange(null) }, "Clear All")),
122
122
  React.createElement(rebass_1.Flex, { flexDirection: "column", className: "ab-ColumnFilter", flex: 1, minHeight: 0, ...props.wrapperProps },
123
- React.createElement(rebass_1.Box, { flex: 1, style: { overflow: 'auto' } },
123
+ React.createElement(rebass_1.Box, { style: { overflow: 'auto' } },
124
124
  currentPredicate.args.map((predicate, index) => {
125
125
  return (React.createElement(ColumnFilterEditor, { deleteDisabled: currentPredicate.args.length < 2, onDelete: () => {
126
126
  const currentPredicate = currentPredicateRef.current;
@@ -145,7 +145,14 @@ const ColumnFilterComponent = (props) => {
145
145
  } }));
146
146
  }),
147
147
  isLastPredicateValid && filterPredicateDropdown),
148
- !autoApplyColumnFilter ? (React.createElement(rebass_1.Box, { pt: 2 },
149
- React.createElement(SimpleButton_1.default, { tone: "accent", variant: "raised", onClick: applyFilter }, "Apply Filter"))) : null)));
148
+ !autoApplyColumnFilter ? (React.createElement(React.Fragment, null,
149
+ React.createElement(rebass_1.Box, { flex: 1, "data-name": "spacer" }),
150
+ React.createElement(rebass_1.Flex, { pt: 2, className: "ab-ColumnFilter-actions", justifyContent: "space-between" },
151
+ React.createElement(rebass_1.Box, { className: "ab-ColumnFilter-action-apply" },
152
+ React.createElement(SimpleButton_1.default, { tone: "accent", variant: "raised", onClick: applyFilter }, "Apply Filter")),
153
+ React.createElement(rebass_1.Box, { className: "ab-ColumnFilter-action-reset" },
154
+ React.createElement(SimpleButton_1.default, { tone: "neutral", variant: "raised", onClick: () => {
155
+ setPredicateNotYetApplied(props.predicate);
156
+ } }, "Reset Filter"))))) : null)));
150
157
  };
151
158
  exports.ColumnFilterComponent = ColumnFilterComponent;
@@ -33,6 +33,6 @@ const ColumnFilterWindow = (props) => {
33
33
  }
34
34
  return label;
35
35
  }, onChange: (column) => setColumnId(column), filterColumn: (column) => column.queryable, isMulti: false, value: columnId })))),
36
- React.createElement(AdaptableColumnFilter_1.AdaptableColumnFilter, { columnId: columnId, onChange: onChange })));
36
+ React.createElement(AdaptableColumnFilter_1.AdaptableColumnFilter, { columnId: columnId })));
37
37
  };
38
38
  exports.ColumnFilterWindow = ColumnFilterWindow;
@@ -13,13 +13,12 @@ const FloatingFilterInputList_1 = require("./components/FloatingFilterInputList"
13
13
  const utils_1 = require("./utils");
14
14
  const FloatingFilter = (props) => {
15
15
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
16
- const columnFilterOptions = adaptable.adaptableOptions.filterOptions.columnFilterOptions;
17
16
  /**
18
17
  * We always have a syntetic predicate with AND or OR, so the logic is easyer.
19
18
  * The wrapper is in charge of constructing the correct column filter.
20
19
  */
21
20
  const isMultiple = props.predicate?.args?.length > 1;
22
- const isManualApply = !columnFilterOptions.autoApplyColumnFilter;
21
+ const isManualApply = !adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
23
22
  const isInlineEditable = !isMultiple && !isManualApply;
24
23
  // only used when there is only one filter selected
25
24
  let singleFilterPredicateDef = null;
@@ -14,7 +14,7 @@ const LayoutColumnFilter = (props) => {
14
14
  const predicateDefs = api.filterApi.columnFilterApi.getFilterPredicateDefsForColumn(column);
15
15
  const qlDataType = (0, adaptableQlUtils_1.mapColumnDataTypeToExpressionFunctionType)(column.dataType);
16
16
  const qlPredicateDefs = predicateDefs.map((predDef) => (0, utils_1.mapAdaptablePredicateDefToQlPredicateDef)(predDef, qlDataType));
17
- const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, api);
17
+ const qlPredicate = (0, utils_1.mapColumnFilterToQlPredicate)(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, 'FilterForm', api);
18
18
  const handlePredicateChange = (newPredicate) => {
19
19
  const newAdaptablePredicates = newPredicate.args.map(utils_1.mapQlPredicateToAdaptablePredicate);
20
20
  const newFilter = {
@@ -74,7 +74,7 @@ const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear: onCle
74
74
  }
75
75
  };
76
76
  if (type === 'date' && !showDatePicker) {
77
- return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
77
+ return (React.createElement(AdaptableDateInlineInput_1.AdaptableDateInlineInput, { "data-name": "floating-filter-input", value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
78
78
  onChange(value);
79
79
  setLiveValue(value);
80
80
  } }));
@@ -100,7 +100,7 @@ const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear: onCle
100
100
  borderRadius: 0,
101
101
  border: 'none',
102
102
  }
103
- : {}, onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
103
+ : {}, "data-name": "floating-filter-input", onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
104
104
  // autoFocus has to be FALSE because if the input receives focus in the init phase,
105
105
  // it may scroll the AG Grid header viewport into view and de-synchronize it (relative to the content viewport)
106
106
  autoFocus: false, value: liveValue ?? '', onKeyDown: onKeyDown, showClearButton: false, onChange: (e) => {