@adaptabletools/adaptable-cjs 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 +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 +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 +25 -5
  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 +10 -10
  263. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  264. package/src/Redux/ActionsReducers/StyledColumnRedux.js +15 -1
  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 +16 -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 +2 -1
  321. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  322. package/src/Utilities/Extensions/ArrayExtensions.js +68 -15
  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 +18 -6
  328. package/src/Utilities/getScopeViewItems.js +6 -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 +5 -5
  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 +0 -39
  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 +37 -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 +2 -2
  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 +65 -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 +53 -0
  386. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  387. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +26 -37
  388. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  389. package/src/agGrid/AgGridModulesAdapter.js +70 -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 +4 -4
  396. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +1 -1
  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 +114 -22
  402. package/src/components/icons/DefaultIcon.d.ts +0 -1
  403. package/src/components/icons/DefaultIcon.js +0 -8
  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 +28 -0
  417. package/src/types.d.ts +8 -9
  418. package/tsconfig.cjs.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 -136
  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 -18
  425. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  426. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -21
  427. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -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) => {
@@ -37,8 +37,8 @@ function useDistinctFilterColumnValues(options) {
37
37
  let ignore = false;
38
38
  setIsDistinctColumnValuesLoading(true);
39
39
  let searchValueUsedInFilterValue = false;
40
- api.gridApi.internalApi
41
- .getDistinctFilterDisplayValuesForColumn({
40
+ api.filterApi.columnFilterApi.internalApi
41
+ .getColumnFilterValues({
42
42
  columnId,
43
43
  get currentSearchValue() {
44
44
  searchValueUsedInFilterValue = true;
@@ -1,7 +1,7 @@
1
1
  import { QlLogicalOperator, QlPredicate } from '../../../parser/src/predicate';
2
2
  import * as LayoutRedux from '../../../Redux/ActionsReducers/LayoutRedux';
3
3
  import { AdaptablePredicate, ColumnFilter } from '../../../types';
4
- export declare const useAdaptableFilterWrapper: (columnId: string, handleOnChangeOverride?: (columnFilter: ColumnFilter) => void) => {
4
+ export declare const useAdaptableFilterWrapper: (columnId: string, filterComponent: 'FilterBar' | 'FilterForm', handleOnChangeOverride?: (columnFilter: ColumnFilter) => void) => {
5
5
  qlPredicate: QlPredicate;
6
6
  qlPredicateDefs: import("@adaptabletools/adaptable/src/parser/src/predicate/types").QlPredicateDef[];
7
7
  columnFilter: ColumnFilter;
@@ -10,7 +10,7 @@ const LayoutRedux_1 = require("../../../Redux/ActionsReducers/LayoutRedux");
10
10
  const adaptableQlUtils_1 = require("../../../Utilities/adaptableQlUtils");
11
11
  const AdaptableContext_1 = require("../../AdaptableContext");
12
12
  const utils_1 = require("./utils");
13
- const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
13
+ const useAdaptableFilterWrapper = (columnId, filterComponent, handleOnChangeOverride) => {
14
14
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
15
15
  const dispatch = (0, react_redux_1.useDispatch)();
16
16
  const api = adaptable.api;
@@ -27,7 +27,7 @@ const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
27
27
  return currentLayout?.ColumnFilters?.find((cf) => cf.ColumnId === columnId);
28
28
  }, [currentLayout?.ColumnFilters, columnId]);
29
29
  const qlPredicate = column
30
- ? (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, api)
30
+ ? (0, utils_1.mapColumnFilterToQlPredicate)(columnFilter, column, qlPredicateDefs, columnFilterOptions, filterComponent, api)
31
31
  : null;
32
32
  const handleOnChange = (adaptablePredicate, logic = 'AND') => {
33
33
  // make sure we always have the latest columnFiler
@@ -1,8 +1,8 @@
1
1
  import { QlPredicate, QlPredicateDef } from '../../../parser/src/predicate';
2
- import { AdaptableApi, AdaptableColumn, AdaptablePredicate, AdaptablePredicateDef, ColumnFilter, ColumnFilterOptions, ExpressionFunctionInputType } from '../../../types';
2
+ import { AdaptableApi, AdaptableColumn, AdaptableFilterComponentLocation, AdaptablePredicate, AdaptablePredicateDef, ColumnFilter, ColumnFilterOptions, ExpressionFunctionInputType } from '../../../types';
3
3
  export declare const mapAdaptablePredicateDefToQlPredicateDef: (adaptablePredicateDef: AdaptablePredicateDef, dataType: ExpressionFunctionInputType) => QlPredicateDef;
4
4
  export declare const mapAdaptablePredicateToQlPredicate: (adaptablePredicate: AdaptablePredicate) => QlPredicate;
5
5
  export declare const mapQlPredicateToAdaptablePredicate: (qlPredicate: QlPredicate) => AdaptablePredicate;
6
6
  export declare const qlPredicateToString: (qlPredicate: QlPredicate, predicateDefs: QlPredicateDef[]) => string;
7
7
  export declare const isPredicateEmpty: (predicate: QlPredicate, predicateDef: QlPredicateDef) => boolean;
8
- export declare const mapColumnFilterToQlPredicate: (columnFilter: ColumnFilter, abColumn: AdaptableColumn, qlPredicateDefs: QlPredicateDef[], columnFilterOptions: ColumnFilterOptions, api: AdaptableApi) => QlPredicate;
8
+ export declare const mapColumnFilterToQlPredicate: (columnFilter: ColumnFilter, abColumn: AdaptableColumn, qlPredicateDefs: QlPredicateDef[], columnFilterOptions: ColumnFilterOptions, filterComponent: AdaptableFilterComponentLocation, api: AdaptableApi) => QlPredicate;
@@ -91,7 +91,7 @@ const isPredicateEmpty = (predicate, predicateDef) => {
91
91
  predicate.args.every((arg) => arg == undefined));
92
92
  };
93
93
  exports.isPredicateEmpty = isPredicateEmpty;
94
- const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, api) => {
94
+ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, filterComponent, api) => {
95
95
  const combinator = columnFilter?.PredicatesOperator ?? 'AND';
96
96
  const qlPredicate = {
97
97
  operator: combinator,
@@ -108,6 +108,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
108
108
  if (typeof defaultNumericColumnFilter === 'function') {
109
109
  const context = {
110
110
  column: abColumn,
111
+ filterComponent,
111
112
  ...api.internalApi.buildBaseContext(),
112
113
  };
113
114
  defaultQlNumberPredicate = defaultNumericColumnFilter(context);
@@ -127,6 +128,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
127
128
  if (typeof defaultTextColumnFilter === 'function') {
128
129
  const context = {
129
130
  column: abColumn,
131
+ filterComponent,
130
132
  ...api.internalApi.buildBaseContext(),
131
133
  };
132
134
  defaultQlTextPredicate = defaultTextColumnFilter(context);
@@ -140,12 +142,14 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
140
142
  : { operator: 'Contains', args: [] };
141
143
  break;
142
144
  case 'date':
145
+ case 'dateString':
143
146
  let defaultQlDatePredicate;
144
147
  const defaultDateColumnFilter = columnFilterOptions.defaultDateColumnFilter;
145
148
  if (defaultDateColumnFilter) {
146
149
  if (typeof defaultDateColumnFilter === 'function') {
147
150
  const context = {
148
151
  column: abColumn,
152
+ filterComponent,
149
153
  ...api.internalApi.buildBaseContext(),
150
154
  };
151
155
  defaultQlDatePredicate = defaultDateColumnFilter(context);
@@ -169,6 +173,7 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
169
173
  if (typeof defaultArrayColumnFilter === 'function') {
170
174
  const context = {
171
175
  column: abColumn,
176
+ filterComponent,
172
177
  ...api.internalApi.buildBaseContext(),
173
178
  };
174
179
  defaultQlArrayPredicate = defaultArrayColumnFilter(context);
@@ -112,9 +112,8 @@ const EntityRulesEditor = (props) => {
112
112
  });
113
113
  }
114
114
  };
115
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
116
115
  const filteredPredicateDefs = predicateDefs.filter((def) => {
117
- if (isValuesPredicateDef(def)) {
116
+ if (api.predicateApi.internalApi.IsInorNotInPredicateDef(def)) {
118
117
  return 'ColumnIds' in data.Scope && data.Scope.ColumnIds.length === 1;
119
118
  }
120
119
  return true;
@@ -33,7 +33,7 @@ const ColumnValuesSelect = (props) => {
33
33
  minWidth: `var(--ab-cmp-select-column-menu-${column.columnId}__min-width, var(--ab-cmp-select-column-menu__min-width, 160px))`,
34
34
  };
35
35
  }, [column.columnId]);
36
- const component = (React.createElement(Select_1.Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable: true, closeMenuOnSelect: false, menuStyle: menuStyle, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
36
+ const component = (React.createElement(Select_1.Select, { key: "select", isMulti: true, resizable: true, showHeaderSelectionCheckbox: true, searchable: 'menulist', closeMenuOnSelect: false, menuStyle: menuStyle, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
37
37
  return (React.createElement("div", { className: (0, join_1.default)(baseClassName, props.isLoading && `${baseClassName}--loading`, !value.length && `${baseClassName}--empty`), onKeyDownCapture: (e) => {
38
38
  const event = e.nativeEvent || e;
39
39
  event.stopPropagation = () => {
@@ -14,6 +14,7 @@ const AdaptableFormControlTextClear_1 = require("./Forms/AdaptableFormControlTex
14
14
  const AdaptableContext_1 = require("../AdaptableContext");
15
15
  const ValueSelector_1 = require("./ValueSelector");
16
16
  const AdaptableColumn_1 = require("../../AdaptableState/Common/AdaptableColumn");
17
+ const StringExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/StringExtensions"));
17
18
  const isScopeValid = ({ Scope }) => {
18
19
  const result = [];
19
20
  if (!Scope) {
@@ -46,6 +47,9 @@ const DATA_TYPES_MAP = {
46
47
  value: 'boolean',
47
48
  },
48
49
  };
50
+ const renderDataTypeLabel = (c) => {
51
+ return 'DataType: ' + StringExtensions_1.default.CapitaliseFirstLetter(c);
52
+ };
49
53
  const renderScopeSummary = (scope, labels) => {
50
54
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
51
55
  const scopeApi = adaptable.api.columnScopeApi;
@@ -58,7 +62,7 @@ const renderScopeSummary = (scope, labels) => {
58
62
  columnsInScope.length ? (React.createElement(ValueSelector_1.ValueOptionsTags, { options: columnsInScope, value: columnsInScope.map((c) => c.columnId), toLabel: (c) => c.friendlyName, allowWrap: true, readOnly: true, renderLabel: (c) => React.createElement(OnePageAdaptableWizard_1.SummaryText, { mb: 0 }, c), toIdentifier: (c) => c.columnId })) : null)) : null),
59
63
  React.createElement(rebass_1.Box, null, 'DataTypes' in scope ? (React.createElement(React.Fragment, null,
60
64
  React.createElement(rebass_1.Text, { fontSize: 2, mb: 2 }, labels.scopeDataTypes),
61
- React.createElement(ValueSelector_1.ValueOptionsTags, { readOnly: true, options: scope.DataTypes, value: scope.DataTypes, toLabel: (c) => c, allowWrap: true, renderLabel: (c) => React.createElement(rebass_1.Text, { fontSize: 2 }, `DataType: ${c}`), toIdentifier: (c) => c }))) : null)));
65
+ React.createElement(ValueSelector_1.ValueOptionsTags, { readOnly: true, options: scope.DataTypes, value: scope.DataTypes, toLabel: (c) => c, allowWrap: true, renderLabel: (c) => React.createElement(rebass_1.Text, { fontSize: 2 }, renderDataTypeLabel(c)), toIdentifier: (c) => c }))) : null)));
62
66
  };
63
67
  exports.renderScopeSummary = renderScopeSummary;
64
68
  const DATA_TYPES_OPTIONS = Object.values(DATA_TYPES_MAP);
@@ -117,16 +117,16 @@ const AdaptablePopupModuleView = (props) => {
117
117
  .getModuleService()
118
118
  .getModuleById(props.module.moduleInfo.ModuleName);
119
119
  const dispatch = (0, react_redux_1.useDispatch)();
120
- const showLayoutNotAssociatedObjects = (0, react_redux_1.useSelector)((state) => state.Internal.Layout.ShowLayoutNotAssociatedObjects);
121
- const toggleButtonShowLayoutAssociatedObjects = () => {
122
- if (!adaptableModule?.canBeAssociatedWithLayouts()) {
120
+ const showLayoutNonExtendedObjects = (0, react_redux_1.useSelector)((state) => state.Internal.Layout.showLayoutNonExtendedObjects);
121
+ const toggleButtonShowLayoutExtensionObjects = () => {
122
+ if (!adaptableModule?.containsLayoutExtensions()) {
123
123
  return;
124
124
  }
125
125
  if (!props.api.layoutApi.internalApi.hasLayoutSpecificObjects()) {
126
126
  return;
127
127
  }
128
128
  return (React.createElement(rebass_1.Flex, { justifyContent: "flex-start" },
129
- React.createElement(CheckBox_1.CheckBox, { padding: 0, margin: 0, checked: showLayoutNotAssociatedObjects, onChange: (checked) => dispatch((0, InternalRedux_1.LayoutShowNotAssociatedObjects)(checked)) },
129
+ React.createElement(CheckBox_1.CheckBox, { padding: 0, margin: 0, checked: showLayoutNonExtendedObjects, onChange: (checked) => dispatch((0, InternalRedux_1.LayoutShowNonExtendedObjects)(checked)) },
130
130
  "Show ",
131
131
  moduleInfo.FriendlyName,
132
132
  "s not available in current Layout")));
@@ -136,7 +136,7 @@ const AdaptablePopupModuleView = (props) => {
136
136
  " ",
137
137
  newButton), infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed() },
138
138
  moduleViewProperties.HeaderComponent && React.createElement(moduleViewProperties.HeaderComponent, null),
139
- toggleButtonShowLayoutAssociatedObjects(),
139
+ toggleButtonShowLayoutExtensionObjects(),
140
140
  items?.length ? (React.createElement(AdaptableObjectList_1.AdaptableObjectList, { module: props.module, items: items })) : (React.createElement(EmptyContent_1.default, null, emptyContent ?? `Click 'New' to create a new ${moduleInfo.FriendlyName}`)),
141
141
  isWizardOpen && EditWizard && (React.createElement(EditWizard, { abObjectType: abObjectType, moduleInfo: moduleInfo, data: null, popupParams: props.popupParams, configEntities: null, onCloseWizard: handleWizardClose, onFinishWizard: handleWizardClose }))));
142
142
  };
@@ -14,7 +14,6 @@ const ListBoxFilterForm_1 = require("../FilterForm/ListBoxFilterForm");
14
14
  const AdaptableContext_1 = require("../../AdaptableContext");
15
15
  const FloatingFilterValues_1 = require("../ColumnFilter/components/FloatingFilterValues");
16
16
  const react_1 = require("react");
17
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
18
17
  const PredicateEditor = (props) => {
19
18
  const baseClassName = 'ab-PredicateEditor';
20
19
  const predicateDefsOptions = React.useMemo(() => props?.predicateDefs?.map((item) => ({
@@ -72,7 +71,7 @@ const PredicateEditor = (props) => {
72
71
  index > 0 && React.createElement(HelpBlock_1.default, { margin: 2 }, "AND"),
73
72
  React.createElement(rebass_1.Flex, { key: index, flex: 1, flexDirection: "column" },
74
73
  React.createElement(AdaptableInput_1.default, { "data-name": `predicate-input-${index}`, marginTop: 2, type: predicateDefInput.type, autoFocus: index === 0, value: props.predicate.Inputs?.[index] ?? '', onChange: (e) => handlePredicateInputChange(e, index) })))))),
75
- isValuesPredicateDef(currentPredicateDef) && (React.createElement(rebass_1.Box, { mt: 2 },
74
+ adaptable.api.predicateApi.internalApi.IsInorNotInPredicateDef(currentPredicateDef) && (React.createElement(rebass_1.Box, { mt: 2 },
76
75
  React.createElement(ListBoxFilterForm_1.ColumnValuesSelect, { isLoading: isDistinctColumnValuesLoading, column: column, options: quickFilterValues.values, selectProps: {
77
76
  onMenuOpen,
78
77
  }, dataType: column.dataType, value: props.predicate.Inputs, onChange: handlePredicateValuesChange })))));
@@ -21,7 +21,7 @@ const BulkUpdateValueSelector = (props) => {
21
21
  // which is then triggering a get all values
22
22
  // not sure that we need to
23
23
  const permittedValueSelector = (React.createElement(rebass_1.Box, null,
24
- React.createElement(PermittedValuesSelector_1.PermittedValuesSelector, { allowNewValues: true, disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: (0, react_1.useCallback)(({ currentSearchValue }) => {
24
+ React.createElement(PermittedValuesSelector_1.PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: (0, react_1.useCallback)(({ currentSearchValue }) => {
25
25
  if (!columnId || !props.selectedGridCells.length) {
26
26
  return Promise.resolve([]);
27
27
  }
@@ -28,7 +28,7 @@ const ColumnSelector = function (props) {
28
28
  }
29
29
  return true;
30
30
  });
31
- return (React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
31
+ return (React.createElement(Select_1.Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
32
32
  props.onChange(colId);
33
33
  }, options: options }));
34
34
  };
@@ -15,7 +15,7 @@ const FieldSelector = (props) => {
15
15
  value: field.name,
16
16
  }));
17
17
  return (React.createElement(React.Fragment, null,
18
- React.createElement(Select_1.Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
18
+ React.createElement(Select_1.Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
19
19
  props.onChange(fieldValue);
20
20
  }, options: options })));
21
21
  };
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { SelectProps } from '../../../components/Select';
3
3
  export type ValueType = number | string | Date;
4
4
  interface PermittedValuesSelectorProps<Value extends ValueType, IsMulti extends boolean> {
5
+ searchable?: false | 'inline' | 'menulist';
5
6
  isMulti?: IsMulti;
6
7
  columnId: string;
7
8
  value: IsMulti extends true ? Value[] : Value;
@@ -35,7 +35,7 @@ const PermittedValuesSelector = function (props) {
35
35
  return currentSearchValue;
36
36
  },
37
37
  })
38
- : adaptable.api.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn({
38
+ : adaptable.api.filterApi.columnFilterApi.internalApi.getColumnFilterValues({
39
39
  columnId: props.columnId,
40
40
  get currentSearchValue() {
41
41
  searchValueUsedInFilterValue = true;
@@ -101,6 +101,6 @@ const PermittedValuesSelector = function (props) {
101
101
  reload();
102
102
  }
103
103
  };
104
- return (React.createElement(Select_1.Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
104
+ return (React.createElement(Select_1.Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, searchable: props.searchable, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
105
105
  };
106
106
  exports.PermittedValuesSelector = PermittedValuesSelector;
@@ -37,7 +37,7 @@ const DashboardComponent = (props) => {
37
37
  }
38
38
  else {
39
39
  const moduleToolbarName = visibleToolbarName;
40
- if (props.api.internalApi.getModuleService().isModuleAvailable(moduleToolbarName)) {
40
+ if (props.api.internalApi.getModuleService().isAdapTableModulePresent(moduleToolbarName)) {
41
41
  let moduleToolbarView = AdaptableViewFactory_1.AdaptableViewPanelFactory.get(moduleToolbarName);
42
42
  if (moduleToolbarView) {
43
43
  let moduleInfo = props.api.internalApi
@@ -96,7 +96,7 @@ const DashboardComponent = (props) => {
96
96
  let instanceName = props.api.internalApi.getToolbarTitle();
97
97
  let dashboardOptions = props.api.optionsApi.getDashboardOptions();
98
98
  const shouldRenderQuickSearchHeader = dashboardOptions.showQuickSearchInHeader &&
99
- props.api.internalApi.getModuleService().getModuleById(ModuleConstants_1.QuickSearchModuleId).isModuleAvailable();
99
+ props.api.internalApi.getModuleService().isAdapTableModulePresent(ModuleConstants_1.QuickSearchModuleId);
100
100
  const applicationIcon = props.api.optionsApi.getUserInterfaceOptions().applicationIcon;
101
101
  if (props.DashboardState.IsHidden) {
102
102
  return React.createElement("div", null);
@@ -44,7 +44,9 @@ class DashboardPopupComponent extends React.Component {
44
44
  .find((ct) => ct.name === vt);
45
45
  return customToolbar
46
46
  ? true
47
- : this.props.api.internalApi.getModuleService().isModuleAvailable(vt);
47
+ : this.props.api.internalApi
48
+ .getModuleService()
49
+ .isAdapTableModulePresent(vt);
48
50
  });
49
51
  return { ...tab, Toolbars };
50
52
  });
@@ -11,7 +11,7 @@ const PinnedDashboard = (props) => {
11
11
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
12
12
  const dashboardState = (0, react_redux_1.useSelector)((state) => state.Dashboard);
13
13
  const pinnedToolbars = (dashboardState.PinnedToolbars ?? []).filter((tb) => adaptable.api.dashboardApi.internalApi.isToolbarCustom(tb) ||
14
- adaptable.api.internalApi.getModuleService().isModuleAvailable(tb));
14
+ adaptable.api.internalApi.getModuleService().isAdapTableModulePresent(tb));
15
15
  if (!pinnedToolbars || pinnedToolbars.length == 0) {
16
16
  return React.createElement(React.Fragment, null);
17
17
  }
@@ -22,7 +22,7 @@ const DataChangeHistoryGrid = (props) => {
22
22
  const initializeAdaptableGrid = async () => {
23
23
  const gridOptions = buildGridOptions(mainAdaptableInstance, changeHistoryLog);
24
24
  const adaptableOptions = buildAdaptableOptions(mainAdaptableInstance, adaptableContainerId, agGridContainerId, undoChangeEnabled, onUndoChange, onClearRow);
25
- const modules = mainAdaptableInstance.getAgGridRegisteredModules();
25
+ const modules = mainAdaptableInstance.agGridModulesAdapter.getAgGridRegisteredModules();
26
26
  const dataChangeHistoryAdaptableApi = await AdaptableAgGrid_1.AdaptableAgGrid._initInternal({
27
27
  variant: 'vanilla',
28
28
  adaptableOptions,
@@ -145,8 +145,14 @@ const buildAdaptableOptions = (mainAdaptableInstance, adaptableContainerId, agGr
145
145
  SortOrder: 'Desc',
146
146
  },
147
147
  ],
148
- ColumnWidths: {
149
- undoActionColumn: 110,
148
+ ColumnSizing: {
149
+ 'changeInfo.primaryKeyValue': { Flex: 3 },
150
+ changedColumnLabel: { Flex: 3 },
151
+ 'changeInfo.oldValue': { Flex: 3 },
152
+ 'changeInfo.newValue': { Flex: 3 },
153
+ 'changeInfo.changedAt': { Flex: 3 },
154
+ changeTriggerLabel: { Flex: 2 },
155
+ undoActionColumn: { Width: 110 },
150
156
  },
151
157
  ColumnPinning: {
152
158
  undoActionColumn: 'right',
@@ -218,49 +224,31 @@ const buildGridOptions = (mainAdaptableInstance, changeHistoryLog) => {
218
224
  headerName: `Row (${mainPrimaryKeyColumnHeader})`,
219
225
  field: 'changeInfo.primaryKeyValue',
220
226
  cellDataType: 'text',
221
- suppressAutoSize: false,
222
- flex: 3,
223
- initialFlex: 3,
224
227
  },
225
228
  {
226
229
  headerName: 'Column',
227
230
  field: 'changedColumnLabel',
228
231
  cellDataType: 'text',
229
- suppressAutoSize: false,
230
- flex: 3,
231
- initialFlex: 3,
232
232
  },
233
233
  {
234
234
  headerName: 'Previous',
235
235
  field: 'changeInfo.oldValue',
236
236
  cellDataType: 'text',
237
- suppressAutoSize: false,
238
- flex: 3,
239
- initialFlex: 3,
240
237
  },
241
238
  {
242
239
  headerName: 'New',
243
240
  field: 'changeInfo.newValue',
244
241
  cellDataType: 'text',
245
- suppressAutoSize: false,
246
- flex: 3,
247
- initialFlex: 3,
248
242
  },
249
243
  {
250
244
  headerName: 'Changed',
251
245
  field: 'changeInfo.changedAt',
252
246
  cellDataType: 'date',
253
- suppressAutoSize: false,
254
- flex: 3,
255
- initialFlex: 3,
256
247
  },
257
248
  {
258
249
  headerName: 'Source',
259
250
  field: 'changeTriggerLabel',
260
251
  cellDataType: 'text',
261
- suppressAutoSize: false,
262
- flex: 2,
263
- initialFlex: 2,
264
252
  },
265
253
  ],
266
254
  rowData: mapChangeHistoryRowData(changeHistoryLog, mainAdaptableInstance),