@adaptabletools/adaptable 20.3.0-canary.2 → 21.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/agGrid.d.ts +2 -1
  2. package/agGrid.js +2 -1
  3. package/base.css +36 -15
  4. package/base.css.map +1 -1
  5. package/icons/add-circle.svg +1 -0
  6. package/icons/add.svg +1 -0
  7. package/icons/alert.svg +1 -0
  8. package/icons/align-center.svg +1 -0
  9. package/icons/align-justify.svg +1 -0
  10. package/icons/align-left.svg +1 -0
  11. package/icons/align-right.svg +1 -0
  12. package/icons/arrow-down-long.svg +1 -0
  13. package/icons/arrow-down.svg +1 -0
  14. package/icons/arrow-expand.svg +1 -0
  15. package/icons/arrow-left.svg +1 -0
  16. package/icons/arrow-right.svg +1 -0
  17. package/icons/arrow-up-long.svg +1 -0
  18. package/icons/arrow-up.svg +1 -0
  19. package/icons/assignment.svg +1 -0
  20. package/icons/badge.svg +1 -0
  21. package/icons/bold.svg +1 -0
  22. package/icons/boolean-list.svg +1 -0
  23. package/icons/brain.svg +1 -0
  24. package/icons/broadcast.svg +1 -0
  25. package/icons/brush.svg +1 -0
  26. package/icons/building.svg +1 -0
  27. package/icons/calculated-column.svg +1 -0
  28. package/icons/calendar.svg +1 -0
  29. package/icons/call.svg +1 -0
  30. package/icons/case-lower.svg +1 -0
  31. package/icons/case-sentence.svg +1 -0
  32. package/icons/case-upper.svg +1 -0
  33. package/icons/cells.svg +1 -0
  34. package/icons/chart.svg +1 -0
  35. package/icons/chat.svg +1 -0
  36. package/icons/check-circle.svg +1 -0
  37. package/icons/check.svg +1 -0
  38. package/icons/checked.svg +1 -0
  39. package/icons/clipboard.svg +1 -0
  40. package/icons/clone.svg +1 -0
  41. package/icons/close.svg +1 -0
  42. package/icons/cloud-upload.svg +1 -0
  43. package/icons/collapse-all.svg +1 -0
  44. package/icons/collapse.svg +1 -0
  45. package/icons/color-palette.svg +1 -0
  46. package/icons/column-add.svg +1 -0
  47. package/icons/column-outline.svg +1 -0
  48. package/icons/columns.svg +1 -0
  49. package/icons/comment.svg +1 -0
  50. package/icons/comments.svg +1 -0
  51. package/icons/contact.svg +1 -0
  52. package/icons/contains.svg +1 -0
  53. package/icons/copy.svg +1 -0
  54. package/icons/csv.svg +1 -0
  55. package/icons/dashboard.svg +1 -0
  56. package/icons/data-set.svg +1 -0
  57. package/icons/date-range.svg +1 -0
  58. package/icons/delete.svg +1 -0
  59. package/icons/division.svg +1 -0
  60. package/icons/dock.svg +1 -0
  61. package/icons/dollar.svg +1 -0
  62. package/icons/download.svg +1 -0
  63. package/icons/downloaded.svg +1 -0
  64. package/icons/drag.svg +1 -0
  65. package/icons/edit-table.svg +1 -0
  66. package/icons/edit.svg +1 -0
  67. package/icons/ends-with.svg +1 -0
  68. package/icons/equals.svg +1 -0
  69. package/icons/equation.svg +1 -0
  70. package/icons/error.svg +1 -0
  71. package/icons/excel.svg +1 -0
  72. package/icons/expand-all.svg +1 -0
  73. package/icons/expand.svg +1 -0
  74. package/icons/exponent.svg +1 -0
  75. package/icons/export-data.svg +1 -0
  76. package/icons/export.svg +1 -0
  77. package/icons/fast-backward.svg +1 -0
  78. package/icons/fast-forward.svg +1 -0
  79. package/icons/fdc3.svg +1 -0
  80. package/icons/filled-circle.svg +1 -0
  81. package/icons/filter-list.svg +1 -0
  82. package/icons/filter-off.svg +1 -0
  83. package/icons/filter.svg +1 -0
  84. package/icons/flag.svg +1 -0
  85. package/icons/folder-open.svg +1 -0
  86. package/icons/folder-shared.svg +1 -0
  87. package/icons/folder.svg +1 -0
  88. package/icons/function.svg +1 -0
  89. package/icons/gradient.svg +1 -0
  90. package/icons/greater-than-or-equal.svg +1 -0
  91. package/icons/greater-than.svg +1 -0
  92. package/icons/grid-filter.svg +1 -0
  93. package/icons/grid-info.svg +1 -0
  94. package/icons/grid.svg +1 -0
  95. package/icons/history.svg +1 -0
  96. package/icons/home.svg +1 -0
  97. package/icons/horizontal-lines.svg +1 -0
  98. package/icons/import-export.svg +1 -0
  99. package/icons/import.svg +1 -0
  100. package/icons/info.svg +1 -0
  101. package/icons/interactions.svg +1 -0
  102. package/icons/italic.svg +1 -0
  103. package/icons/json.svg +1 -0
  104. package/icons/laptop.svg +1 -0
  105. package/icons/less-than-or-equal.svg +1 -0
  106. package/icons/less-than.svg +1 -0
  107. package/icons/lightning.svg +1 -0
  108. package/icons/link.svg +1 -0
  109. package/icons/list.svg +1 -0
  110. package/icons/logout.svg +1 -0
  111. package/icons/mail.svg +1 -0
  112. package/icons/menu.svg +1 -0
  113. package/icons/minus.svg +1 -0
  114. package/icons/money.svg +1 -0
  115. package/icons/multiplication.svg +1 -0
  116. package/icons/newpage.svg +1 -0
  117. package/icons/news.svg +1 -0
  118. package/icons/not-contains.svg +1 -0
  119. package/icons/not-equal.svg +1 -0
  120. package/icons/note.svg +1 -0
  121. package/icons/open-in-new.svg +1 -0
  122. package/icons/order.svg +1 -0
  123. package/icons/organisation.svg +1 -0
  124. package/icons/overline.svg +1 -0
  125. package/icons/paperclip.svg +1 -0
  126. package/icons/pause.svg +1 -0
  127. package/icons/percent-tag.svg +1 -0
  128. package/icons/percent.svg +1 -0
  129. package/icons/person.svg +1 -0
  130. package/icons/pie-chart.svg +1 -0
  131. package/icons/play.svg +1 -0
  132. package/icons/plus.svg +1 -0
  133. package/icons/quote.svg +1 -0
  134. package/icons/refresh.svg +1 -0
  135. package/icons/regex.svg +1 -0
  136. package/icons/reminder.svg +1 -0
  137. package/icons/resume.svg +1 -0
  138. package/icons/rows.svg +1 -0
  139. package/icons/save.svg +1 -0
  140. package/icons/schedule.svg +1 -0
  141. package/icons/science.svg +1 -0
  142. package/icons/search-table.svg +1 -0
  143. package/icons/search.svg +1 -0
  144. package/icons/select-all.svg +1 -0
  145. package/icons/select-fwd.svg +1 -0
  146. package/icons/select-off.svg +1 -0
  147. package/icons/settings.svg +1 -0
  148. package/icons/sort-asc.svg +1 -0
  149. package/icons/sort-desc.svg +1 -0
  150. package/icons/spanner.svg +1 -0
  151. package/icons/spark-line.svg +1 -0
  152. package/icons/starts-with.svg +1 -0
  153. package/icons/statusbar.svg +1 -0
  154. package/icons/stop.svg +1 -0
  155. package/icons/strikethrough.svg +1 -0
  156. package/icons/styled-grid.svg +1 -0
  157. package/icons/sync.svg +1 -0
  158. package/icons/tab-unselected.svg +1 -0
  159. package/icons/target.svg +1 -0
  160. package/icons/theme.svg +1 -0
  161. package/icons/traffic-lights.svg +1 -0
  162. package/icons/triangle-down.svg +1 -0
  163. package/icons/triangle-up.svg +1 -0
  164. package/icons/unchecked.svg +1 -0
  165. package/icons/underline.svg +1 -0
  166. package/icons/undo.svg +1 -0
  167. package/icons/unfilled-circle.svg +1 -0
  168. package/icons/upload.svg +1 -0
  169. package/icons/visibility-off-bold.svg +1 -0
  170. package/icons/visibility-off.svg +1 -0
  171. package/icons/visibility-on-bold.svg +1 -0
  172. package/icons/visibility-on.svg +1 -0
  173. package/icons/warning.svg +1 -0
  174. package/index.css +32 -15
  175. package/index.css.map +1 -1
  176. package/package.json +2 -2
  177. package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -5
  178. package/src/AdaptableOptions/ColumnOptions.d.ts +71 -187
  179. package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -2
  180. package/src/AdaptableOptions/EditOptions.d.ts +4 -7
  181. package/src/AdaptableOptions/FilterOptions.d.ts +50 -15
  182. package/src/AdaptableOptions/LayoutOptions.d.ts +8 -21
  183. package/src/AdaptableOptions/PredicateOptions.d.ts +1 -1
  184. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  185. package/src/AdaptableState/Common/AdaptableColumn.d.ts +7 -0
  186. package/src/AdaptableState/Common/AdaptablePredicate.js +2 -2
  187. package/src/AdaptableState/Common/CustomWindowConfig.d.ts +11 -11
  188. package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
  189. package/src/AdaptableState/Common/ProgressIndicatorConfig.d.ts +1 -4
  190. package/src/AdaptableState/Common/RowScope.d.ts +1 -1
  191. package/src/AdaptableState/FormatColumnState.d.ts +16 -9
  192. package/src/AdaptableState/InternalState.d.ts +1 -1
  193. package/src/AdaptableState/LayoutState.d.ts +26 -6
  194. package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
  195. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  196. package/src/Api/AlertApi.d.ts +5 -11
  197. package/src/Api/ColumnApi.d.ts +17 -1
  198. package/src/Api/ColumnFilterApi.d.ts +32 -2
  199. package/src/Api/CustomSortApi.d.ts +5 -10
  200. package/src/Api/FlashingCellApi.d.ts +10 -6
  201. package/src/Api/FormatColumnApi.d.ts +8 -18
  202. package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
  203. package/src/Api/Implementation/AlertApiImpl.js +7 -6
  204. package/src/Api/Implementation/ApiBase.d.ts +2 -12
  205. package/src/Api/Implementation/ApiBase.js +5 -5
  206. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
  207. package/src/Api/Implementation/ColumnApiImpl.js +59 -23
  208. package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
  209. package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
  210. package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
  211. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
  212. package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
  213. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
  214. package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
  215. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
  216. package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
  217. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
  218. package/src/Api/Implementation/LayoutApiImpl.js +101 -7
  219. package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
  220. package/src/Api/Implementation/LayoutHelpers.js +23 -4
  221. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
  222. package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
  223. package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
  224. package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
  225. package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
  226. package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
  227. package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
  228. package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
  229. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
  230. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
  231. package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
  232. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  233. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  234. package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
  235. package/src/Api/Internal/AlertInternalApi.js +10 -10
  236. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
  237. package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
  238. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
  239. package/src/Api/Internal/ColumnInternalApi.js +6 -2
  240. package/src/Api/Internal/DashboardInternalApi.js +1 -1
  241. package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
  242. package/src/Api/Internal/EntitlementInternalApi.js +8 -0
  243. package/src/Api/Internal/ExportInternalApi.js +1 -1
  244. package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
  245. package/src/Api/Internal/FormatColumnInternalApi.d.ts +12 -13
  246. package/src/Api/Internal/FormatColumnInternalApi.js +45 -16
  247. package/src/Api/Internal/GridInternalApi.d.ts +7 -10
  248. package/src/Api/Internal/GridInternalApi.js +76 -27
  249. package/src/Api/Internal/LayoutInternalApi.d.ts +5 -5
  250. package/src/Api/Internal/LayoutInternalApi.js +42 -5
  251. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  252. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  253. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  254. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  255. package/src/Api/LayoutApi.d.ts +7 -2
  256. package/src/Api/PlusMinusApi.d.ts +11 -7
  257. package/src/Api/ScheduleApi.d.ts +9 -16
  258. package/src/Api/ShortcutApi.d.ts +5 -6
  259. package/src/Api/StyledColumnApi.d.ts +10 -7
  260. package/src/Api/UserInterfaceApi.d.ts +5 -6
  261. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  262. package/src/Redux/ActionsReducers/InternalRedux.js +7 -7
  263. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  264. package/src/Redux/ActionsReducers/StyledColumnRedux.js +13 -0
  265. package/src/Redux/Store/AdaptableStore.js +10 -10
  266. package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
  267. package/src/Strategy/AdaptableModuleBase.js +46 -9
  268. package/src/Strategy/AlertModule.d.ts +3 -4
  269. package/src/Strategy/AlertModule.js +7 -4
  270. package/src/Strategy/CalculatedColumnModule.js +2 -2
  271. package/src/Strategy/CellSummaryModule.js +2 -2
  272. package/src/Strategy/ChartingModule.d.ts +3 -1
  273. package/src/Strategy/ChartingModule.js +9 -3
  274. package/src/Strategy/ColumnFilterModule.d.ts +1 -1
  275. package/src/Strategy/ColumnFilterModule.js +31 -15
  276. package/src/Strategy/ColumnInfoModule.js +2 -2
  277. package/src/Strategy/CommentModule.d.ts +1 -1
  278. package/src/Strategy/CommentModule.js +3 -3
  279. package/src/Strategy/CustomSortModule.d.ts +3 -4
  280. package/src/Strategy/CustomSortModule.js +2 -2
  281. package/src/Strategy/DashboardModule.js +1 -1
  282. package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
  283. package/src/Strategy/DataChangeHistoryModule.js +3 -10
  284. package/src/Strategy/DataImportModule.js +3 -3
  285. package/src/Strategy/ExportModule.js +1 -1
  286. package/src/Strategy/Fdc3Module.js +1 -1
  287. package/src/Strategy/FlashingCellModule.d.ts +3 -5
  288. package/src/Strategy/FlashingCellModule.js +3 -3
  289. package/src/Strategy/FormatColumnModule.d.ts +3 -4
  290. package/src/Strategy/FormatColumnModule.js +4 -2
  291. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  292. package/src/Strategy/FreeTextColumnModule.js +2 -2
  293. package/src/Strategy/GridInfoModule.js +2 -2
  294. package/src/Strategy/Interface/IModule.d.ts +7 -3
  295. package/src/Strategy/LayoutModule.js +11 -11
  296. package/src/Strategy/NoteModule.d.ts +1 -1
  297. package/src/Strategy/NoteModule.js +3 -3
  298. package/src/Strategy/PlusMinusModule.d.ts +3 -4
  299. package/src/Strategy/PlusMinusModule.js +2 -2
  300. package/src/Strategy/QuickSearchModule.d.ts +2 -0
  301. package/src/Strategy/QuickSearchModule.js +9 -0
  302. package/src/Strategy/ScheduleModule.d.ts +3 -4
  303. package/src/Strategy/ScheduleModule.js +2 -2
  304. package/src/Strategy/SettingsPanelModule.js +1 -1
  305. package/src/Strategy/ShortcutModule.d.ts +3 -4
  306. package/src/Strategy/ShortcutModule.js +2 -2
  307. package/src/Strategy/StatusBarModule.d.ts +3 -2
  308. package/src/Strategy/StatusBarModule.js +6 -3
  309. package/src/Strategy/StyledColumnModule.d.ts +3 -4
  310. package/src/Strategy/StyledColumnModule.js +2 -2
  311. package/src/Strategy/SystemStatusModule.js +2 -2
  312. package/src/Strategy/TeamSharingModule.d.ts +1 -1
  313. package/src/Strategy/TeamSharingModule.js +5 -2
  314. package/src/Strategy/ToolPanelModule.d.ts +1 -1
  315. package/src/Strategy/ToolPanelModule.js +1 -4
  316. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.d.ts +5 -0
  317. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +12 -0
  318. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
  319. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  320. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -0
  321. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  322. package/src/Utilities/Extensions/ArrayExtensions.js +62 -13
  323. package/src/Utilities/ObjectFactory.js +3 -2
  324. package/src/Utilities/Services/AnnotationsService.js +1 -1
  325. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  326. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  327. package/src/Utilities/Services/ModuleService.js +19 -7
  328. package/src/Utilities/getScopeViewItems.js +5 -2
  329. package/src/View/AdaptableView.js +3 -1
  330. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  331. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  332. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  333. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  334. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  335. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  336. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  337. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  338. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  339. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  340. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  341. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  342. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  343. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  344. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  345. package/src/View/Components/ColumnFilter/utils.js +6 -1
  346. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  347. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  348. package/src/View/Components/NewScopeComponent.js +5 -1
  349. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -6
  350. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  351. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  352. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  353. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  354. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  355. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  356. package/src/View/Dashboard/Dashboard.js +2 -2
  357. package/src/View/Dashboard/DashboardPopup.js +3 -1
  358. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  359. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  360. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +59 -22
  361. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +4 -0
  362. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -40
  363. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +13 -12
  364. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +8 -0
  365. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +31 -0
  366. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +18 -4
  367. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  368. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -1
  369. package/src/View/Layout/TransposedPopup.js +2 -2
  370. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  371. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  372. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  373. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  374. package/src/View/Theme/ThemeSelector.js +1 -1
  375. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  376. package/src/agGrid/AdaptableAgGrid.js +256 -218
  377. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  378. package/src/agGrid/AdaptableFilterHandler.js +61 -0
  379. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  380. package/src/agGrid/AgGridAdapter.js +13 -46
  381. package/src/agGrid/AgGridColumnAdapter.d.ts +3 -3
  382. package/src/agGrid/AgGridColumnAdapter.js +86 -40
  383. package/src/agGrid/AgGridExportAdapter.js +1 -1
  384. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  385. package/src/agGrid/AgGridFilterAdapter.js +48 -0
  386. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  387. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
  388. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  389. package/src/agGrid/AgGridModulesAdapter.js +66 -0
  390. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  391. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  392. package/src/components/Dialog/index.js +1 -1
  393. package/src/components/Dropdown/Arrows.js +2 -2
  394. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  395. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +2 -2
  396. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
  397. package/src/components/FileDroppable/index.js +1 -1
  398. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  399. package/src/components/OverlayTrigger/index.js +1 -1
  400. package/src/components/Select/Select.d.ts +1 -1
  401. package/src/components/Select/Select.js +116 -24
  402. package/src/components/icons/DefaultIcon.d.ts +0 -1
  403. package/src/components/icons/DefaultIcon.js +0 -6
  404. package/src/env.js +2 -2
  405. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  406. package/src/layout-manager/src/index.d.ts +11 -3
  407. package/src/layout-manager/src/index.js +302 -87
  408. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  409. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  410. package/src/metamodel/adaptable.metamodel.d.ts +172 -20
  411. package/src/metamodel/adaptable.metamodel.js +1 -1
  412. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  413. package/src/migration/VersionUpgrade17.js +1 -1
  414. package/src/migration/VersionUpgrade20.js +1 -0
  415. package/src/migration/VersionUpgrade21.d.ts +6 -0
  416. package/src/migration/VersionUpgrade21.js +24 -0
  417. package/src/types.d.ts +8 -9
  418. package/tsconfig.esm.tsbuildinfo +1 -1
  419. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  420. package/src/agGrid/FilterWrapper.d.ts +0 -2
  421. package/src/agGrid/FilterWrapper.js +0 -131
  422. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  423. package/src/agGrid/agGridModules.d.ts +0 -3
  424. package/src/agGrid/agGridModules.js +0 -15
  425. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  426. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
  427. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -0,0 +1,18 @@
