@adaptabletools/adaptable 20.3.0 → 21.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/agGrid.d.ts +2 -1
  2. package/agGrid.js +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 +38 -38
  179. package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -2
  180. package/src/AdaptableOptions/EditOptions.d.ts +4 -7
  181. package/src/AdaptableOptions/FilterOptions.d.ts +50 -15
  182. package/src/AdaptableOptions/LayoutOptions.d.ts +8 -21
  183. package/src/AdaptableOptions/PredicateOptions.d.ts +1 -1
  184. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +1 -1
  185. package/src/AdaptableState/Common/AdaptableColumn.d.ts +7 -0
  186. package/src/AdaptableState/Common/AdaptablePredicate.js +2 -2
  187. package/src/AdaptableState/Common/CustomWindowConfig.d.ts +2 -2
  188. package/src/AdaptableState/Common/ExtendedLayout.d.ts +50 -0
  189. package/src/AdaptableState/FormatColumnState.d.ts +8 -1
  190. package/src/AdaptableState/InternalState.d.ts +1 -1
  191. package/src/AdaptableState/LayoutState.d.ts +26 -6
  192. package/src/AdaptableState/Selection/GridCell.d.ts +32 -0
  193. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  194. package/src/Api/AlertApi.d.ts +5 -11
  195. package/src/Api/ColumnApi.d.ts +17 -1
  196. package/src/Api/ColumnFilterApi.d.ts +32 -2
  197. package/src/Api/CustomSortApi.d.ts +5 -10
  198. package/src/Api/FlashingCellApi.d.ts +10 -6
  199. package/src/Api/FormatColumnApi.d.ts +8 -18
  200. package/src/Api/Implementation/AlertApiImpl.d.ts +6 -9
  201. package/src/Api/Implementation/AlertApiImpl.js +7 -6
  202. package/src/Api/Implementation/ApiBase.d.ts +2 -12
  203. package/src/Api/Implementation/ApiBase.js +5 -5
  204. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -2
  205. package/src/Api/Implementation/ColumnApiImpl.js +59 -23
  206. package/src/Api/Implementation/ColumnFilterApiImpl.d.ts +7 -1
  207. package/src/Api/Implementation/ColumnFilterApiImpl.js +76 -3
  208. package/src/Api/Implementation/ColumnScopeApiImpl.js +10 -2
  209. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -10
  210. package/src/Api/Implementation/CustomSortApiImpl.js +6 -4
  211. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +7 -6
  212. package/src/Api/Implementation/FlashingCellApiImpl.js +11 -8
  213. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +8 -18
  214. package/src/Api/Implementation/FormatColumnApiImpl.js +10 -9
  215. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -2
  216. package/src/Api/Implementation/LayoutApiImpl.js +101 -7
  217. package/src/Api/Implementation/LayoutHelpers.d.ts +1 -0
  218. package/src/Api/Implementation/LayoutHelpers.js +23 -4
  219. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +7 -5
  220. package/src/Api/Implementation/PlusMinusApiImpl.js +10 -7
  221. package/src/Api/Implementation/ScheduleApiImpl.d.ts +9 -16
  222. package/src/Api/Implementation/ScheduleApiImpl.js +15 -17
  223. package/src/Api/Implementation/ShortcutApiImpl.d.ts +5 -6
  224. package/src/Api/Implementation/ShortcutApiImpl.js +7 -8
  225. package/src/Api/Implementation/StyledColumnApiImpl.d.ts +7 -8
  226. package/src/Api/Implementation/StyledColumnApiImpl.js +12 -9
  227. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -4
  228. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +2 -1
  229. package/src/Api/Implementation/UserInterfaceApiImpl.js +10 -9
  230. package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -0
  231. package/src/Api/Internal/AdaptableInternalApi.js +3 -0
  232. package/src/Api/Internal/AlertInternalApi.d.ts +6 -6
  233. package/src/Api/Internal/AlertInternalApi.js +10 -10
  234. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +13 -0
  235. package/src/Api/Internal/ColumnFilterInternalApi.js +93 -1
  236. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -1
  237. package/src/Api/Internal/ColumnInternalApi.js +4 -0
  238. package/src/Api/Internal/DashboardInternalApi.js +1 -1
  239. package/src/Api/Internal/EntitlementInternalApi.d.ts +1 -0
  240. package/src/Api/Internal/EntitlementInternalApi.js +8 -0
  241. package/src/Api/Internal/ExportInternalApi.js +1 -1
  242. package/src/Api/Internal/FlashingCellInternalApi.js +1 -1
  243. package/src/Api/Internal/FormatColumnInternalApi.d.ts +8 -11
  244. package/src/Api/Internal/FormatColumnInternalApi.js +13 -13
  245. package/src/Api/Internal/GridInternalApi.d.ts +7 -10
  246. package/src/Api/Internal/GridInternalApi.js +76 -27
  247. package/src/Api/Internal/LayoutInternalApi.d.ts +5 -5
  248. package/src/Api/Internal/LayoutInternalApi.js +42 -5
  249. package/src/Api/Internal/PredicateInternalApi.d.ts +2 -6
  250. package/src/Api/Internal/PredicateInternalApi.js +4 -6
  251. package/src/Api/Internal/UserInterfaceInternalApi.d.ts +1 -0
  252. package/src/Api/Internal/UserInterfaceInternalApi.js +10 -3
  253. package/src/Api/LayoutApi.d.ts +7 -2
  254. package/src/Api/PlusMinusApi.d.ts +11 -7
  255. package/src/Api/ScheduleApi.d.ts +9 -16
  256. package/src/Api/ShortcutApi.d.ts +5 -6
  257. package/src/Api/StyledColumnApi.d.ts +10 -7
  258. package/src/Api/UserInterfaceApi.d.ts +5 -6
  259. package/src/Redux/ActionsReducers/InternalRedux.d.ts +4 -4
  260. package/src/Redux/ActionsReducers/InternalRedux.js +7 -7
  261. package/src/Redux/ActionsReducers/StyledColumnRedux.d.ts +7 -0
  262. package/src/Redux/ActionsReducers/StyledColumnRedux.js +13 -0
  263. package/src/Redux/Store/AdaptableStore.js +10 -10
  264. package/src/Strategy/AdaptableModuleBase.d.ts +14 -4
  265. package/src/Strategy/AdaptableModuleBase.js +46 -9
  266. package/src/Strategy/AlertModule.d.ts +3 -4
  267. package/src/Strategy/AlertModule.js +7 -4
  268. package/src/Strategy/CalculatedColumnModule.js +2 -2
  269. package/src/Strategy/CellSummaryModule.js +2 -2
  270. package/src/Strategy/ChartingModule.d.ts +3 -1
  271. package/src/Strategy/ChartingModule.js +9 -3
  272. package/src/Strategy/ColumnFilterModule.d.ts +1 -1
  273. package/src/Strategy/ColumnFilterModule.js +31 -15
  274. package/src/Strategy/ColumnInfoModule.js +2 -2
  275. package/src/Strategy/CommentModule.d.ts +1 -1
  276. package/src/Strategy/CommentModule.js +3 -3
  277. package/src/Strategy/CustomSortModule.d.ts +3 -4
  278. package/src/Strategy/CustomSortModule.js +2 -2
  279. package/src/Strategy/DashboardModule.js +1 -1
  280. package/src/Strategy/DataChangeHistoryModule.d.ts +2 -1
  281. package/src/Strategy/DataChangeHistoryModule.js +3 -10
  282. package/src/Strategy/DataImportModule.js +3 -3
  283. package/src/Strategy/ExportModule.js +1 -1
  284. package/src/Strategy/Fdc3Module.js +1 -1
  285. package/src/Strategy/FlashingCellModule.d.ts +3 -5
  286. package/src/Strategy/FlashingCellModule.js +3 -3
  287. package/src/Strategy/FormatColumnModule.d.ts +3 -4
  288. package/src/Strategy/FormatColumnModule.js +2 -2
  289. package/src/Strategy/FreeTextColumnModule.d.ts +1 -1
  290. package/src/Strategy/FreeTextColumnModule.js +2 -2
  291. package/src/Strategy/GridInfoModule.js +2 -2
  292. package/src/Strategy/Interface/IModule.d.ts +7 -3
  293. package/src/Strategy/LayoutModule.js +11 -11
  294. package/src/Strategy/NoteModule.d.ts +1 -1
  295. package/src/Strategy/NoteModule.js +3 -3
  296. package/src/Strategy/PlusMinusModule.d.ts +3 -4
  297. package/src/Strategy/PlusMinusModule.js +2 -2
  298. package/src/Strategy/QuickSearchModule.d.ts +2 -0
  299. package/src/Strategy/QuickSearchModule.js +9 -0
  300. package/src/Strategy/ScheduleModule.d.ts +3 -4
  301. package/src/Strategy/ScheduleModule.js +2 -2
  302. package/src/Strategy/SettingsPanelModule.js +1 -1
  303. package/src/Strategy/ShortcutModule.d.ts +3 -4
  304. package/src/Strategy/ShortcutModule.js +2 -2
  305. package/src/Strategy/StatusBarModule.d.ts +3 -2
  306. package/src/Strategy/StatusBarModule.js +6 -3
  307. package/src/Strategy/StyledColumnModule.d.ts +3 -4
  308. package/src/Strategy/StyledColumnModule.js +2 -2
  309. package/src/Strategy/SystemStatusModule.js +2 -2
  310. package/src/Strategy/TeamSharingModule.d.ts +1 -1
  311. package/src/Strategy/TeamSharingModule.js +5 -2
  312. package/src/Strategy/ToolPanelModule.d.ts +1 -1
  313. package/src/Strategy/ToolPanelModule.js +1 -4
  314. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +1 -1
  315. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  316. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -0
  317. package/src/Utilities/Extensions/ArrayExtensions.d.ts +15 -2
  318. package/src/Utilities/Extensions/ArrayExtensions.js +62 -13
  319. package/src/Utilities/ObjectFactory.js +3 -3
  320. package/src/Utilities/Services/AnnotationsService.js +1 -1
  321. package/src/Utilities/Services/Interface/IModuleService.d.ts +2 -1
  322. package/src/Utilities/Services/ModuleService.d.ts +3 -3
  323. package/src/Utilities/Services/ModuleService.js +19 -7
  324. package/src/View/AdaptableView.js +3 -1
  325. package/src/View/ColumnInfo/ColumnInfo.js +9 -3
  326. package/src/View/Components/AdaptableIconSelector/index.js +2 -3
  327. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.d.ts +0 -1
  328. package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +2 -3
  329. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.d.ts +0 -2
  330. package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +4 -7
  331. package/src/View/Components/ColumnFilter/ColumnFilter.js +11 -4
  332. package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +1 -1
  333. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -2
  334. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  335. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -2
  336. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +2 -2
  337. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  338. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +2 -2
  339. package/src/View/Components/ColumnFilter/utils.d.ts +2 -2
  340. package/src/View/Components/ColumnFilter/utils.js +6 -1
  341. package/src/View/Components/EntityRulesEditor/index.js +1 -2
  342. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  343. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +6 -6
  344. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -2
  345. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +1 -1
  346. package/src/View/Components/Selectors/ColumnSelector.js +1 -1
  347. package/src/View/Components/Selectors/FieldSelector.js +1 -1
  348. package/src/View/Components/Selectors/PermittedValuesSelector.d.ts +1 -0
  349. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  350. package/src/View/Dashboard/Dashboard.js +2 -2
  351. package/src/View/Dashboard/DashboardPopup.js +3 -1
  352. package/src/View/Dashboard/PinnedDashboard.js +1 -1
  353. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +9 -21
  354. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +58 -21
  355. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +11 -11
  356. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +1 -1
  357. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -1
  358. package/src/View/Layout/TransposedPopup.js +2 -2
  359. package/src/View/Layout/Wizard/sections/ColumnsSection.js +64 -9
  360. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +5 -5
  361. package/src/View/StatusBar/AdaptableStatusBar.js +1 -4
  362. package/src/View/StatusBar/StatusBarPopup.js +1 -1
  363. package/src/View/Theme/ThemeSelector.js +1 -1
  364. package/src/agGrid/AdaptableAgGrid.d.ts +11 -7
  365. package/src/agGrid/AdaptableAgGrid.js +251 -216
  366. package/src/agGrid/AdaptableFilterHandler.d.ts +18 -0
  367. package/src/agGrid/AdaptableFilterHandler.js +61 -0
  368. package/src/agGrid/AgGridAdapter.d.ts +3 -7
  369. package/src/agGrid/AgGridAdapter.js +13 -46
  370. package/src/agGrid/AgGridColumnAdapter.d.ts +2 -2
  371. package/src/agGrid/AgGridColumnAdapter.js +81 -36
  372. package/src/agGrid/AgGridFilterAdapter.d.ts +2 -0
  373. package/src/agGrid/AgGridFilterAdapter.js +48 -0
  374. package/src/agGrid/AgGridFloatingFilterAdapter.d.ts +2 -0
  375. package/src/agGrid/{FloatingFilterWrapper.js → AgGridFloatingFilterAdapter.js} +24 -35
  376. package/src/agGrid/AgGridModulesAdapter.d.ts +15 -0
  377. package/src/agGrid/AgGridModulesAdapter.js +66 -0
  378. package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +1 -1
  379. package/src/agGrid/editors/AdaptablePercentageEditor/InternalAdaptablePercentageEditor.js +1 -1
  380. package/src/components/Dialog/index.js +1 -1
  381. package/src/components/Dropdown/Arrows.js +2 -2
  382. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.d.ts +1 -1
  383. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +2 -2
  384. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -2
  385. package/src/components/FileDroppable/index.js +1 -1
  386. package/src/components/IconSelector/IconSelector.d.ts +2 -2
  387. package/src/components/OverlayTrigger/index.js +1 -1
  388. package/src/components/Select/Select.d.ts +1 -1
  389. package/src/components/Select/Select.js +116 -24
  390. package/src/components/icons/DefaultIcon.d.ts +0 -1
  391. package/src/components/icons/DefaultIcon.js +0 -6
  392. package/src/env.js +2 -2
  393. package/src/layout-manager/src/LayoutManagerModel.d.ts +6 -10
  394. package/src/layout-manager/src/index.d.ts +11 -3
  395. package/src/layout-manager/src/index.js +302 -87
  396. package/src/layout-manager/src/normalizeLayoutModel.js +7 -4
  397. package/src/layout-manager/src/simplifyLayoutModel.js +4 -4
  398. package/src/metamodel/adaptable.metamodel.d.ts +70 -19
  399. package/src/metamodel/adaptable.metamodel.js +1 -1
  400. package/src/migration/AdaptableUpgradeHelper.js +2 -0
  401. package/src/migration/VersionUpgrade17.js +1 -1
  402. package/src/migration/VersionUpgrade20.js +1 -0
  403. package/src/migration/VersionUpgrade21.d.ts +6 -0
  404. package/src/migration/VersionUpgrade21.js +24 -0
  405. package/src/types.d.ts +7 -8
  406. package/tsconfig.esm.tsbuildinfo +1 -1
  407. package/src/AdaptableState/Common/ExtendedLayoutInfo.d.ts +0 -27
  408. package/src/agGrid/FilterWrapper.d.ts +0 -2
  409. package/src/agGrid/FilterWrapper.js +0 -131
  410. package/src/agGrid/FloatingFilterWrapper.d.ts +0 -2
  411. package/src/agGrid/agGridModules.d.ts +0 -3
  412. package/src/agGrid/agGridModules.js +0 -15
  413. package/src/agGrid/getAgGridFilterNotifyModelFn.d.ts +0 -2
  414. package/src/agGrid/getAgGridFilterNotifyModelFn.js +0 -16
  415. /package/src/AdaptableState/Common/{ExtendedLayoutInfo.js → ExtendedLayout.js} +0 -0
