@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
@@ -6,7 +6,6 @@ import { useAdaptable } from '../../AdaptableContext';
6
6
  */
7
7
  export const AdaptableIconSelector = (props) => {
8
8
  const adaptable = useAdaptable();
9
- const userInterfaceOptions = adaptable.api.optionsApi.getAdaptableOptions()?.userInterfaceOptions;
10
- const customDefinedIcons = userInterfaceOptions.customIcons ?? [];
11
- return React.createElement(IconSelector, { customIcons: customDefinedIcons, ...props });
9
+ const customIcons = adaptable.api.userInterfaceApi.getCustomIcons();
10
+ return React.createElement(IconSelector, { customIcons: customIcons, ...props });
12
11
  };
@@ -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.
@@ -6,9 +6,8 @@ import { useAdaptableFilterWrapper } from './useAdaptableFilterWrapper';
6
6
  * It transforms predicates in QlPredicates.
7
7
  */
8
8
  export const AdaptableColumnFilter = (props) => {
9
- const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = useAdaptableFilterWrapper(props.columnId);
9
+ const { qlPredicate, qlPredicateDefs, columnFilter, handlePredicateChange } = useAdaptableFilterWrapper(props.columnId, 'FilterForm');
10
10
  return (React.createElement(ColumnFilterComponent, { wrapperProps: props.wrapperProps, columnId: props.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: React.useCallback((predicate) => {
11
11
  handlePredicateChange(predicate);
12
- props.onChange?.();
13
- }, [handlePredicateChange, props.onChange]) }));
12
+ }, [handlePredicateChange]) }));
14
13
  };
@@ -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.
@@ -8,15 +8,13 @@ import { useAdaptableFilterWrapper } from './useAdaptableFilterWrapper';
8
8
  */
9
9
  export const AdaptableFloatingFilter = (props) => {
10
10
  const adaptable = useAdaptable();
11
- const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = useAdaptableFilterWrapper(props.Column.columnId);
11
+ const { qlPredicate, qlPredicateDefs, columnFilter, column, handlePredicateChange, handleOnChange, handleClear, } = useAdaptableFilterWrapper(props.Column.columnId, 'FilterBar');
12
12
  const onClear = React.useCallback(() => {
13
13
  handleClear();
14
- props.onClear?.();
15
- }, [handleClear, props.onClear]);
14
+ }, [handleClear]);
16
15
  const onPredicateChange = React.useCallback((newPredicate) => {
17
16
  handlePredicateChange(newPredicate);
18
- props.onChange?.();
19
- }, [handlePredicateChange, props.onChange]);
17
+ }, [handlePredicateChange]);
20
18
  if (!column) {
21
19
  return null;
22
20
  }
@@ -32,7 +30,6 @@ export const AdaptableFloatingFilter = (props) => {
32
30
  Inputs: [],
33
31
  },
34
32
  ]);
35
- props.onChange?.();
36
33
  }
37
- }, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange, onChange: props.onChange }));
34
+ }, onClear: onClear, columnId: props.Column.columnId, predicate: qlPredicate, predicateDefs: qlPredicateDefs, disabled: columnFilter?.IsSuspended, onPredicateChange: onPredicateChange }));
38
35
  };
@@ -62,7 +62,7 @@ const AndOrInput = (props) => {
62
62
  };