1
+ import { DoesFilterPassParams, FilterHandler, FilterHandlerParams } from 'ag-grid-enterprise';
2
+ import { AdaptableApi } from '../Api/AdaptableApi';
3
+ import { ColumnSetupInfo } from '../AdaptableState/Common/ColumnSetupInfo';
4
+ import { InFilterValue } from '../AdaptableOptions/FilterOptions';
5
+ export declare class AdaptableFilterHandler implements FilterHandler {
6
+ private adaptableApi;
7
+ readonly colId: string;
8
+ private filterDisplayValues;
9
+ constructor(adaptableApi: AdaptableApi, columnSetup: ColumnSetupInfo);
10
+ doesFilterPass(params: DoesFilterPassParams): boolean;
11
+ getFilterDisplayValues(currentSearchValue: string): Promise<InFilterValue[]>;
12
+ onNewRowsLoaded(): void;
13
+ onAnyFilterChanged(): void;
14
+ resetFilterDisplayValues(): void;
15
+ refreshFilterDisplayValues(): Promise<InFilterValue<any>[]>;
16
+ refresh(params: FilterHandlerParams<any, any, any, any>): void;
17
+ destroy(): void;
18
+ }
@@ -0,0 +1,61 @@
1
+ export class AdaptableFilterHandler {
2
+ constructor(adaptableApi, columnSetup) {
3
+ this.adaptableApi = adaptableApi;
4
+ this.colId = columnSetup.colId;
5
+ }
6
+ doesFilterPass(params) {
7
+ try {
8
+ const rowNode = params.node;
9
+ // first assess if the Row is filterable - if not, then return true so it always appears in Grid
10
+ const isRowFilterable = this.adaptableApi.gridApi.internalApi.isRowFilterable(rowNode);
11
+ if (!isRowFilterable) {
12
+ return true;
13
+ }
14
+ const columnFilters = this.adaptableApi.filterApi.columnFilterApi
15
+ .getActiveColumnFilters()
16
+ .filter((columnFilter) => this.adaptableApi.filterApi.columnFilterApi.isColumnFilterActive(columnFilter))
17
+ .filter((columnFilter) => columnFilter.ColumnId === this.colId)
18
+ .filter((columnFilter) => {
19
+ const shouldEvaluateFilterOnClient = this.adaptableApi.expressionApi.internalApi.shouldEvaluatePredicatesInAdaptableQL('ColumnFilter', columnFilter, columnFilter.Predicates);
20
+ return shouldEvaluateFilterOnClient;
21
+ });
22
+ const anyFilterFailed = columnFilters.some((columnFilter) => !this.adaptableApi.filterApi.columnFilterApi.internalApi.evaluateColumnFilter(columnFilter, rowNode));
23
+ return anyFilterFailed ? false : true;
24
+ }
25
+ catch (ex) {
26
+ this.adaptableApi.consoleError(ex);
27
+ return false;
28
+ }
29
+ }
30
+ getFilterDisplayValues(currentSearchValue) {
31
+ if (!this.filterDisplayValues) {
32
+ this.filterDisplayValues =
33
+ this.adaptableApi.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn({
34
+ columnId: this.colId,
35
+ currentSearchValue,
36
+ });
37
+ }
38
+ return this.filterDisplayValues;
39
+ }
40
+ onNewRowsLoaded() {
41
+ this.resetFilterDisplayValues();
42
+ }
43
+ onAnyFilterChanged() {
44
+ this.resetFilterDisplayValues();
45
+ }
46
+ resetFilterDisplayValues() {
47
+ // Reset the filter display values manually
48
+ this.filterDisplayValues = null;
49
+ }
50
+ async refreshFilterDisplayValues() {
51
+ this.resetFilterDisplayValues();
52
+ return this.getFilterDisplayValues('');
53
+ }
54
+ refresh(params) {
55
+ // No specific refresh logic needed for this handler
56
+ // The filter display values will be reset on new rows loaded or any filter changed
57
+ }
58
+ destroy() {
59
+ this.filterDisplayValues = null;
60
+ }
61
+ }
@@ -1,4 +1,4 @@
1
- import { ColDef, ColGroupDef, Column, GridApi, GridOptions, IRowNode, ManagedGridOptionKey, ManagedGridOptions, Module, ModuleName } from 'ag-grid-enterprise';
1
+ import { ColDef, ColGroupDef, Column, GridApi, GridOptions, IRowNode, ManagedGridOptionKey, ManagedGridOptions, Module } from 'ag-grid-enterprise';
2
2
  import { AdaptableAgGrid } from './AdaptableAgGrid';