@@ -0,0 +1,66 @@
1
+ import { AllEnterpriseModule } from 'ag-grid-enterprise';
2
+ export const AG_GRID_VERSION = AllEnterpriseModule.version;
3
+ export class AgGridModulesAdapter {
4
+ constructor(adaptableInstance) {
5
+ this.adaptableInstance = adaptableInstance;
6
+ this.allAgGridModules = new Set();
7
+ this.allAgGridModules = this.extractAgGridModuleNames(AllEnterpriseModule);
8
+ }
9
+ destroy() {
10
+ this.adaptableInstance = null;
11
+ this.allAgGridModules.clear();
12
+ this.allAgGridModules = null;
13
+ }
14
+ get agGridApi() {
15
+ return this.adaptableInstance.agGridAdapter.getAgGridApi();
16
+ }
17
+ isAgGridModuleRegistered(moduleName) {
18
+ return this.agGridApi.isModuleRegistered(moduleName);
19
+ }
20
+ getAgGridRegisteredModules() {
21
+ const registeredModules = [];
22
+ this.allAgGridModules.forEach((module) => {
23
+ const agModuleName = `${module.moduleName}Module`;
24
+ if (this.isAgGridModuleRegistered(agModuleName)) {
25
+ registeredModules.push(module);
26
+ }
27
+ });
28
+ return registeredModules;
29
+ }
30
+ getAgGridRegisteredModuleNames() {
31
+ return this.getAgGridRegisteredModules().map((module) => {
32
+ const agModuleName = `${module.moduleName}Module`;
33
+ return agModuleName;
34
+ });
35
+ }
36
+ getMandatoryAgGridModuleNames() {
37
+ const mandatoryModules = [];
38
+ const rowModelType = this.agGridApi.getGridOption('rowModelType');
39
+ switch (rowModelType) {
40
+ case 'serverSide':
41
+ mandatoryModules.push('ServerSideRowModelModule');
42
+ mandatoryModules.push('ServerSideRowModelApiModule');
43
+ break;
44
+ case 'infinite':
45
+ mandatoryModules.push('InfiniteRowModelModule');
46
+ break;
47
+ default:
48
+ mandatoryModules.push('ClientSideRowModelModule');
49
+ mandatoryModules.push('ClientSideRowModelApiModule');
50
+ }
51
+ mandatoryModules.push('CellApiModule', 'CellStyleModule', 'ColumnApiModule', 'ColumnMenuModule', 'ContextMenuModule', 'CustomFilterModule', 'EventApiModule', 'ExternalFilterModule', 'GridStateModule', 'GroupFilterModule', 'RenderApiModule', 'RowApiModule', 'RowGroupingModule', 'RowStyleModule', 'ScrollApiModule');
52
+ return mandatoryModules;
53
+ }
54
+ extractAgGridModuleNames(module, collectedModules = new Set()) {
55
+ if (!module || !module.moduleName) {
56
+ return collectedModules;
57
+ }
58
+ collectedModules.add(module);
59
+ if (module.dependsOn) {
60
+ module.dependsOn.forEach((dep) => {
61
+ this.extractAgGridModuleNames(dep, collectedModules);
62
+ });
63
+ }
64
+ return collectedModules;
65
+ }
66
+ }
@@ -81,5 +81,5 @@ export const InternalAdaptableNumberEditor = React.forwardRef(function InternalA
81
81
  focus();
82
82
  }