63
63
  export const ColumnFilterComponent = (props) => {
64
64
  const adaptable = useAdaptable();
65
- const autoApplyColumnFilter = adaptable.adaptableOptions.filterOptions.columnFilterOptions?.autoApplyColumnFilter ?? true;
65
+ const autoApplyColumnFilter = adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
66
66
  const [predicateNotYetApplied, setPredicateNotYetApplied] = React.useState(props.predicate);
67
67
  const applyFilter = () => {
68
68
  props.onPredicateChange(currentPredicateRef.current);
@@ -116,7 +116,7 @@ export const ColumnFilterComponent = (props) => {
116
116
  React.createElement(AndOrInput, { onChange: onCombineChange, operator: currentPredicate.operator }),
117
117
  React.createElement(SimpleButton, { ml: 2, onClick: () => onPredicateChange(null) }, "Clear All")),
118
118
  React.createElement(Flex, { flexDirection: "column", className: "ab-ColumnFilter", flex: 1, minHeight: 0, ...props.wrapperProps },
119
- React.createElement(Box, { flex: 1, style: { overflow: 'auto' } },
119
+ React.createElement(Box, { style: { overflow: 'auto' } },
120
120
  currentPredicate.args.map((predicate, index) => {
121
121
  return (React.createElement(ColumnFilterEditor, { deleteDisabled: currentPredicate.args.length < 2, onDelete: () => {
122
122
  const currentPredicate = currentPredicateRef.current;
@@ -141,6 +141,13 @@ export const ColumnFilterComponent = (props) => {
141
141
  } }));
142
142
  }),
143
143
  isLastPredicateValid && filterPredicateDropdown),
144
- !autoApplyColumnFilter ? (React.createElement(Box, { pt: 2 },
145
- React.createElement(SimpleButton, { tone: "accent", variant: "raised", onClick: applyFilter }, "Apply Filter"))) : null)));
144
+ !autoApplyColumnFilter ? (React.createElement(React.Fragment, null,
145
+ React.createElement(Box, { flex: 1, "data-name": "spacer" }),
146
+ React.createElement(Flex, { pt: 2, className: "ab-ColumnFilter-actions", justifyContent: "space-between" },
147
+ React.createElement(Box, { className: "ab-ColumnFilter-action-apply" },
148
+ React.createElement(SimpleButton, { tone: "accent", variant: "raised", onClick: applyFilter }, "Apply Filter")),
149
+ React.createElement(Box, { className: "ab-ColumnFilter-action-reset" },
150
+ React.createElement(SimpleButton, { tone: "neutral", variant: "raised", onClick: () => {
151
+ setPredicateNotYetApplied(props.predicate);
152
+ } }, "Reset Filter"))))) : null)));
146
153
  };
@@ -29,5 +29,5 @@ export const ColumnFilterWindow = (props) => {
29
29
  }
30
30
  return label;
31
31
  }, onChange: (column) => setColumnId(column), filterColumn: (column) => column.queryable, isMulti: false, value: columnId })))),
32
- React.createElement(AdaptableColumnFilter, { columnId: columnId, onChange: onChange })));
32
+ React.createElement(AdaptableColumnFilter, { columnId: columnId })));
33
33
  };
@@ -9,13 +9,12 @@ import { FloatingFilterInputList } from './components/FloatingFilterInputList';
9
9
  import { isPredicateEmpty, qlPredicateToString } from './utils';