3
3
  import { AdaptableColumn, AdaptableColumnGroup } from '../AdaptableState/Common/AdaptableColumn';
4
4
  import { SelectedCellInfo } from '../AdaptableState/Selection/SelectedCellInfo';
@@ -9,8 +9,8 @@ export declare class AgGridAdapter {
9
9
  private DANGER_USE_GETTER_gridApi;
10
10
  private DANGER_gridApi_from_args;
11
11
  private DANGER_updateGridOptionsMonkeyPatcher;
12
- private DANGER_doAggregateFiltersPassMonkeyPatcher;
13
- private DANGER_isAggregateFilterPresentMonkeyPatcher;
12
+ private DANGER_doFiltersPassMonkeyPatcher;
13
+ private DANGER_isAggFilterPresentMonkeyPatcher;
14
14
  initialGridOptions: GridOptions;
15
15
  private _agGridId;
16
16
  constructor(_adaptableInstance: AdaptableAgGrid, config?: {
@@ -28,9 +28,6 @@ export declare class AgGridAdapter {
28
28
  monkeyPatchingAggColumnFilters(): void;
29
29
  private DANGER_getPrivateAgGridBeans;
30
30
  DANGER_getLiveGridOptions(): GridOptions<any>;
31
- isAgGridModuleRegistered(moduleName: ModuleName): boolean;
32
- getAgGridRegisteredModules(): Module[];
33
- getAgGridRegisteredModuleNames(): ModuleName[];
34
31
  getAgGridRootElement(): HTMLElement;
35
32
  /**
36
33
  * When AG Grid is rendered the first time, the AG GridApi is not yet set in the Adaptable context (as it's set only AFTER the grid is fully initialised)
@@ -42,7 +39,6 @@ export declare class AgGridAdapter {
42
39
  getGridOption<Key extends keyof GridOptions>(key: Key): GridOptions[Key];
43
40
  setGridOption<Key extends ManagedGridOptionKey>(key: Key, value: GridOptions[Key]): void;
44
41
  getUserGridOptionsProperty<T extends keyof GridOptions>(propertyName: T): GridOptions[T];
45
- updateColumnFilterActiveState(): void;
46
42
  getColumnDefinitionsInclSpecialColumns(agGridColDefs?: GridOptions['columnDefs']): GridOptions['columnDefs'];
47
43
  private enhanceColDefsWithSpecialColumns;
48
44
  private getSpecialColDefs;
@@ -4,7 +4,6 @@ import { ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME } from '../Utilities/Constan
4
4
  import { createUuid } from '../AdaptableState/Uuid';
5
5
  import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
6
6
  import * as ModuleConstants from '../Utilities/Constants/ModuleConstants';
7
- import { ALL_AG_GRID_MODULES } from './agGridModules';
8
7
  import { agGridDataTypeDefinitions, ALL_ADAPTABLE_DATA_TYPES } from './agGridDataTypeDefinitions';
9
8
  import { isPivotGrandTotal } from '../Api/Implementation/ColumnApiImpl';
10
9
  import { isPivotColumnTotal } from '../layout-manager/src/isPivotColumnTotal';
@@ -16,8 +15,6 @@ export class AgGridAdapter {
16
15
  constructor(_adaptableInstance, config) {
17
16
  this._adaptableInstance = _adaptableInstance;
18
17
  const columnApiModuleReference = config?.getAgGridColumnApiModuleReference?.() ?? getColumnApiModule();
19
- const beans = columnApiModuleReference?.beans;
20
- console.log(beans?.length);
21
18
  const ColumnDefFactory_Prototype = columnApiModuleReference?.beans?.[0]?.prototype;
22
19
  if (!ColumnDefFactory_Prototype) {
23
20
  console.error(`CRITICAL: could not get hold of AG Grid beans, this should never happen!`);
@@ -40,8 +37,8 @@ export class AgGridAdapter {
40
37
  this.DANGER_gridApi_from_args = null;
41
38
  this.DANGER_USE_GETTER_gridApi = null;
42
39
  this.DANGER_updateGridOptionsMonkeyPatcher = null;
43
- this.DANGER_doAggregateFiltersPassMonkeyPatcher = null;
44
- this.DANGER_isAggregateFilterPresentMonkeyPatcher = null;
40
+ this.DANGER_doFiltersPassMonkeyPatcher = null;
41
+ this.DANGER_isAggFilterPresentMonkeyPatcher = null;
45
42
  this._adaptableInstance = null;
46
43
  }
47
44
  get adaptableOptions() {
@@ -126,7 +123,13 @@ export class AgGridAdapter {
126
123
  // monkey patch ColumnFilterService.doAggregateFiltersPass because currently Adaptable does NOT override the ColumnFilters
127
124
  // (it uses the `doesExternalFilterPass` to evaluate the filters on the client side)
128
125
  // #doAggregateFiltersPassMonkeyPatcher
129
- this.DANGER_doAggregateFiltersPassMonkeyPatcher = function (rowNode, filterToSkip) {
126
+ const original_doFilterPass = agGridColumnFilterService.doFiltersPass;
127
+ this.DANGER_doFiltersPassMonkeyPatcher = function (rowNode, colIdToSkip, targetAggregates) {
128
+ if (!targetAggregates) {
129
+ // if targetAggregates is not set, we are not in the aggregation phase
130
+ // so we can use the original doFiltersPass
131
+ return original_doFilterPass.call(this, rowNode, colIdToSkip);
132
+ }
130
133
  if (!self.adaptableApi.layoutApi.isCurrentLayoutPivot()) {
131
134
  // should NEVER happen
132
135
  return true;
@@ -153,14 +156,12 @@ export class AgGridAdapter {
153
156
  }
154
157
  return true;
155
158
  };
156
- agGridColumnFilterService.doAggregateFiltersPass =
157
- this.DANGER_doAggregateFiltersPassMonkeyPatcher;
158
- this.DANGER_isAggregateFilterPresentMonkeyPatcher = function () {
159
+ agGridColumnFilterService.doFiltersPass = this.DANGER_doFiltersPassMonkeyPatcher;
160
+ this.DANGER_isAggFilterPresentMonkeyPatcher = function () {
159
161
  const columnFilters = self.adaptableApi.filterApi.columnFilterApi.getActiveColumnFilters();
160
162
  return columnFilters.some((colFilter) => self.adaptableApi.columnApi.isPivotResultColumn(colFilter.ColumnId));
161
163
  };
162
- agGridColumnFilterService.isAggregateFilterPresent =
163
- this.DANGER_isAggregateFilterPresentMonkeyPatcher;
164
+ agGridColumnFilterService.isAggFilterPresent = this.DANGER_isAggFilterPresentMonkeyPatcher;
164
165
  }
165
166
  DANGER_getPrivateAgGridBeans() {
166
167
  const beans = DANGER_AG_GRID_BEANS_MAP[this._agGridId];
@@ -172,27 +173,6 @@ export class AgGridAdapter {
172
173
  DANGER_getLiveGridOptions() {
173
174
  return this.DANGER_getPrivateAgGridBeans()?.gridOptions;
174
175
  }
175
- isAgGridModuleRegistered(moduleName) {
176
- const agGridOptionsService = this.DANGER_getPrivateAgGridBeans()?.gos;
177
- if (!agGridOptionsService) {
178
- this.logger.consoleError('Could not get hold of GridOptionsService! This is a critical error and will prevent Adaptable from working correctly.');
179
- return false;
180
- }
181
- return agGridOptionsService.isModuleRegistered(moduleName);
182
- }
183
- getAgGridRegisteredModules() {
184
- const allModulesSet = ALL_AG_GRID_MODULES;
185
- const registeredModules = [];
186
- allModulesSet.forEach((module) => {
187
- if (this.isAgGridModuleRegistered(module.moduleName)) {
188
- registeredModules.push(module);
189
- }
190
- });
191
- return registeredModules;
192
- }
193
- getAgGridRegisteredModuleNames() {
194
- return this.getAgGridRegisteredModules().map((module) => module.moduleName);
195
- }
196
176
  getAgGridRootElement() {
197
177
  return this.DANGER_getPrivateAgGridBeans()?.eGridDiv;
198
178
  }
@@ -234,19 +214,6 @@ export class AgGridAdapter {
234
214
  getUserGridOptionsProperty(propertyName) {
235
215
  return this.agGridOptionsService.getUserGridOptionsProperty(propertyName);
236
216
  }
237
- updateColumnFilterActiveState() {
238
- const filteredCols = new Set();
239
- const columnFilters = this.adaptableApi.filterApi.columnFilterApi.getActiveColumnFilters();
240
- columnFilters?.forEach?.((columnFilter) => {
241
- if (this.adaptableApi.filterApi.columnFilterApi.isColumnFilterActive(columnFilter)) {
242
- filteredCols.add(columnFilter.ColumnId);
243
- }
244
- });
245
- const agGridApi = this.getAgGridApi();
246
- (agGridApi.getColumns() || []).forEach((col) => {
247
- col.filterActive = filteredCols.has(col.getColId());
248
- });
249
- }
250
217
  getColumnDefinitionsInclSpecialColumns(agGridColDefs) {
251
218
  const allColDefs = this.enhanceColDefsWithSpecialColumns(agGridColDefs ?? this.getAgGridApi().getColumnDefs());
252
219
  return allColDefs;
@@ -378,7 +345,7 @@ export class AgGridAdapter {
378
345
  deriveSelectedRowInfoFromAgGrid() {
379
346
  const nodes = this.getAgGridApi().getSelectedNodes();
380
347
  const selectedRows = [];
381
- if (this.getAgGridApi().isPivotMode()) {
348
+ if (this._adaptableInstance.isInPivotMode()) {
382
349
  // dont perform row selection in pivot mode
383
350
  return undefined;
384
351
  }
@@ -1,6 +1,6 @@
1
1
  import { AdaptableAgGrid } from './AdaptableAgGrid';
2
2
  import { ColumnSetupInfo } from '../AdaptableState/Common/ColumnSetupInfo';
3
- import { ColDef, ColGroupDef, Column, GridOptions } from 'ag-grid-enterprise';
3
+ import { ColDef, ColGroupDef, Column } from 'ag-grid-enterprise';
4
4
  import { AdaptableColumnDataType } from '../AdaptableState/Common/AdaptableColumn';
5
5
  import { AdaptableVariant } from '../AdaptableInterfaces/IAdaptable';
6
6
  export declare function getEditorForColumnDataType(columnDataType: AdaptableColumnDataType, variant: AdaptableVariant): ColDef['cellEditor'];
@@ -29,9 +29,8 @@ export declare class AgGridColumnAdapter {
29
29
  private setupColumnAllowedAggFuncs;
30
30
  private setupColumnType;
31
31
  private setupColumnCellDataType;
32
- setupColumnHeader({ col, abColumn }: ColumnSetupInfo): void;
32
+ setupColumnHeader({ col }: ColumnSetupInfo): void;
33
33
  private setupColumnFilter;
34
- setupColumnFloatingFilterTemporarily(initialGridOptions: GridOptions): void;
35
34
  private setupColumnFloatingFilter;
36
35
  private setupColumnValueFormatter;
37
36
  private setupColumnEditable;
@@ -68,4 +67,5 @@ export declare class AgGridColumnAdapter {
68
67
  private getFlashingCellStyle;
69
68
  private getCellHighlightStyle;
70
69
  isColGroupDef(columnDefinition: ColDef | ColGroupDef): columnDefinition is ColGroupDef;
70
+ private getRelevantFormatColumnHeaderStyles;
71
71
  }
@@ -1,7 +1,5 @@
1
1
  import kebabCase from 'lodash/kebabCase';
2
2
  import merge from 'lodash/merge';
3
- import { FilterWrapperFactory } from './FilterWrapper';
4
- import { FloatingFilterWrapperFactory } from './FloatingFilterWrapper';
5
3
  import { convertAdaptableStyleToCSS, getVariableColor, normalizeStyleForAgGrid, } from '../Utilities/Helpers/StyleHelper';
6
4
  import StringExtensions from '../Utilities/Extensions/StringExtensions';
7
5
  import { ACTION_COLUMN_TYPE, CALCULATED_COLUMN_TYPE, FDC3_COLUMN_TYPE, FREE_TEXT_COLUMN_TYPE, } from '../AdaptableState/Common/AdaptableColumn';
@@ -15,6 +13,9 @@ import { AdaptableDateEditor, AdaptableReactDateEditor } from './editors/Adaptab
15
13
  import { AgGridExportAdapter } from './AgGridExportAdapter';
16
14
  import { AdaptableHelper } from '../Utilities/Helpers/AdaptableHelper';
17
15
  import { isProvidedByAdaptable } from '../Utilities/adaptableOverrideCheck';
16
+ import { AdaptableFilterHandler } from './AdaptableFilterHandler';
17
+ import { AgGridFilterAdapterFactory } from './AgGridFilterAdapter';
18
+ import { AgGridFloatingFilterAdapterFactory } from './AgGridFloatingFilterAdapter';
18
19
  export function getEditorForColumnDataType(columnDataType, variant) {
19
20
  if (columnDataType === 'number') {
20
21
  return variant === 'react' ? AdaptableReactNumberEditor : AdaptableNumberEditor;
@@ -100,7 +101,7 @@ export class AgGridColumnAdapter {
100
101
  !this.adaptableApi.columnApi.isSelectionColumn(colId));
101
102
  }
102
103
  setupColumns() {
103
- const pivotMode = this.agGridApi.isPivotMode();
104
+ const pivotMode = this.adaptableInstance.isInPivotMode();
104
105
  let cols = pivotMode
105
106
  ? // for pivot mode, we take only the initial columns
106
107
  this.agGridApi.getColumns()
@@ -134,8 +135,8 @@ export class AgGridColumnAdapter {
134
135
  this.setupColumnCellClass(colSetupInfo);
135
136
  this.setupColumnHeaderStyle(colSetupInfo);
136
137
  this.setupColumnHeaderClass(colSetupInfo);
137
- this.setupColumnTooltipValueGetter(colSetupInfo);
138
138
  this.setupColumnValueGetter(colSetupInfo);
139
+ this.setupColumnTooltipValueGetter(colSetupInfo);
139
140
  this.setupColumnFilter(colSetupInfo);
140
141
  this.setupColumnFloatingFilter(colSetupInfo);
141
142
  this.setupColumnValueFormatter(colSetupInfo);
@@ -238,6 +239,18 @@ export class AgGridColumnAdapter {
238
239
  return baseHeaderClass;
239
240
  }
240
241
  const target = 'columnHeader';
242
+ // handle special case of headers with text alignment
243
+ // in this case, we add a specific class to the header
244
+ // see #header_text_align
245
+ const formatColumnWithTextAlignment = this.getRelevantFormatColumnHeaderStyles(abColumn)
246
+ // we take the first one only, even if multiple are defined
247
+ .find((fc) => fc.CellAlignment != undefined);
248
+ if (formatColumnWithTextAlignment) {
249
+ baseHeaderClass = [
250
+ ...baseHeaderClass,
251
+ `ab-header__align-${formatColumnWithTextAlignment.CellAlignment.toLowerCase()}`,
252
+ ];
253
+ }
241
254
  const formatColumns = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnWithStyleClassNameForColumn(abColumn, {
242
255
  target,
243
256
  });
@@ -286,7 +299,11 @@ export class AgGridColumnAdapter {
286
299
  return {};
287
300
  }
288
301
  const isQuickSearchActive = hasQuickSearchStyle && this.isQuickSearchActive(gridCell);
289
- const isCurrentMatch = this.adaptableApi.agGridApi.findGetActiveMatch()?.node === params.node;
302
+ const isQuickSearchAvailable = this.adaptableApi.internalApi
303
+ .getModuleService()
304
+ .isAdapTableModulePresent('QuickSearch');
305
+ const isCurrentMatch = isQuickSearchAvailable &&
306
+ this.adaptableApi.agGridApi.findGetActiveMatch()?.node === params.node;
290
307
  const textStyleToApply = isCurrentMatch
291
308
  ? { ...textMatchStyle, ...currentTextMatchStyle }
292
309
  : textMatchStyle;
@@ -358,10 +375,18 @@ export class AgGridColumnAdapter {
358
375
  }
359
376
  setupColumnCellEditor({ colId, col, colDef, abColumn }) {
360
377
  const shouldShowSelectCellEditor = this.adaptableApi.userInterfaceApi.internalApi.shouldShowSelectCellEditor(abColumn);
361
- const hasRichSelectCellEditor = this.adaptableInstance.agGridAdapter.isAgGridModuleRegistered('RichSelect');
378
+ const hasRichSelectCellEditor = this.adaptableApi.internalApi
379
+ .getAgGridModulesAdapter()
380
+ .isAgGridModuleRegistered('RichSelectModule');
362
381
  this.setColDefProperty(col, 'cellEditor', () => {
363
382
  if (shouldShowSelectCellEditor) {
364
- return hasRichSelectCellEditor ? 'agRichSelectCellEditor' : 'agSelectCellEditor';
383
+ if (hasRichSelectCellEditor) {
384
+ return 'agRichSelectCellEditor';
385
+ }
386
+ else {
387
+ this.adaptableApi.logWarn(`Cannot show Select Editor as missing required AG Grid module: RichSelect`);
388
+ return colDef.cellEditor;
389
+ }
365
390
  }
366
391
  else {
367
392
  if (colDef.cellEditor) {
@@ -503,16 +528,19 @@ export class AgGridColumnAdapter {
503
528
  return original_cellDataType ?? true;
504
529
  });
505
530
  }
506
- setupColumnHeader({ col, abColumn }) {
531
+ setupColumnHeader({ col }) {
507
532
  this.setColDefProperty(col, 'headerValueGetter', (original_headerValueGetter) => {
533
+ // see #customize_header
508
534
  if (!isProvidedByAdaptable(original_headerValueGetter)) {
509
- this.adaptableApi.logWarn(`colDef.headerValueGetter is defined for column '${col.getColId()}', and overrides the Adaptable custom header mechanism! We recommend using a ColumnOptions.tableColumnHeader instead!`);
535
+ this.adaptableApi.logWarn(`colDef.headerValueGetter is defined for column '${col.getColId()}', and overrides the Adaptable custom header mechanism! We recommend using a ColumnOptions.columnHeader instead!`);
510
536
  }
511
537
  return original_headerValueGetter;
512
538
  });
513
539
  }
514
- setupColumnFilter({ col, colDef }) {
515
- if (!this.adaptableOptions.filterOptions.useAdaptableFiltering) {
540
+ setupColumnFilter(columnSetup) {
541
+ const { col, colDef, abColumn, colId } = columnSetup;
542
+ const useAdaptableFilter = this.adaptableOptions.filterOptions.useAdaptableFiltering;
543
+ if (!useAdaptableFilter) {
516
544
  return;
517
545
  }
518
546
  // setup Auto Group Column Filter
@@ -539,29 +567,38 @@ export class AgGridColumnAdapter {
539
567
  return;
540
568
  }
541
569
  // setup "normal" column filter
542
- this.setColDefProperty(col, 'filter', () => {
570
+ this.setColDefProperty(col, 'filter', (original_filter) => {
543
571
  if (!colDef.filter) {
544
572
  return;
545
573
  }
546
- this.agGridApi.destroyFilter(col);
547
- return FilterWrapperFactory(this.adaptableInstance);
548
- });
549
- }
550
- setupColumnFloatingFilterTemporarily(initialGridOptions) {
551
- if (!this.adaptableOptions.filterOptions.useAdaptableFiltering) {
552
- return;
553
- }
554
- initialGridOptions.columnDefs
555
- ?.filter((colDef) => !this.isColGroupDef(colDef))
556
- .map((colDef) => {
557
- const isFloatingFilterEnabled = initialGridOptions.defaultColDef?.floatingFilter || colDef.floatingFilter;
558
- if (isFloatingFilterEnabled) {
559
- colDef.floatingFilterComponent = FloatingFilterWrapperFactory(this.adaptableInstance);
574
+ if (!useAdaptableFilter) {
575
+ return original_filter;
560
576
  }
577
+ if (useAdaptableFilter &&
578
+ typeof original_filter !== 'boolean' &&
579
+ typeof original_filter?.handler !== 'function' &&
580
+ !this.adaptableInstance.isInPivotMode()) {
581
+ this.adaptableApi.consoleError(`Column '${colId}' has a custom filter defined in colDef.filter, but Adaptable Filtering accepts only the TRUE/FALSE values!`);
582
+ return false;
583
+ }
584
+ return {
585
+ component: AgGridFilterAdapterFactory(this.adaptableInstance),
586
+ // doesFilterPass,
587
+ handler: (params) => new AdaptableFilterHandler(this.adaptableApi, columnSetup),
588
+ };
561
589
  });
562
590
  }
563
591
  setupColumnFloatingFilter({ col, colDef }) {
564
- const isFloatingFilterDisabled = !colDef.floatingFilter ||
592
+ const userProvidedFilterProp = this.getUserColDefProperty(col.getColId(), 'filter');
593
+ const hasInvalidFilterProp = typeof userProvidedFilterProp !== 'boolean' &&
594
+ typeof userProvidedFilterProp?.handler !== 'function' &&
595
+ !this.adaptableInstance.isInPivotMode();
596
+ if (hasInvalidFilterProp) {
597
+ // warning is logged in the 'setupColumnFilter' method
598
+ return false;
599
+ }
600
+ const isFloatingFilterDisabled = !colDef.filter ||
601
+ !colDef.floatingFilter ||
565
602
  !this.adaptableOptions.filterOptions.useAdaptableFiltering ||
566
603
  !this.adaptableOptions.filterOptions.columnFilterOptions.showQuickFilter;
567
604
  if (this.adaptableApi.columnApi.isAutoRowGroupColumn(col.getColId())) {
@@ -583,13 +620,13 @@ export class AgGridColumnAdapter {
583
620
  if (isFloatingFilterDisabled) {
584
621
  return;
585
622
  }
586
- return FloatingFilterWrapperFactory(this.adaptableInstance);
623
+ return AgGridFloatingFilterAdapterFactory(this.adaptableInstance);
587
624
  });
588
625
  this.setColDefProperty(col, 'floatingFilter', (original_floatingFilter) => {
589
626
  if (isFloatingFilterDisabled) {
590
627
  return;
591
628
  }
592
- return FloatingFilterWrapperFactory(this.adaptableInstance);
629
+ return AgGridFloatingFilterAdapterFactory(this.adaptableInstance);
593
630
  });
594
631
  this.setColDefProperty(col, 'suppressFloatingFilterButton', () => {
595
632
  return !isFloatingFilterDisabled;
@@ -597,7 +634,7 @@ export class AgGridColumnAdapter {
597
634
  }
598
635
  setupColumnValueFormatter({ col, abColumn }) {
599
636
  this.setColDefProperty(col, 'valueFormatter', (userPropertyValue) => {
600
- const activeFormatColumnsWithDisplayFormat = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
637
+ const activeFormatColumnsWithDisplayFormat = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn, { target: 'cell' });
601
638
  if (!activeFormatColumnsWithDisplayFormat.length) {
602
639
  return;
603
640
  }
@@ -810,6 +847,12 @@ export class AgGridColumnAdapter {
810
847
  return true;
811
848
  }
812
849
  isQuickSearchActive(gridCell) {
850
+ const isQuickSearchAvailable = this.adaptableApi.internalApi
851
+ .getModuleService()
852
+ .isAdapTableModulePresent('QuickSearch');
853
+ if (!isQuickSearchAvailable) {
854
+ return false;
855
+ }
813
856
  const quickSearchValue = this.adaptableApi.quickSearchApi.getQuickSearchValue();
814
857
  if (!quickSearchValue) {
815
858
  return false;
@@ -887,7 +930,7 @@ export class AgGridColumnAdapter {
887
930
  : undefined;
888
931
  }
889
932
  getNoteCellClassName(gridCell, params) {
890
- if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Note')) {
933
+ if (!this.adaptableApi.internalApi.getModuleService().isAdapTableModulePresent('Note')) {
891
934
  return;
892
935
  }
893
936
  if (!this.adaptableApi.noteApi.internalApi.areNotesSupported()) {
@@ -904,7 +947,7 @@ export class AgGridColumnAdapter {
904
947
  return 'ab-Cell-Note';
905
948
  }
906
949
  getCommentCellClassName(gridCell, params) {
907
- if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Comment')) {
950
+ if (!this.adaptableApi.internalApi.getModuleService().isAdapTableModulePresent('Comment')) {
908
951
  return;
909
952
  }
910
953
  if (!this.adaptableApi.commentApi.internalApi.areCommentsSupportedInLayout()) {
@@ -1021,16 +1064,10 @@ export class AgGridColumnAdapter {
1021
1064
  // YET, see https://github.com/AdaptableTools/adaptable/issues/2947#issuecomment-3062304655
1022
1065
  return {};
1023
1066
  }
1024
- const target = 'columnHeader';
1025
- const activeFormatColumnsWithStyle = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithStyleForColumn(column, {
1026
- target,
1027
- });
1028
- if (!activeFormatColumnsWithStyle.length) {
1067
+ const relevantFormatColumnsWithStyle = this.getRelevantFormatColumnHeaderStyles(column);
1068
+ if (!relevantFormatColumnsWithStyle.length) {
1029
1069
  return {};
1030
1070
  }
1031
- const relevantFormatColumnsWithStyle = activeFormatColumnsWithStyle.filter((formatColumn) => {
1032
- return this.adaptableApi.formatColumnApi.internalApi.formatColumnShouldRenderInHeader(formatColumn, column);
1033
- });
1034
1071
  return this.getFormatColumnAdaptableStyle(relevantFormatColumnsWithStyle);
1035
1072
  }
1036
1073
  getStyledColumnStyle(styledColumn, abColumn, params) {
@@ -1164,4 +1201,13 @@ export class AgGridColumnAdapter {
1164
1201
  // @ts-ignore
1165
1202
  return columnDefinition['children'] != null;
1166
1203
  }
1204
+ getRelevantFormatColumnHeaderStyles(column) {
1205
+ return this.adaptableApi.formatColumnApi.internalApi
1206
+ .getFormatColumnsWithStyleForColumn(column, {
1207
+ target: 'columnHeader',
1208
+ })
1209
+ .filter((formatColumn) => {
1210
+ return this.adaptableApi.formatColumnApi.internalApi.formatColumnShouldRenderInHeader(formatColumn, column);
1211
+ });
1212
+ }
1167
1213
  }
@@ -477,7 +477,7 @@ export class AgGridExportAdapter {
477
477
  return memoizedFormatColumns;
478
478
  }
479
479
  const abColumn = getAdaptableColumnWithColumnId(columnId);
480
- const formatColumns = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
480
+ const formatColumns = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn, { target: 'cell' });
481
481
  formatColumnsWithDisplayFormatMemo[columnId] = formatColumns;
482
482
  return formatColumns;
483
483
  };
@@ -0,0 +1,2 @@
1
+ import { AdaptableAgGrid } from './AdaptableAgGrid';
2
+ export declare const AgGridFilterAdapterFactory: (adaptable: AdaptableAgGrid) => any;
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+ import { AdaptableColumnFilter } from '../View/Components/ColumnFilter/AdaptableColumnFilter';
3
+ import { renderWithAdaptableContext } from '../View/renderWithAdaptableContext';
4
+ export const AgGridFilterAdapterFactory = (adaptable) => {
5
+ function isFilterActive(colId) {
6
+ // we need this here
7
+ if (adaptable.isDestroyed) {
8
+ return false;
9
+ }
10
+ //make the small filter icon to appear when there is a filter
11
+ return adaptable.api.filterApi.columnFilterApi.isColumnFilterActiveForColumn(colId);
12
+ }
13
+ function getContainerId(colId) {
14
+ return 'filter_' + colId + '_' + adaptable.adaptableOptions.adaptableId;
15
+ }
16
+ return class AgGridFilterAdapter {
17
+ init(params) {
18
+ this.params = params;
19
+ this.column = params.column;
20
+ this.filterContainer = document.createElement('div');
21
+ this.filterContainer.id = getContainerId(this.params.column.getColId());
22
+ }
23
+ getGui() {
24
+ return this.filterContainer;
25
+ }
26
+ refresh(newParams) {
27
+ // always reuse the current instance
28
+ // the filter is refreshed in the underlying React component
29
+ return true;
30
+ }
31
+ afterGuiAttached(params) {
32
+ //we always unmount first so the autofocus from the form works... in other grids we unmount when hidden
33
+ this.unmountReactRoot?.();
34
+ const columnId = this.column.getColId();
35
+ let column = adaptable.api.columnApi.getColumnWithColumnId(columnId);
36
+ if (column) {
37
+ this.unmountReactRoot = adaptable.renderReactRoot(renderWithAdaptableContext(React.createElement(AdaptableColumnFilter, {
38
+ columnId,
39
+ wrapperProps: { p: 2 },
40
+ }), adaptable), this.filterContainer);
41
+ }
42
+ }
43
+ destroy() {
44
+ this.unmountReactRoot?.();
45
+ this.filterContainer = null;
46
+ }
47
+ };
48
+ };
@@ -0,0 +1,2 @@
1
+ import { IAdaptable } from '../AdaptableInterfaces/IAdaptable';
2
+ export declare const AgGridFloatingFilterAdapterFactory: (adaptable: IAdaptable) => any;