83
83
  } },
84
- React.createElement(Icon, { size: 18, name: "close", tabIndex: 0 }))) : null));
84
+ React.createElement(Icon, { size: 15, name: "close", tabIndex: 0 }))) : null));
85
85
  });
@@ -74,7 +74,7 @@ export const InternalAdaptablePercentageEditor = React.forwardRef(function Inter
74
74
  focus();
75
75
  }
76
76
  } },
77
- React.createElement(Icon, { size: 18, name: "close", tabIndex: 0 }))) : null,
77
+ React.createElement(Icon, { size: 15, name: "close", tabIndex: 0 }))) : null,
78
78
  React.createElement("div", { style: {
79
79
  position: 'absolute',
80
80
  right: showClear ? 20 : 0,
@@ -95,7 +95,7 @@ export const Dialog = React.forwardRef((props, dialogRef) => {
95
95
  return null;
96
96
  }
97
97
  const closeButton = showCloseButton ? (React.createElement(Box, { padding: 1, title: "Close dialog", onClick: () => setIsOpen(false), className: `${baseClassName}__close-button` },
98
- React.createElement(Icon, { size: 24, name: "close" }))) : null;
98
+ React.createElement(Icon, { size: 20, name: "close" }))) : null;
99
99
  const setPreventDismissFlag = (e) => {
100
100
  if (dismissOnClickOutside) {
101
101
  e.nativeEvent.preventDialogDismiss = true;
@@ -12,7 +12,7 @@ const Arrows = () => {
12
12
  transform: 'translate3d(0px, -50%, 0px)',
13
13
  cursor: 'pointer',
14
14
  } },
15
- React.createElement(Icon, { name: "triangle-up", size: 24, style: { position: 'relative', top: 7 } }),
16
- React.createElement(Icon, { name: "triangle-down", size: 24, style: { position: 'relative', top: -7 } })));
15
+ React.createElement(Icon, { name: "triangle-up", size: 20, style: { position: 'relative', top: 7 } }),
16
+ React.createElement(Icon, { name: "triangle-down", size: 20, style: { position: 'relative', top: -7 } })));
17
17
  };