10
10
  export const FloatingFilter = (props) => {
11
11
  const adaptable = useAdaptable();
12
- const columnFilterOptions = adaptable.adaptableOptions.filterOptions.columnFilterOptions;
13
12
  /**
14
13
  * We always have a syntetic predicate with AND or OR, so the logic is easyer.
15
14
  * The wrapper is in charge of constructing the correct column filter.
16
15
  */
17
16
  const isMultiple = props.predicate?.args?.length > 1;
18
- const isManualApply = !columnFilterOptions.autoApplyColumnFilter;
17
+ const isManualApply = !adaptable.api.filterApi.columnFilterApi.internalApi.shouldAutoApplyColumnFilter(props.columnId);
19
18
  const isInlineEditable = !isMultiple && !isManualApply;
20
19
  // only used when there is only one filter selected
21
20
  let singleFilterPredicateDef = null;
@@ -10,7 +10,7 @@ export const LayoutColumnFilter = (props) => {
10
10
  const predicateDefs = api.filterApi.columnFilterApi.getFilterPredicateDefsForColumn(column);
11
11
  const qlDataType = mapColumnDataTypeToExpressionFunctionType(column.dataType);
12
12
  const qlPredicateDefs = predicateDefs.map((predDef) => mapAdaptablePredicateDefToQlPredicateDef(predDef, qlDataType));
13
- const qlPredicate = mapColumnFilterToQlPredicate(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, api);
13
+ const qlPredicate = mapColumnFilterToQlPredicate(props.columnFilter, column, qlPredicateDefs, columnFilterOptions, 'FilterForm', api);
14
14
  const handlePredicateChange = (newPredicate) => {
15
15
  const newAdaptablePredicates = newPredicate.args.map(mapQlPredicateToAdaptablePredicate);
16
16
  const newFilter = {
@@ -70,7 +70,7 @@ export const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear
70
70
  }
71
71
  };
72
72
  if (type === 'date' && !showDatePicker) {
73
- return (React.createElement(AdaptableDateInlineInput, { value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
73
+ return (React.createElement(AdaptableDateInlineInput, { "data-name": "floating-filter-input", value: liveValue, disabled: disabled, onFocus: onFocus, onBlur: onBlur, pr: 0, style: { border: 'none' }, onKeyDownCapture: onKeyDownCapture, onChange: (value) => {
74
74
  onChange(value);
75
75
  setLiveValue(value);
76
76
  } }));
@@ -96,7 +96,7 @@ export const ColumnFilterInput = ({ type, value, onChange: onChangeProp, onClear
96
96
  borderRadius: 0,
97
97
  border: 'none',
98
98
  }
99
- : {}, onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
99
+ : {}, "data-name": "floating-filter-input", onFocus: onFocus, onBlur: onBlur, disabled: disabled, type: type === 'number' ? 'text' : type,
100
100
  // autoFocus has to be FALSE because if the input receives focus in the init phase,
101
101
  // it may scroll the AG Grid header viewport into view and de-synchronize it (relative to the content viewport)
102
102
  autoFocus: false, value: liveValue ?? '', onKeyDown: onKeyDown, showClearButton: false, onChange: (e) => {
@@ -33,8 +33,8 @@ export function useDistinctFilterColumnValues(options) {
33
33
  let ignore = false;
34
34
  setIsDistinctColumnValuesLoading(true);
35
35
  let searchValueUsedInFilterValue = false;
36
- api.gridApi.internalApi
37
- .getDistinctFilterDisplayValuesForColumn({
36
+ api.filterApi.columnFilterApi.internalApi
37
+ .getColumnFilterValues({
38
38
  columnId,
39
39
  get currentSearchValue() {
40
40
  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;
@@ -6,7 +6,7 @@ import { getCurrentLayoutSelector } from '../../../Redux/ActionsReducers/LayoutR
6
6
  import { mapColumnDataTypeToExpressionFunctionType } from '../../../Utilities/adaptableQlUtils';
7
7
  import { useAdaptable } from '../../AdaptableContext';
8
8
  import { mapAdaptablePredicateDefToQlPredicateDef, mapColumnFilterToQlPredicate, mapQlPredicateToAdaptablePredicate, } from './utils';
9
- export const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
9
+ export const useAdaptableFilterWrapper = (columnId, filterComponent, handleOnChangeOverride) => {
10
10
  const adaptable = useAdaptable();
11
11
  const dispatch = useDispatch();
12
12
  const api = adaptable.api;
@@ -23,7 +23,7 @@ export const useAdaptableFilterWrapper = (columnId, handleOnChangeOverride) => {
23
23
  return currentLayout?.ColumnFilters?.find((cf) => cf.ColumnId === columnId);
24
24
  }, [currentLayout?.ColumnFilters, columnId]);
25
25
  const qlPredicate = column
26
- ? mapColumnFilterToQlPredicate(columnFilter, column, qlPredicateDefs, columnFilterOptions, api)
26
+ ? mapColumnFilterToQlPredicate(columnFilter, column, qlPredicateDefs, columnFilterOptions, filterComponent, api)
27
27
  : null;
28
28
  const handleOnChange = (adaptablePredicate, logic = 'AND') => {
29
29
  // 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;
@@ -82,7 +82,7 @@ export const isPredicateEmpty = (predicate, predicateDef) => {
82
82
  predicate.args.length === 0 ||
83
83
  predicate.args.every((arg) => arg == undefined));
84
84
  };
85
- export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, api) => {
85
+ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions, filterComponent, api) => {
86
86
  const combinator = columnFilter?.PredicatesOperator ?? 'AND';
87
87
  const qlPredicate = {
88
88
  operator: combinator,
@@ -99,6 +99,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
99
99
  if (typeof defaultNumericColumnFilter === 'function') {
100
100
  const context = {
101
101
  column: abColumn,
102
+ filterComponent,
102
103
  ...api.internalApi.buildBaseContext(),
103
104
  };
104
105
  defaultQlNumberPredicate = defaultNumericColumnFilter(context);
@@ -118,6 +119,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
118
119
  if (typeof defaultTextColumnFilter === 'function') {
119
120
  const context = {
120
121
  column: abColumn,
122
+ filterComponent,
121
123
  ...api.internalApi.buildBaseContext(),
122
124
  };
123
125
  defaultQlTextPredicate = defaultTextColumnFilter(context);
@@ -131,12 +133,14 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
131
133
  : { operator: 'Contains', args: [] };
132
134
  break;
133
135
  case 'date':
136
+ case 'dateString':
134
137
  let defaultQlDatePredicate;
135
138
  const defaultDateColumnFilter = columnFilterOptions.defaultDateColumnFilter;
136
139
  if (defaultDateColumnFilter) {
137
140
  if (typeof defaultDateColumnFilter === 'function') {
138
141
  const context = {
139
142
  column: abColumn,
143
+ filterComponent,
140
144
  ...api.internalApi.buildBaseContext(),
141
145
  };
142
146
  defaultQlDatePredicate = defaultDateColumnFilter(context);
@@ -160,6 +164,7 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
160
164
  if (typeof defaultArrayColumnFilter === 'function') {
161
165
  const context = {
162
166
  column: abColumn,
167
+ filterComponent,
163
168
  ...api.internalApi.buildBaseContext(),
164
169
  };
165
170
  defaultQlArrayPredicate = defaultArrayColumnFilter(context);
@@ -107,9 +107,8 @@ export const EntityRulesEditor = (props) => {
107
107
  });
108
108
  }
109
109
  };
110
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
111
110
  const filteredPredicateDefs = predicateDefs.filter((def) => {
112
- if (isValuesPredicateDef(def)) {
111
+ if (api.predicateApi.internalApi.IsInorNotInPredicateDef(def)) {
113
112
  return 'ColumnIds' in data.Scope && data.Scope.ColumnIds.length === 1;
114
113
  }
115
114
  return true;
@@ -29,7 +29,7 @@ export const ColumnValuesSelect = (props) => {
29
29
  minWidth: `var(--ab-cmp-select-column-menu-${column.columnId}__min-width, var(--ab-cmp-select-column-menu__min-width, 160px))`,
30
30
  };
31
31
  }, [column.columnId]);
32
- const component = (React.createElement(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 }));
32
+ const component = (React.createElement(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 }));
33
33
  return (React.createElement("div", { className: join(baseClassName, props.isLoading && `${baseClassName}--loading`, !value.length && `${baseClassName}--empty`), onKeyDownCapture: (e) => {
34
34
  const event = e.nativeEvent || e;
35
35
  event.stopPropagation = () => {
@@ -10,6 +10,7 @@ import { AdaptableFormControlTextClear } from './Forms/AdaptableFormControlTextC
10
10
  import { useAdaptable } from '../AdaptableContext';
11
11
  import { ValueOptionsTags } from './ValueSelector';
12
12
  import { getColumnTypeFriendlyName } from '../../AdaptableState/Common/AdaptableColumn';
13
+ import StringExtensions from '../../Utilities/Extensions/StringExtensions';
13
14
  export const isScopeValid = ({ Scope }) => {
14
15
  const result = [];
15
16
  if (!Scope) {
@@ -41,6 +42,9 @@ const DATA_TYPES_MAP = {
41
42
  value: 'boolean',
42
43
  },
43
44
  };
45
+ const renderDataTypeLabel = (c) => {
46
+ return 'DataType: ' + StringExtensions.CapitaliseFirstLetter(c);
47
+ };
44
48
  export const renderScopeSummary = (scope, labels) => {
45
49
  const adaptable = useAdaptable();
46
50
  const scopeApi = adaptable.api.columnScopeApi;
@@ -53,7 +57,7 @@ export const renderScopeSummary = (scope, labels) => {
53
57
  columnsInScope.length ? (React.createElement(ValueOptionsTags, { options: columnsInScope, value: columnsInScope.map((c) => c.columnId), toLabel: (c) => c.friendlyName, allowWrap: true, readOnly: true, renderLabel: (c) => React.createElement(SummaryText, { mb: 0 }, c), toIdentifier: (c) => c.columnId })) : null)) : null),
54
58
  React.createElement(Box, null, 'DataTypes' in scope ? (React.createElement(React.Fragment, null,
55
59
  React.createElement(Text, { fontSize: 2, mb: 2 }, labels.scopeDataTypes),
56
- React.createElement(ValueOptionsTags, { readOnly: true, options: scope.DataTypes, value: scope.DataTypes, toLabel: (c) => c, allowWrap: true, renderLabel: (c) => React.createElement(Text, { fontSize: 2 }, `DataType: ${c}`), toIdentifier: (c) => c }))) : null)));
60
+ React.createElement(ValueOptionsTags, { readOnly: true, options: scope.DataTypes, value: scope.DataTypes, toLabel: (c) => c, allowWrap: true, renderLabel: (c) => React.createElement(Text, { fontSize: 2 }, renderDataTypeLabel(c)), toIdentifier: (c) => c }))) : null)));
57
61
  };
58
62
  const DATA_TYPES_OPTIONS = Object.values(DATA_TYPES_MAP);
59
63
  export const NewScopeComponent = (props) => {
@@ -8,7 +8,7 @@ import { ButtonNew } from '../../Buttons/ButtonNew';
8
8
  import { PopupPanel } from './PopupPanel';
9
9
  import { Flex } from 'rebass';
10
10
  import { CheckBox } from '../../../../components/CheckBox';
11
- import { LayoutShowNotAssociatedObjects } from '../../../../Redux/ActionsReducers/InternalRedux';
11
+ import { LayoutShowNonExtendedObjects } from '../../../../Redux/ActionsReducers/InternalRedux';
12
12
  import SimpleButton from '../../../../components/SimpleButton';
13
13
  import { useAdaptable } from '../../../AdaptableContext';
14
14
  import { useEffect } from 'react';
@@ -113,16 +113,16 @@ export const AdaptablePopupModuleView = (props) => {
113
113
  .getModuleService()
114
114
  .getModuleById(props.module.moduleInfo.ModuleName);
115
115
  const dispatch = useDispatch();
116
- const showLayoutNotAssociatedObjects = useSelector((state) => state.Internal.Layout.ShowLayoutNotAssociatedObjects);
117
- const toggleButtonShowLayoutAssociatedObjects = () => {
118
- if (!adaptableModule?.canBeAssociatedWithLayouts()) {
116
+ const showLayoutNonExtendedObjects = useSelector((state) => state.Internal.Layout.showLayoutNonExtendedObjects);
117
+ const toggleButtonShowLayoutExtensionObjects = () => {
118
+ if (!adaptableModule?.containsLayoutExtensions()) {
119
119
  return;
120
120
  }
121
121
  if (!props.api.layoutApi.internalApi.hasLayoutSpecificObjects()) {
122
122
  return;
123
123
  }
124
124
  return (React.createElement(Flex, { justifyContent: "flex-start" },
125
- React.createElement(CheckBox, { padding: 0, margin: 0, checked: showLayoutNotAssociatedObjects, onChange: (checked) => dispatch(LayoutShowNotAssociatedObjects(checked)) },
125
+ React.createElement(CheckBox, { padding: 0, margin: 0, checked: showLayoutNonExtendedObjects, onChange: (checked) => dispatch(LayoutShowNonExtendedObjects(checked)) },
126
126
  "Show ",
127
127
  moduleInfo.FriendlyName,
128
128
  "s not available in current Layout")));
@@ -132,7 +132,7 @@ export const AdaptablePopupModuleView = (props) => {
132
132
  " ",
133
133
  newButton), infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed() },
134
134
  moduleViewProperties.HeaderComponent && React.createElement(moduleViewProperties.HeaderComponent, null),
135
- toggleButtonShowLayoutAssociatedObjects(),
135
+ toggleButtonShowLayoutExtensionObjects(),
136
136
  items?.length ? (React.createElement(AdaptableObjectList, { module: props.module, items: items })) : (React.createElement(EmptyContent, null, emptyContent ?? `Click 'New' to create a new ${moduleInfo.FriendlyName}`)),
137
137
  isWizardOpen && EditWizard && (React.createElement(EditWizard, { abObjectType: abObjectType, moduleInfo: moduleInfo, data: null, popupParams: props.popupParams, configEntities: null, onCloseWizard: handleWizardClose, onFinishWizard: handleWizardClose }))));
138
138
  };
@@ -10,7 +10,6 @@ import { ColumnValuesSelect } from '../FilterForm/ListBoxFilterForm';
10
10
  import { useAdaptable } from '../../AdaptableContext';
11
11
  import { useDistinctFilterColumnValues } from '../ColumnFilter/components/FloatingFilterValues';
12
12
  import { useEffect } from 'react';
13
- const isValuesPredicateDef = (colDef) => colDef && ['In', 'NotIn'].includes(colDef.id);
14
13
  export const PredicateEditor = (props) => {
15
14
  const baseClassName = 'ab-PredicateEditor';
16
15
  const predicateDefsOptions = React.useMemo(() => props?.predicateDefs?.map((item) => ({
@@ -68,7 +67,7 @@ export const PredicateEditor = (props) => {
68
67
  index > 0 && React.createElement(HelpBlock, { margin: 2 }, "AND"),
69
68
  React.createElement(Flex, { key: index, flex: 1, flexDirection: "column" },
70
69
  React.createElement(AdaptableInput, { "data-name": `predicate-input-${index}`, marginTop: 2, type: predicateDefInput.type, autoFocus: index === 0, value: props.predicate.Inputs?.[index] ?? '', onChange: (e) => handlePredicateInputChange(e, index) })))))),
71
- isValuesPredicateDef(currentPredicateDef) && (React.createElement(Box, { mt: 2 },
70
+ adaptable.api.predicateApi.internalApi.IsInorNotInPredicateDef(currentPredicateDef) && (React.createElement(Box, { mt: 2 },
72
71
  React.createElement(ColumnValuesSelect, { isLoading: isDistinctColumnValuesLoading, column: column, options: quickFilterValues.values, selectProps: {
73
72
  onMenuOpen,
74
73
  }, dataType: column.dataType, value: props.predicate.Inputs, onChange: handlePredicateValuesChange })))));
@@ -17,7 +17,7 @@ export const BulkUpdateValueSelector = (props) => {
17
17
  // which is then triggering a get all values
18
18
  // not sure that we need to
19
19
  const permittedValueSelector = (React.createElement(Box, null,
20
- React.createElement(PermittedValuesSelector, { allowNewValues: true, disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: useCallback(({ currentSearchValue }) => {
20
+ React.createElement(PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', disabled: props.disabled || !props.selectedColumn, value: props.selectedColumnValue === '' ? null : props.selectedColumnValue, columnId: columnId, placeholder: isDateType ? 'Select' : 'Select or type new value', loadValues: useCallback(({ currentSearchValue }) => {
21
21
  if (!columnId || !props.selectedGridCells.length) {
22
22
  return Promise.resolve([]);
23
23
  }
@@ -24,7 +24,7 @@ export const ColumnSelector = function (props) {
24
24
  }
25
25
  return true;
26
26
  });
27
- return (React.createElement(Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
27
+ return (React.createElement(Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: props.isMulti, menuPosition: props.menuPosition, value: props.value, placeholder: props.placeholder ?? 'Select Column', onChange: (colId) => {
28
28
  props.onChange(colId);
29
29
  }, options: options }));
30
30
  };
@@ -11,7 +11,7 @@ export const FieldSelector = (props) => {
11
11
  value: field.name,
12
12
  }));
13
13
  return (React.createElement(React.Fragment, null,
14
- React.createElement(Select, { "data-name": "column-selector", disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
14
+ React.createElement(Select, { "data-name": "column-selector", searchable: 'inline', disabled: props.disabled, isMulti: false, menuPosition: props.menuPosition, value: props.value || undefined, placeholder: props.placeholder ?? 'Select Field', onChange: (fieldValue) => {
15
15
  props.onChange(fieldValue);
16
16
  }, options: options })));
17
17
  };
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { SelectProps } from '../../../components/Select';
3
3
  export type ValueType = number | string | Date;
4
4
  interface PermittedValuesSelectorProps<Value extends ValueType, IsMulti extends boolean> {
5
+ searchable?: false | 'inline' | 'menulist';
5
6
  isMulti?: IsMulti;
6
7
  columnId: string;
7
8
  value: IsMulti extends true ? Value[] : Value;
@@ -31,7 +31,7 @@ export const PermittedValuesSelector = function (props) {
31
31
  return currentSearchValue;
32
32
  },
33
33
  })
34
- : adaptable.api.gridApi.internalApi.getDistinctFilterDisplayValuesForColumn({
34
+ : adaptable.api.filterApi.columnFilterApi.internalApi.getColumnFilterValues({
35
35
  columnId: props.columnId,
36
36
  get currentSearchValue() {
37
37
  searchValueUsedInFilterValue = true;
@@ -97,5 +97,5 @@ export const PermittedValuesSelector = function (props) {
97
97
  reload();
98
98
  }
99
99
  };
100
- return (React.createElement(Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
100
+ return (React.createElement(Select, { "aria-label": "Permitted Values Selector", menuPortalTarget: props.menuPortalTarget, searchable: props.searchable, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
101
101
  };
@@ -33,7 +33,7 @@ const DashboardComponent = (props) => {
33
33
  }
34
34
  else {
35
35
  const moduleToolbarName = visibleToolbarName;
36
- if (props.api.internalApi.getModuleService().isModuleAvailable(moduleToolbarName)) {
36
+ if (props.api.internalApi.getModuleService().isAdapTableModulePresent(moduleToolbarName)) {
37
37
  let moduleToolbarView = AdaptableViewPanelFactory.get(moduleToolbarName);
38
38
  if (moduleToolbarView) {
39
39
  let moduleInfo = props.api.internalApi
@@ -92,7 +92,7 @@ const DashboardComponent = (props) => {
92
92
  let instanceName = props.api.internalApi.getToolbarTitle();
93
93
  let dashboardOptions = props.api.optionsApi.getDashboardOptions();
94
94
  const shouldRenderQuickSearchHeader = dashboardOptions.showQuickSearchInHeader &&
95
- props.api.internalApi.getModuleService().getModuleById(QuickSearchModuleId).isModuleAvailable();
95
+ props.api.internalApi.getModuleService().isAdapTableModulePresent(QuickSearchModuleId);
96
96
  const applicationIcon = props.api.optionsApi.getUserInterfaceOptions().applicationIcon;
97
97
  if (props.DashboardState.IsHidden) {
98
98
  return React.createElement("div", null);
@@ -40,7 +40,9 @@ class DashboardPopupComponent extends React.Component {
40
40
  .find((ct) => ct.name === vt);
41
41
  return customToolbar
42
42
  ? true
43
- : this.props.api.internalApi.getModuleService().isModuleAvailable(vt);
43
+ : this.props.api.internalApi
44
+ .getModuleService()
45
+ .isAdapTableModulePresent(vt);
44
46
  });
45
47
  return { ...tab, Toolbars };
46
48
  });
@@ -7,7 +7,7 @@ export const PinnedDashboard = (props) => {
7
7
  const adaptable = useAdaptable();
8
8
  const dashboardState = useSelector((state) => state.Dashboard);
9
9
  const pinnedToolbars = (dashboardState.PinnedToolbars ?? []).filter((tb) => adaptable.api.dashboardApi.internalApi.isToolbarCustom(tb) ||
10
- adaptable.api.internalApi.getModuleService().isModuleAvailable(tb));
10
+ adaptable.api.internalApi.getModuleService().isAdapTableModulePresent(tb));
11
11
  if (!pinnedToolbars || pinnedToolbars.length == 0) {
12
12
  return React.createElement(React.Fragment, null);
13
13
  }
@@ -18,7 +18,7 @@ export const DataChangeHistoryGrid = (props) => {
18
18
  const initializeAdaptableGrid = async () => {
19
19
  const gridOptions = buildGridOptions(mainAdaptableInstance, changeHistoryLog);
20
20
  const adaptableOptions = buildAdaptableOptions(mainAdaptableInstance, adaptableContainerId, agGridContainerId, undoChangeEnabled, onUndoChange, onClearRow);
21
- const modules = mainAdaptableInstance.getAgGridRegisteredModules();
21
+ const modules = mainAdaptableInstance.agGridModulesAdapter.getAgGridRegisteredModules();
22
22
  const dataChangeHistoryAdaptableApi = await AdaptableAgGrid._initInternal({
23
23
  variant: 'vanilla',
24
24
  adaptableOptions,
@@ -140,8 +140,14 @@ const buildAdaptableOptions = (mainAdaptableInstance, adaptableContainerId, agGr
140
140
  SortOrder: 'Desc',
141
141
  },
142
142
  ],
143
- ColumnWidths: {
144
- undoActionColumn: 110,
143
+ ColumnSizing: {
144
+ 'changeInfo.primaryKeyValue': { Flex: 3 },
145
+ changedColumnLabel: { Flex: 3 },
146
+ 'changeInfo.oldValue': { Flex: 3 },
147
+ 'changeInfo.newValue': { Flex: 3 },
148
+ 'changeInfo.changedAt': { Flex: 3 },
149
+ changeTriggerLabel: { Flex: 2 },
150
+ undoActionColumn: { Width: 110 },
145
151
  },
146
152
  ColumnPinning: {
147
153
  undoActionColumn: 'right',
@@ -213,49 +219,31 @@ const buildGridOptions = (mainAdaptableInstance, changeHistoryLog) => {
213
219
  headerName: `Row (${mainPrimaryKeyColumnHeader})`,
214
220
  field: 'changeInfo.primaryKeyValue',
215
221
  cellDataType: 'text',
216
- suppressAutoSize: false,
217
- flex: 3,
218
- initialFlex: 3,
219
222
  },
220
223
  {
221
224
  headerName: 'Column',
222
225
  field: 'changedColumnLabel',
223
226
  cellDataType: 'text',
224
- suppressAutoSize: false,
225
- flex: 3,
226
- initialFlex: 3,
227
227
  },
228
228
  {
229
229
  headerName: 'Previous',
230
230
  field: 'changeInfo.oldValue',
231
231
  cellDataType: 'text',
232
- suppressAutoSize: false,
233
- flex: 3,
234
- initialFlex: 3,
235
232
  },
236
233
  {
237
234
  headerName: 'New',
238
235
  field: 'changeInfo.newValue',
239
236
  cellDataType: 'text',
240
- suppressAutoSize: false,
241
- flex: 3,
242
- initialFlex: 3,
243
237
  },
244
238
  {
245
239
  headerName: 'Changed',
246
240
  field: 'changeInfo.changedAt',
247
241
  cellDataType: 'date',
248
- suppressAutoSize: false,
249
- flex: 3,
250
- initialFlex: 3,
251
242
  },
252
243
  {
253
244
  headerName: 'Source',
254
245
  field: 'changeTriggerLabel',
255
246
  cellDataType: 'text',
256
- suppressAutoSize: false,
257
- flex: 2,
258
- initialFlex: 2,
259
247
  },
260
248
  ],
261
249
  rowData: mapChangeHistoryRowData(changeHistoryLog, mainAdaptableInstance),