18
18
  export default Arrows;
@@ -8,7 +8,7 @@ export declare const PrimitiveColumnOrFieldSelector: (props: {
8
8
  onChange: (colId: string) => void;
9
9
  hideFields?: boolean;
10
10
  }) => React.JSX.Element;
11
- export declare const PrimiteValueInput: (props: {
11
+ export declare const PrimitiveValueInput: (props: {
12
12
  inputType: ExpressionFunctionInputType;
13
13
  value: any;
14
14
  onChange(value: any): void;
@@ -63,7 +63,7 @@ export const PrimitiveColumnOrFieldSelector = (props) => {
63
63
  } }),
64
64
  input));
65
65
  };
66
- export const PrimiteValueInput = (props) => {
66
+ export const PrimitiveValueInput = (props) => {
67
67
  const adaptable = useAdaptable();
68
68
  const hasFields = React.useMemo(() => {
69
69
  return adaptable.api.expressionApi.internalApi.getAvailableFields()?.length > 0;
@@ -130,7 +130,7 @@ export const PrimiteValueInput = (props) => {
130
130
  } }));
131
131
  }
132
132
  else if (!['date', 'boolean'].includes(props.inputType)) {
133
- editor = (React.createElement(PermittedValuesSelector, { allowNewValues: true, value: props.value, columnId: mapColumnExpressionToColumnId(props.lefthandColumnIdParam), onChange: (value) => {
133
+ editor = (React.createElement(PermittedValuesSelector, { allowNewValues: true, searchable: 'inline', value: props.value, columnId: mapColumnExpressionToColumnId(props.lefthandColumnIdParam), onChange: (value) => {
134
134
  props.onChange(value);
135
135
  } }));
136
136
  }
@@ -9,7 +9,7 @@ import DropdownButton from '../../DropdownButton';
9
9
  import ErrorBox from '../../ErrorBox';
10
10
  import { Icon } from '../../icons';
11
11
  import SimpleButton from '../../SimpleButton';
12
- import { CombinatorSelector, ExpressionSelector, PrimiteValueInput, PrimitiveColumnOrFieldSelector, PrimitiveMultiValueInput, } from './QueryBuilderInputs';
12
+ import { CombinatorSelector, ExpressionSelector, PrimitiveValueInput, PrimitiveColumnOrFieldSelector, PrimitiveMultiValueInput, } from './QueryBuilderInputs';
13
13
  import { getOperatorMatchingInputs as getFunctionMatchingInputTypes, mapExpressionToFieldValue, } from './utils';
14
14
  const ITEM_HEIGHT = 40;
15
15
  const BASE_CLASS_NAME = 'ab-QueryBuilder-predicate-editor';
@@ -185,7 +185,7 @@ const PrimitiveFunctionEditor = (props) => {
185
185
  });
186
186
  } }));
187
187
  }
188
- return (React.createElement(PrimiteValueInput, { ...commonProps, key: key, value: restOfArgs[index] ?? null, onChange: (value) => {
188
+ return (React.createElement(PrimitiveValueInput, { ...commonProps, key: key, value: restOfArgs[index] ?? null, onChange: (value) => {
189
189
  const args = [...props.predicate.args];
190
190
  // +1 because col is the first argument
191
191
  args[index + 1] = value;
@@ -35,7 +35,7 @@ export const readJSONFile = async (file, toJSON) => {
35
35
  });
36
36
  };
37
37
  const FileDroppable = (props = {}) => {
38
- const { onDropSuccess, message, fileAccept = '.json', helpText = 'AdapTable No Code Version', defaultText = 'Click here to select a JSON file to load or drag it here', dragOverText = 'Drop file here to start Adaptable Wizard', icon = React.createElement(Icon, { name: "paperclip", size: 48 }), value, ...domProps } = props;
38
+ const { onDropSuccess, message, fileAccept = '.json', helpText = 'AdapTable No Code Version', defaultText = 'Click here to select a JSON file to load or drag it here', dragOverText = 'Drop file here to start Adaptable Wizard', icon = React.createElement(Icon, { name: "paperclip", size: 40 }), value, ...domProps } = props;
39
39
  const [state, dispatch] = useReducer(reducer, initialState);
40
40
  const onDragEnter = (e) => {
41
41
  dispatch({
@@ -1,7 +1,7 @@
1
1
  import { FunctionComponent } from 'react';
2
- import { UserInterfaceOptions } from '../../types';
2
+ import { CustomIcon } from '../../types';
3
3
  export interface IconSelectorProps {
4
- customIcons?: UserInterfaceOptions['customIcons'];
4
+ customIcons?: CustomIcon[];
5
5
  value?: string;
6
6
  onChange: (iconName: string) => void;
7
7
  clearable?: boolean;
@@ -40,7 +40,7 @@ const ensurePortalElement = () => {
40
40
  }
41
41
  portalElement = document.createElement('div');
42
42
  portalElement.style.position = 'absolute';
43
- portalElement.style.zIndex = '999999';
43
+ portalElement.style.zIndex = '9999999';
44
44
  portalElement.style.top = '0px';
45
45
  portalElement.style.left = '0px';
46
46
  document.body.appendChild(portalElement);
@@ -13,7 +13,7 @@ export type SelectProps<SelectValue extends unknown, IsMulti extends boolean = f
13
13
  menuPlacement?: 'auto' | 'bottom' | 'top';
14
14
  menuStyle?: React.CSSProperties;
15
15
  menuMinWidth?: string | number;
16
- searchable?: boolean;
16
+ searchable?: false | 'inline' | 'menulist';
17
17
  resizable?: boolean;
18
18
  isClearable?: boolean;
19
19
  closeMenuOnSelect?: boolean;
@@ -3,11 +3,12 @@ import * as React from 'react';
3
3
  import ReactSelect, { components, } from 'react-select';
4
4
  import CreatableSelect from 'react-select/creatable';
5
5
  import { Icon } from '../icons';
6
- import { Box } from 'rebass';
6
+ import { Box, Flex } from 'rebass';
7
7
  import { DataSource, InfiniteTable, components as InfiniteTableComponents, } from '@infinite-table/infinite-react';
8
- import { useCallback, useMemo } from 'react';
8
+ import { useCallback, useMemo, useState } from 'react';
9
9
  import join from '../utils/join';
10
10
  import { Resizable } from 're-resizable';
11
+ import Tooltip from '../Tooltip';
11
12
  const resizableDirections = {
12
13
  right: true,
13
14
  bottom: true,
@@ -28,6 +29,15 @@ const INFINITE_DOM_PROPS = {
28
29
  width: '100%',
29
30
  },
30
31
  };
32
+ const infiniteContentValueClassName = 'InfiniteCell_content_value';
33
+ const renderValue = ({ renderBag, data, value }) => {
34
+ if (data.tooltip) {
35
+ const tooltipNode = typeof data.tooltip === 'string' ? data.tooltip : value;
36
+ return (React.createElement(Tooltip, { label: tooltipNode },
37
+ React.createElement("div", { className: infiniteContentValueClassName }, renderBag.value)));
38
+ }
39
+ return React.createElement("div", { className: infiniteContentValueClassName }, renderBag.value);
40
+ };
31
41
  const INFINITE_COLUMNS_WITH_CHECKBOX = {
32
42
  label: {
33
43
  field: 'label',
@@ -44,9 +54,7 @@ const INFINITE_COLUMNS_WITH_CHECKBOX = {
44
54
  },
45
55
  renderHeaderSelectionCheckBox: true,
46
56
  className: 'ab-Select-CheckboxColumn',
47
- renderValue: ({ renderBag }) => {
48
- return React.createElement("div", { className: "InfiniteCell_content_value" }, renderBag.value);
49
- },
57
+ renderValue,
50
58
  renderHeader: (headerParams) => {
51
59
  return (React.createElement(React.Fragment, null,
52
60
  headerParams.renderBag.selectionCheckBox,
@@ -59,6 +67,7 @@ const INFINITE_COLUMNS_WITH_RADIO = {
59
67
  label: {
60
68
  field: 'label',
61
69
  defaultFlex: 1,
70
+ renderValue,
62
71
  },
63
72
  };
64
73
  const isRowDisabled = ({ data, }) => {
@@ -91,6 +100,19 @@ const doesOptionMatchValue = function (value) {
91
100
  };
92
101
  export const Select = function (props) {
93
102
  let maxLabelLength = 0;
103
+ const searchableInMenulist = props.searchable === 'menulist';
104
+ const searchableInline = props.searchable === 'inline';
105
+ // relevant for menulist search only
106
+ const menulistInputRef = React.useRef(null);
107
+ const [isSelectMenuOpen, setIsSelectMenuOpen] = useState(false);
108
+ const openSelectMenu = () => {
109
+ setIsSelectMenuOpen(true);
110
+ // it's a react-select bug, onMenuOpen is not called with controlled menuIsOpen
111
+ props.onMenuOpen?.();
112
+ };
113
+ const closeSelectMenu = () => {
114
+ setIsSelectMenuOpen(false);
115
+ };
94
116
  const ref = React.useRef(null);
95
117
  const valueToOptionMap = new Map((props.options || []).map((opt) => {
96
118
  let label = opt.label;
@@ -153,12 +175,23 @@ export const Select = function (props) {
153
175
  * If on each render a new reference is passed, the menu will not open using the keyboard.
154
176
  */
155
177
  const SelectContainer = React.useMemo(() => {
156
- return (inputProps) => {
157
- return (React.createElement(components.SelectContainer, { ...inputProps, innerProps: {
178
+ return (selectContainerProps) => {
179
+ return (React.createElement(components.SelectContainer, { ...selectContainerProps, innerProps: {
158
180
  // @ts-ignore
159
181
  'data-name': props['data-name'],
160
182
  'data-id': props['data-id'],
161
- ...inputProps.innerProps,
183
+ 'data-test': props.searchable || false,
184
+ ...selectContainerProps.innerProps,
185
+ onMouseDown: (e) => {
186
+ if (!searchableInMenulist) {
187
+ return;
188
+ }
189
+ if (!isSelectMenuOpen) {
190
+ openSelectMenu();
191
+ e.stopPropagation();
192
+ e.preventDefault();
193
+ }
194
+ },
162
195
  } }));
163
196
  };
164
197
  }, []);
@@ -193,10 +226,10 @@ export const Select = function (props) {
193
226
  }, [renderMultipleValues, props.placeholder]);
194
227
  const sizeRef = React.useRef({ ...defaultResizableSize });
195
228
  const MenuComponent = React.useMemo(() => {
196
- return (inputProps) => {
197
- const { isLoading } = inputProps;
229
+ return (menuProps) => {
230
+ const { isLoading } = menuProps;
198
231
  const theChildren = (React.createElement(React.Fragment, null,
199
- inputProps.children,
232
+ menuProps.children,
200
233
  React.createElement("div", { style: {
201
234
  display: isLoading ? 'block' : 'none',
202
235
  position: 'absolute',
@@ -212,9 +245,37 @@ export const Select = function (props) {
212
245
  sizeRef.current = newSize;
213
246
  }, []);
214
247
  return (React.createElement(React.Fragment, null,
215
- React.createElement(components.Menu, { ...inputProps, innerProps: {
248
+ React.createElement(components.Menu, { ...menuProps, innerProps: {
249
+ // @ts-ignore
216
250
  'data-name': 'menu-container',
217
- ...inputProps.innerProps,
251
+ ...menuProps.innerProps,
252
+ onBlur: (e) => {
253
+ if (!searchableInMenulist) {
254
+ return;
255
+ }
256
+ const { relatedTarget } = e;
257
+ const menuDOMNode = menuProps.innerRef && 'current' in menuProps.innerRef
258
+ ? menuProps.innerRef.current
259
+ : null;
260
+ if ((menuDOMNode && relatedTarget == menuDOMNode) ||
261
+ menuDOMNode?.contains(relatedTarget)) {
262
+ // ignore the event if the focus is still inside the menu
263
+ return;
264
+ }
265
+ setTimeout(() => {
266
+ // wee need to wait for the single value selectio to complete before closing
267
+ closeSelectMenu();
268
+ }, 100);
269
+ },
270
+ onMouseDownCapture: (event) => {
271
+ if (!searchableInMenulist) {
272
+ return;
273
+ }
274
+ if (props.isMulti) {
275
+ // to avoid the menu closing when clicking inside it
276
+ event.stopPropagation();
277
+ }
278
+ },
218
279
  } }, resizable ? (React.createElement(Resizable, { enable: resizableDirections, minWidth: '100%', maxHeight: '60vh', maxWidth: '60vw', defaultSize: sizeRef.current, onResizeStop: onResizeStop }, theChildren)) : (theChildren))));
219
280
  };
220
281
  }, [resizable]);
@@ -229,6 +290,12 @@ export const Select = function (props) {
229
290
  return (props) => {
230
291
  const { setValue, getValue, focusedOption, options, selectProps } = props;
231
292
  const { filterOption, inputValue, options: selectOptions, isLoading } = selectProps;
293
+ // Focus the input when MenuList mounts
294
+ React.useEffect(() => {
295
+ if (menulistInputRef.current) {
296
+ menulistInputRef.current.focus();
297
+ }
298
+ }, []);
232
299
  const filterFunction = React.useCallback(({ data }) => filterOption({ data, label: `${data.label}`, value: data.value }, inputValue), [filterOption, inputValue]);
233
300
  const hasFilter = inputValue !== '';
234
301
  const filteredOptionsValues = new Set();
@@ -352,11 +419,13 @@ export const Select = function (props) {
352
419
  const pk = dataSourceApi.getPrimaryKeyByIndex(rowIndex);
353
420
  api.rowSelectionApi.toggleRowSelection(pk);
354
421
  }
355
- // see #ensure-select-closes-after-clicking-outside
356
- requestAnimationFrame(() => {
357
- ref.current?.focus();
358
- });
422
+ if (searchableInMenulist) {
423
+ requestAnimationFrame(() => {
424
+ menulistInputRef.current?.focus();
425
+ });
426
+ }
359
427
  }, []);
428
+ const prevInputValueRef = React.useRef('');
360
429
  return (React.createElement(DataSource, {
361
430
  // @ts-ignore
362
431
  // data={props.options}
@@ -364,12 +433,33 @@ export const Select = function (props) {
364
433
  data: filteredOptions, primaryKey: "value", selectionMode: isMulti ? 'multi-row' : 'single-row',
365
434
  // @ts-ignore
366
435
  onRowSelectionChange: isLoading ? null : isMulti ? onRowSelectionChange : onSingleRowSelectionChange, rowSelection: rowSelection, isRowDisabled: isRowDisabled },
436
+ searchableInMenulist && (React.createElement(Flex, { p: 1 },
437
+ React.createElement("input", { ref: menulistInputRef, "data-name": "menulist-search-input", style: {
438
+ width: '100%',
439
+ }, className: 'ab-Select-MenulistSearch ab-Input ab-Input--type-text', autoCorrect: "off", autoComplete: "off", spellCheck: "false", type: "text", value: inputValue, onChange: (e) => {
440
+ const currentValue = e.currentTarget.value;
441
+ onInputChange(currentValue, {
442
+ action: 'input-change',
443
+ prevInputValue: prevInputValueRef.current,
444
+ });
445
+ prevInputValueRef.current = currentValue;
446
+ }, onMouseDown: (e) => {
447
+ e.stopPropagation();
448
+ const inputElement = e.target;
449
+ inputElement?.focus?.();
450
+ }, onTouchEnd: (e) => {
451
+ e.stopPropagation();
452
+ const inputElement = e.target;
453
+ inputElement?.focus?.();
454
+ }, placeholder: "Search..." }))),
367
455
  React.createElement(InfiniteTable, { header: isMulti && showHeaderSelectionCheckbox ? true : false, rowClassName: rowClassName, showZebraRows: false, rowHeight: '--ab-grid-row-height', onCellClick: isLoading ? null : onCellClick, keyboardNavigation: isLoading ? false : 'row', activeRowIndex: focusedOptionIndex, keyboardSelection: true, columns: isMulti ? INFINITE_COLUMNS_WITH_CHECKBOX : INFINITE_COLUMNS_WITH_RADIO, domProps: INFINITE_DOM_PROPS })));
368
456
  };
369
457
  }, [isMulti, showHeaderSelectionCheckbox]);
370
458
  const DropdownIndicator = React.useMemo(() => {
371
- return (props) => {
372
- return (React.createElement(components.DropdownIndicator, { ...props },
459
+ return (dropdownIndicatorProps) => {
460
+ return (React.createElement(components.DropdownIndicator, { ...dropdownIndicatorProps, innerProps: {
461
+ ...dropdownIndicatorProps.innerProps,
462
+ } },
373
463
  React.createElement(Icon, { name: "triangle-down", style: { height: 20, width: 20 } })));
374
464
  };
375
465
  }, []);
@@ -391,20 +481,22 @@ export const Select = function (props) {
391
481
  setInputValue(value);
392
482
  props.onInputChange?.(value);
393
483
  }, [props.onInputChange, isMulti]);
394
- return (React.createElement(SelectComponent, { ref: ref, "aria-label": props['aria-label'], onKeyDown: props.onKeyDown, inputValue: inputValue, onInputChange: onInputChange, onFocus: onFocus, onBlur: onBlur, onMenuOpen: props.onMenuOpen, isLoading: props.isLoading, options: props.options, className: join(props.className, 'ab-Select'), isDisabled: disabled, menuPlacement: props.menuPlacement ?? 'auto', isSearchable: props.searchable, hideSelectedOptions: false, isMulti: isMulti, value: selectedOption, blurInputOnSelect: false, menuPosition: props.menuPosition ?? 'absolute',
484
+ return (React.createElement(SelectComponent, { ref: ref, openMenuOnClick: searchableInMenulist ? false : undefined, openMenuOnFocus: searchableInMenulist ? false : undefined, menuIsOpen: searchableInMenulist ? isSelectMenuOpen : undefined, isSearchable: searchableInline, "aria-label": props['aria-label'], onKeyDown: props.onKeyDown, inputValue: inputValue, onInputChange: onInputChange, onFocus: onFocus, onBlur: onBlur, onMenuOpen: props.onMenuOpen, isLoading: props.isLoading, options: props.options, className: join(props.className, 'ab-Select'), isDisabled: disabled, menuPlacement: props.menuPlacement ?? 'auto', hideSelectedOptions: false, isMulti: isMulti, value: selectedOption, blurInputOnSelect: false, menuPosition: props.menuPosition ?? 'absolute',
395
485
  // This needed so the menu is not clipped by overflow: hidden
396
486
  menuPortalTarget: props.menuPortalTarget === undefined ? document.body : null, isClearable: props.isClearable, closeMenuOnSelect: props.closeMenuOnSelect, onChange: (option) => {
397
487
  if (isMulti) {
398
488
  const value = option.map((x) => x?.value);
399
489
  props.onChange(value);
400
- // ensure element keeps focus
401
- requestAnimationFrame(() => {
402
- ref.current?.focus();
403
- });
404
490
  }
405
491
  else {
406
492
  props.onChange(option?.value);
407
493
  }
494
+ if (searchableInMenulist) {
495
+ // ensure element keeps focus
496
+ requestAnimationFrame(() => {
497
+ menulistInputRef.current?.focus();
498
+ });
499
+ }
408
500
  }, placeholder: props.placeholder, createOptionPosition: 'first',
409
501
  // formatCreateLabel={(inputValue) => inputValue} // can we make this auto??
410
502
  // we use this: https://react-select.com/creatable
@@ -8,6 +8,5 @@ export type IconProps = {
8
8
  style?: React.CSSProperties;
9
9
  color?: string;
10
10
  };
11
- export declare const getSize: (size: number) => number;
12
11
  declare const _default: ({ children, size, name, tabIndex, color, ...props }: IconProps) => React.JSX.Element;
13
12
  export default _default;
@@ -1,12 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import join from '../utils/join';
3
- const HUNDRED_PERCENT_SIZE = 24;
4
3
  const DEFAULT_SIZE = 20;
5
- export const getSize = (size) => Math.round(size * (DEFAULT_SIZE / HUNDRED_PERCENT_SIZE));
6
4
  export default ({ children, size = DEFAULT_SIZE, name, tabIndex, color, ...props }) => {
7
- size =
8
- typeof size === 'number' || parseInt(size) == size
9
- ? getSize(size)
10
- : size;
11
5
  return (React.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", tabIndex: tabIndex, "data-id": name, "data-name": "AdaptableIcon", ...props, className: join(props.className, `ab-Icon ab-Icon--${name}`), style: { verticalAlign: 'middle', fill: color ?? 'currentColor', ...props.style } }, children));
12
6
  };
package/src/env.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export default {
2
2
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
3
- PUBLISH_TIMESTAMP: 1753107517703 || Date.now(),
4
- VERSION: "20.3.0" || '--current-version--',
3
+ PUBLISH_TIMESTAMP: 1756391396935 || Date.now(),
4
+ VERSION: "21.0.0-canary.0" || '--current-version--',
5
5
  };
@@ -1,3 +1,4 @@
1
+ import { ColumnSizingMap } from '../../AdaptableState/LayoutState';
1
2
  import { XOR } from '../../Utilities/Extensions/TypeExtensions';
2
3
  /**
3
4
  * Defines how a Column is sorted
@@ -13,6 +14,10 @@ export interface ColumnSortModel {
13
14
  SortOrder: 'Asc' | 'Desc';
14
15
  }
15
16
  export interface BaseLayoutModel {
17
+ /**
18
+ * @defaultValue 'single'
19
+ */
20
+ RowGroupDisplayType?: 'single' | 'multi';
16
21
  /**
17
22
  * Those are not actually used by the LayoutManager,
18
23
  * but we need to keep them here so we can give the layout
@@ -55,12 +60,7 @@ export interface BaseLayoutModel {
55
60
  ColumnVisibility?: {
56
61
  [columnId: string]: false;
57
62
  };
58
- /**
59
- * Set of widths for some (or all columns)
60
- */
61
- ColumnWidths?: {
62
- [columnId: string]: number;
63
- };
63
+ ColumnSizing?: ColumnSizingMap;
64
64
  /**
65
65
  * Behaviour for Expanding / Collapsing Row Groups
66
66
  */
@@ -142,10 +142,6 @@ export interface TableLayoutModel extends BaseLayoutModel {
142
142
  * Columns which are row-grouped when the Layout is applied
143
143
  */
144
144
  RowGroupedColumns?: string[];
145
- /**
146
- * @defaultValue 'single'
147
- */
148
- RowGroupDisplayType?: 'single' | 'multi';
149
145
  PivotAggregationColumns?: never;
150
146
  PivotColumns?: never;
151
147
  PivotGroupedColumns?: never;
@@ -42,11 +42,16 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
42
42
  getTableLayoutModelFromGrid(): TableLayoutModel;
43
43
  private isTreeMode;
44
44
  getUndecidedLayoutModelFromGrid(columnState: ColumnState[]): TableLayoutModel | PivotLayoutModel;
45
- static getAGGridInitialStateForLayout(layout: TableLayoutModel | PivotLayoutModel, colDefs: GridOptions['columnDefs'], options?: {
45
+ static getColumnDefsChangesForLayout(layout: TableLayoutModel | PivotLayoutModel, colDefs: GridOptions['columnDefs']): GridOptions['columnDefs'] | null;
46
+ static getAGGridInitialStateForLayout(layout: TableLayoutModel | PivotLayoutModel, colDefs: GridOptions['columnDefs'], options: {
46
47
  isTree: boolean;
48
+ colTypes: GridOptions['columnTypes'];
49
+ defaultColDef: GridOptions['defaultColDef'];
47
50
  }): GridState;
48
51
  static getAGGridInitialStateForTableLayout(layout: TableLayoutModel, colDefs: GridOptions['columnDefs'], _options?: {
49
- isTree: boolean;
52
+ isTree?: boolean;
53
+ colTypes?: GridOptions['columnTypes'];
54
+ defaultColDef?: GridOptions['defaultColDef'];
50
55
  }): GridState;
51
56
  static getAGGridInitialStateForPivotLayout(layout: PivotLayoutModel, colDefs: GridOptions['columnDefs']): GridState;
52
57
  silentSetCurrentLayout(layout: TableLayoutModel | PivotLayoutModel, options?: {
@@ -60,6 +65,8 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
60
65
  private suspendAgGridListener;
61
66
  private resumeAgGridListener;
62
67
  private applyLayout;
68
+ applyColumnDefsChanges(layout: TableLayoutModel | PivotLayoutModel): boolean;
69
+ private applyColumnSizingColumnDefsChanges;
63
70
  private applyTableLayout;
64
71
  private getRowGroupNodePathsAs;
65
72
  applyRowGroupValues(RowGroupValues: TableLayoutModel['RowGroupValues'], rowGroupedColumns: string[]): void;
@@ -71,7 +78,7 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
71
78
  private computeRowGrouping;
72
79
  private computeColumnSorts;
73
80
  private getDefaultColumnWidthForCol;
74
- private computeColumnWidths;
81
+ private computeColumnSizing;
75
82
  private computeColumnOrderAndVisibility;
76
83
  autoSizeColumns(columnIds?: string[]): false | string[];
77
84
  private applyPivotLayout;
@@ -82,5 +89,6 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
82
89
  private setupPivotTotals;
83
90
  private patchPivotAggregationTotal;
84
91
  private getPivotTotalColumnConfig;
92
+ private isInPivotMode;
85
93
  }
86
94
  export {};