@adaptabletools/adaptable-cjs 23.0.0-canary.5 → 23.0.0-canary.7

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 (335) hide show
  1. package/icons/sort-asc.svg +1 -1
  2. package/index.css +756 -257
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/DataSetOptions.d.ts +26 -2
  5. package/src/AdaptableOptions/DefaultAdaptableOptions.js +0 -1
  6. package/src/AdaptableOptions/SettingsPanelOptions.d.ts +42 -10
  7. package/src/AdaptableState/Common/AdaptableFormat.d.ts +7 -0
  8. package/src/AdaptableState/Common/AdaptableMessageType.d.ts +1 -1
  9. package/src/AdaptableState/Common/Enums.d.ts +1 -1
  10. package/src/AdaptableState/Common/Enums.js +1 -1
  11. package/src/AdaptableState/StyledColumnState.d.ts +2 -2
  12. package/src/Api/Internal/AlertInternalApi.js +1 -1
  13. package/src/Api/Internal/DataSetInternalApi.d.ts +3 -0
  14. package/src/Api/Internal/DataSetInternalApi.js +73 -13
  15. package/src/Redux/Store/AdaptableStore.js +6 -4
  16. package/src/Strategy/CalculatedColumnModule.js +1 -0
  17. package/src/Strategy/ColumnFilterModule.js +1 -0
  18. package/src/Strategy/FlashingCellModule.js +6 -2
  19. package/src/Strategy/FormatColumnModule.js +1 -1
  20. package/src/Strategy/FreeTextColumnModule.js +38 -28
  21. package/src/Strategy/Interface/IModule.d.ts +3 -1
  22. package/src/Strategy/LayoutModule.js +15 -66
  23. package/src/Strategy/StyledColumnModule.js +11 -28
  24. package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.d.ts +1 -0
  25. package/src/Strategy/Utilities/CustomSort/getCustomSortColumnViewItems.js +1 -0
  26. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.d.ts +2 -0
  27. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.js +17 -1
  28. package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +1 -0
  29. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +5 -1
  30. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.d.ts +11 -0
  31. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.js +111 -0
  32. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.d.ts +48 -0
  33. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +177 -0
  34. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.d.ts +1 -0
  35. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.js +1 -0
  36. package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.d.ts +26 -0
  37. package/src/Strategy/Utilities/Layout/rowGroupSummaryHelpers.js +97 -0
  38. package/src/Utilities/Defaults/DefaultSettingsPanel.d.ts +3 -5
  39. package/src/Utilities/Defaults/DefaultSettingsPanel.js +48 -42
  40. package/src/Utilities/Helpers/FormatHelper.js +3 -0
  41. package/src/Utilities/Helpers/ScheduleHelper.js +2 -0
  42. package/src/Utilities/Helpers/StyleHelper.d.ts +18 -0
  43. package/src/Utilities/Helpers/StyleHelper.js +30 -1
  44. package/src/Utilities/Helpers/StyledColumnGradientHelper.js +6 -4
  45. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.d.ts +3 -0
  46. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.js +19 -0
  47. package/src/Utilities/getScopeViewItems.js +2 -0
  48. package/src/Utilities/wizardSelection.d.ts +10 -0
  49. package/src/Utilities/wizardSelection.js +22 -0
  50. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +2 -2
  51. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsSidebarForm.js +2 -2
  52. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +3 -3
  53. package/src/View/Alert/AlertViewPanel.js +2 -2
  54. package/src/View/Alert/Utilities/getAlertButtonStyle.js +7 -4
  55. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.d.ts +0 -1
  56. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +1 -6
  57. package/src/View/Alert/Wizard/AlertButtonsEditor.js +2 -1
  58. package/src/View/Alert/Wizard/AlertMessageWizardSection.d.ts +1 -1
  59. package/src/View/Alert/Wizard/AlertMessageWizardSection.js +1 -2
  60. package/src/View/Alert/Wizard/AlertNotificationWizardSection.d.ts +1 -1
  61. package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +3 -4
  62. package/src/View/Alert/Wizard/AlertScheduledWizardSection.d.ts +1 -1
  63. package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +1 -2
  64. package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +1 -1
  65. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +30 -7
  66. package/src/View/Alert/Wizard/AlertWizard.js +3 -3
  67. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.d.ts +2 -1
  68. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +3 -14
  69. package/src/View/BulkUpdate/BulkUpdatePopup.js +1 -1
  70. package/src/View/BulkUpdate/BulkUpdateViewPanel.js +4 -6
  71. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.d.ts +1 -1
  72. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +1 -2
  73. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  74. package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +29 -3
  75. package/src/View/CellSummary/CellSummaryViewPanel.js +4 -4
  76. package/src/View/Charting/ShowChartButton.js +8 -8
  77. package/src/View/ColumnInfo/ColumnInfo.js +21 -1
  78. package/src/View/Components/AdaptableObjectCollection/index.js +2 -3
  79. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +1 -1
  80. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +4 -4
  81. package/src/View/Components/AdaptableObjectRow/index.js +2 -2
  82. package/src/View/Components/Buttons/ButtonBase/index.js +2 -3
  83. package/src/View/Components/Buttons/ButtonNew.d.ts +2 -0
  84. package/src/View/Components/Buttons/ButtonNew.js +1 -1
  85. package/src/View/Components/Buttons/EntityListActionButtons.js +3 -3
  86. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.js +2 -2
  87. package/src/View/Components/ColumnFilter/ColumnFilter.js +1 -2
  88. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +0 -1
  89. package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +3 -1
  90. package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +2 -2
  91. package/src/View/Components/ColumnSelector/index.d.ts +12 -0
  92. package/src/View/Components/ColumnSelector/index.js +30 -6
  93. package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.js +2 -2
  94. package/src/View/Components/ModuleValueSelector/index.js +2 -1
  95. package/src/View/Components/NewScopeComponent.js +3 -8
  96. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +5 -4
  97. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +4 -4
  98. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +2 -2
  99. package/src/View/Components/Popups/AdaptablePopup/Navigation.d.ts +3 -2
  100. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +38 -28
  101. package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +3 -4
  102. package/src/View/Components/Popups/AdaptablePopup/TopBar.js +2 -3
  103. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.d.ts +11 -0
  104. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.js +5 -0
  105. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.d.ts +3 -1
  106. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +27 -28
  107. package/src/View/Components/PredicateEditor/PredicateEditor.js +1 -1
  108. package/src/View/Components/RangesComponent.d.ts +2 -4
  109. package/src/View/Components/RangesComponent.js +95 -66
  110. package/src/View/Components/ReorderDraggable/index.js +2 -3
  111. package/src/View/Components/Selectors/BulkUpdateValueSelector.d.ts +0 -2
  112. package/src/View/Components/Selectors/BulkUpdateValueSelector.js +3 -3
  113. package/src/View/Components/StyleComponent.js +30 -63
  114. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +9 -6
  115. package/src/View/Components/ToolPanel/ToolPanelPopup.d.ts +3 -13
  116. package/src/View/Components/ToolPanel/ToolPanelPopup.js +5 -80
  117. package/src/View/Components/ToolPanel/ToolPanelPopupSections.d.ts +17 -0
  118. package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +81 -0
  119. package/src/View/Components/ValueSelector/index.d.ts +29 -0
  120. package/src/View/Components/ValueSelector/index.js +112 -29
  121. package/src/View/Components/wizardColumnListStyles.d.ts +10 -0
  122. package/src/View/Components/wizardColumnListStyles.js +13 -0
  123. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  124. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +4 -6
  125. package/src/View/CustomSort/Wizard/CustomSortWizard.js +2 -2
  126. package/src/View/Dashboard/DashboardPopup.d.ts +1 -11
  127. package/src/View/Dashboard/DashboardPopup.js +3 -67
  128. package/src/View/Dashboard/DashboardPopupSections.d.ts +20 -0
  129. package/src/View/Dashboard/DashboardPopupSections.js +73 -0
  130. package/src/View/Dashboard/PinnedToolbarsSelector.js +2 -2
  131. package/src/View/DataChangeHistory/DataChangeHistoryPopup.d.ts +1 -6
  132. package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +8 -20
  133. package/src/View/DataChangeHistory/DataChangeHistoryTable.d.ts +8 -0
  134. package/src/View/DataChangeHistory/DataChangeHistoryTable.js +99 -0
  135. package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +5 -3
  136. package/src/View/DataChangeHistory/buildActionColumnButton.js +33 -41
  137. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.d.ts +15 -0
  138. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.js +46 -0
  139. package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -1
  140. package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +32 -19
  141. package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
  142. package/src/View/DataSet/DataSetViewPanel.d.ts +2 -2
  143. package/src/View/Export/ExportDestinationPicker.js +4 -5
  144. package/src/View/Export/ExportViewPanel.js +2 -2
  145. package/src/View/Export/Wizard/ReportColumnsWizardSection.d.ts +2 -1
  146. package/src/View/Export/Wizard/ReportColumnsWizardSection.js +2 -7
  147. package/src/View/Export/Wizard/ReportRowsWizardSection.d.ts +2 -1
  148. package/src/View/Export/Wizard/ReportRowsWizardSection.js +2 -5
  149. package/src/View/FlashingCell/FlashingCellStyle.d.ts +4 -2
  150. package/src/View/FlashingCell/FlashingCellStyle.js +5 -3
  151. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.d.ts +2 -1
  152. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +5 -9
  153. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.d.ts +9 -0
  154. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.js +10 -0
  155. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.d.ts +1 -1
  156. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +5 -1
  157. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.d.ts +0 -5
  158. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +3 -8
  159. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +1 -2
  160. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +1 -1
  161. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +101 -44
  162. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +0 -1
  163. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +1 -6
  164. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +55 -15
  165. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
  166. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +2 -3
  167. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +5 -9
  168. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +4 -9
  169. package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +3 -2
  170. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +1 -2
  171. package/src/View/GridFilter/GridFilterPopupUI/index.js +3 -2
  172. package/src/View/GridFilter/GridFilterViewPanel.js +5 -5
  173. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +2 -3
  174. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
  175. package/src/View/Layout/LayoutViewPanel.js +2 -2
  176. package/src/View/Layout/Wizard/LayoutWizard.js +24 -28
  177. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +13 -1
  178. package/src/View/Layout/Wizard/sections/AggregationsSection.js +77 -33
  179. package/src/View/Layout/Wizard/sections/ColumnsSection.d.ts +4 -1
  180. package/src/View/Layout/Wizard/sections/ColumnsSection.js +154 -275
  181. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +4 -1
  182. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +146 -143
  183. package/src/View/Layout/Wizard/sections/PivotColumnsSection.d.ts +5 -2
  184. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +22 -10
  185. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.d.ts +4 -1
  186. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +21 -10
  187. package/src/View/Layout/Wizard/sections/RowGroupingSection.d.ts +5 -2
  188. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +23 -12
  189. package/src/View/Layout/Wizard/sections/RowSelectionSection.js +7 -3
  190. package/src/View/Layout/Wizard/sections/RowSummarySection.js +10 -10
  191. package/src/View/Layout/Wizard/sections/SortSection.d.ts +12 -2
  192. package/src/View/Layout/Wizard/sections/SortSection.js +43 -18
  193. package/src/View/Layout/Wizard/sections/columnLayoutCards.d.ts +20 -0
  194. package/src/View/Layout/Wizard/sections/columnLayoutCards.js +167 -0
  195. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.d.ts +30 -0
  196. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +216 -0
  197. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.d.ts +8 -0
  198. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.js +72 -0
  199. package/src/View/Layout/Wizard/sections/layoutWizardColumns.d.ts +11 -0
  200. package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +57 -0
  201. package/src/View/License/LicenseWatermark.js +1 -1
  202. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.d.ts +1 -1
  203. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -2
  204. package/src/View/Note/NoteEditor.js +2 -2
  205. package/src/View/QuickSearch/QuickSearchPopup.js +2 -3
  206. package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +1 -1
  207. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +1 -1
  208. package/src/View/SmartEdit/SmartEditPopup.js +2 -2
  209. package/src/View/SmartEdit/SmartEditViewPanel.js +2 -2
  210. package/src/View/StateManagement/StateManagementPopup.js +1 -1
  211. package/src/View/StateManagement/components/ExportDropdown.d.ts +2 -2
  212. package/src/View/StateManagement/components/ExportDropdown.js +12 -13
  213. package/src/View/StatusBar/StatusBarPanel.js +2 -2
  214. package/src/View/StatusBar/StatusBarPopup.js +33 -5
  215. package/src/View/StatusBar/statusBarPanelHelpers.d.ts +2 -0
  216. package/src/View/StatusBar/statusBarPanelHelpers.js +11 -0
  217. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +2 -0
  218. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +13 -10
  219. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +2 -2
  220. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +137 -119
  221. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +7 -13
  222. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +2 -1
  223. package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.d.ts +5 -0
  224. package/src/View/StyledColumn/Wizard/StyledColumnTypeThumbnail.js +54 -0
  225. package/src/View/StyledColumn/Wizard/StyledColumnWizard.d.ts +2 -0
  226. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +28 -6
  227. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +8 -17
  228. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +2 -1
  229. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +46 -28
  230. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +97 -42
  231. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +2 -1
  232. package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.d.ts +1 -1
  233. package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +31 -45
  234. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +10 -5
  235. package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +93 -6
  236. package/src/View/UIHelper.d.ts +0 -2
  237. package/src/View/UIHelper.js +8 -24
  238. package/src/View/Wizard/CollapsibleWizardCard.d.ts +68 -0
  239. package/src/View/Wizard/CollapsibleWizardCard.js +90 -0
  240. package/src/View/Wizard/OnePageWizards.js +6 -6
  241. package/src/View/Wizard/SummaryColorTag.d.ts +24 -0
  242. package/src/View/Wizard/SummaryColorTag.js +79 -0
  243. package/src/View/Wizard/WizardTypeSelection.d.ts +34 -0
  244. package/src/View/Wizard/WizardTypeSelection.js +40 -0
  245. package/src/View/Wizard/rowGroupSummaryTags.d.ts +18 -0
  246. package/src/View/Wizard/rowGroupSummaryTags.js +21 -0
  247. package/src/View/Wizard/scopeSummaryTags.d.ts +6 -0
  248. package/src/View/Wizard/scopeSummaryTags.js +38 -0
  249. package/src/agGrid/AdaptableAgGrid.js +1 -1
  250. package/src/agGrid/AgGridAdapter.js +0 -5
  251. package/src/agGrid/AgGridColumnAdapter.js +1 -1
  252. package/src/agGrid/cellRenderers/ActionColumnRenderer.js +4 -7
  253. package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -1
  254. package/src/components/Card/index.js +5 -7
  255. package/src/components/CheckBox/index.js +2 -3
  256. package/src/components/CodeBlock/index.js +2 -3
  257. package/src/components/ColorPicker/ColorPicker.d.ts +1 -0
  258. package/src/components/ColorPicker/ColorPicker.js +8 -6
  259. package/src/components/ColorPicker/OptionalColorPicker.d.ts +12 -0
  260. package/src/components/ColorPicker/OptionalColorPicker.js +31 -0
  261. package/src/components/ColorPicker/index.d.ts +1 -0
  262. package/src/components/ColorPicker/index.js +1 -0
  263. package/src/components/Combobox/comboboxUtils.d.ts +1 -0
  264. package/src/components/Combobox/index.js +19 -18
  265. package/src/components/Dashboard/DashboardManager.js +2 -4
  266. package/src/components/Dialog/index.js +4 -4
  267. package/src/components/DragAndDropContext/DragAndDropContext.d.ts +5 -0
  268. package/src/components/DragAndDropContext/DragAndDropContext.js +4 -1
  269. package/src/components/DragAndDropContext/ModuleManager.d.ts +15 -3
  270. package/src/components/DragAndDropContext/ModuleManager.js +43 -4
  271. package/src/components/DragAndDropContext/TabList.d.ts +11 -4
  272. package/src/components/DragAndDropContext/TabList.js +52 -38
  273. package/src/components/DragAndDropContext/UnusedPanel.d.ts +4 -3
  274. package/src/components/DragAndDropContext/UnusedPanel.js +13 -9
  275. package/src/components/DragAndDropContext/dragScope.d.ts +6 -0
  276. package/src/components/DragAndDropContext/dragScope.js +34 -0
  277. package/src/components/DragAndDropContext/types.d.ts +7 -0
  278. package/src/components/DropdownButton/index.d.ts +33 -25
  279. package/src/components/DropdownButton/index.js +24 -158
  280. package/src/components/EmptyContent/index.js +2 -3
  281. package/src/components/ErrorBox/index.js +2 -3
  282. package/src/components/ExpressionEditor/BaseEditorInput.js +3 -3
  283. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +3 -3
  284. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +9 -9
  285. package/src/components/FieldWrap/index.js +2 -3
  286. package/src/components/Flex.js +2 -2
  287. package/src/components/FormLayout/index.d.ts +1 -1
  288. package/src/components/HelpBlock/index.js +3 -4
  289. package/src/components/IconSelector/IconSelector.d.ts +8 -0
  290. package/src/components/IconSelector/IconSelector.js +13 -8
  291. package/src/components/IconSelector/index.d.ts +1 -0
  292. package/src/components/IconSelector/index.js +3 -0
  293. package/src/components/Modal/index.js +2 -2
  294. package/src/components/NewSelect/index.js +11 -1
  295. package/src/components/Panel/index.js +7 -7
  296. package/src/components/Radio/index.d.ts +1 -1
  297. package/src/components/Radio/index.js +8 -6
  298. package/src/components/SimpleButton/index.js +7 -7
  299. package/src/components/StylePreview.js +2 -3
  300. package/src/components/Tabs/index.js +4 -4
  301. package/src/components/Tag/Tag.d.ts +16 -0
  302. package/src/components/Tag/Tag.js +16 -5
  303. package/src/components/Tag/columnScopeTagHelpers.d.ts +8 -0
  304. package/src/components/Tag/columnScopeTagHelpers.js +12 -0
  305. package/src/components/Tag/index.d.ts +1 -1
  306. package/src/components/Tag/index.js +3 -1
  307. package/src/components/Textarea/index.js +2 -3
  308. package/src/components/Toggle/Toggle.d.ts +2 -0
  309. package/src/components/Toggle/Toggle.js +14 -7
  310. package/src/components/Toggle/ToggleGroup.js +2 -2
  311. package/src/components/ToggleButton/index.js +4 -5
  312. package/src/components/Tree/TreeDropdown/index.js +3 -5
  313. package/src/components/WarningBox/index.js +2 -3
  314. package/src/components/icons/sort-asc.js +1 -1
  315. package/src/components/ui/button.d.ts +2 -2
  316. package/src/components/ui/combobox.d.ts +3 -1
  317. package/src/components/ui/combobox.js +2 -2
  318. package/src/components/ui/input-group.d.ts +1 -1
  319. package/src/components/ui/select.js +3 -2
  320. package/src/components/ui/textarea.js +1 -1
  321. package/src/env.js +2 -2
  322. package/src/layout-manager/src/index.js +7 -3
  323. package/src/metamodel/adaptable.metamodel.js +1 -1
  324. package/src/types.d.ts +1 -1
  325. package/tsconfig.cjs.tsbuildinfo +1 -1
  326. package/src/View/DataChangeHistory/DataChangeHistoryGrid.d.ts +0 -17
  327. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +0 -295
  328. package/src/components/DropdownButton/DropdownButtonItem.d.ts +0 -12
  329. package/src/components/DropdownButton/DropdownButtonItem.js +0 -2
  330. package/src/components/DropdownButton/renderItem.d.ts +0 -14
  331. package/src/components/DropdownButton/renderItem.js +0 -14
  332. package/src/components/DropdownButton/useExpanded.d.ts +0 -24
  333. package/src/components/DropdownButton/useExpanded.js +0 -59
  334. package/src/components/NewDropdownButton/index.d.ts +0 -27
  335. package/src/components/NewDropdownButton/index.js +0 -28
@@ -12,7 +12,7 @@ const icons_1 = require("../../../components/icons");
12
12
  const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
13
13
  const AdaptableFormControlTextClear_1 = require("../Forms/AdaptableFormControlTextClear");
14
14
  const Flex_1 = require("../../../components/Flex");
15
- const clsx_1 = tslib_1.__importDefault(require("clsx"));
15
+ const utils_1 = require("../../../lib/utils");
16
16
  function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
17
17
  const optionsMap = (0, react_1.useMemo)(() => {
18
18
  if (selectedMap) {
@@ -37,9 +37,23 @@ function useValuesMap({ options, value, toIdentifier, selectedMap, }) {
37
37
  return { selectedMap: result, optionsMap };
38
38
  }
39
39
  const baseClassName = 'ab-ValueSelector';
40
+ /** Clicks on these targets must not toggle row selection (`toggleSelectionOnRowClick`). */
41
+ const ROW_CLICK_IGNORE_SELECTOR = 'button, input, select, textarea, a, [data-drag-handle], [data-slot=select-trigger], [data-slot=select-content], [data-slot=select-item], .ab-Select';
42
+ const ROW_TOGGLE_SUPPRESS_MS = 150;
40
43
  function ValueSelector(props) {
41
- const { options, value, filter, onChange, allowReorder = true, singleSelect, toLabel, toListLabel, toIdentifier, showSelectedOnlyLabel, showFilterInput, onShowSelectedOnlyChange, isOptionDisabled, disabled, } = props;
44
+ const { options, value, filter, onChange, allowReorder = true, singleSelect, toLabel, toListLabel, toIdentifier, renderOptionTrailing, toggleSelectionOnRowClick, showSelectedOnlyLabel, showFilterInput, filterPlaceholder, compact, optionLayout = 'label-in-checkbox', hideShowSelectedOnly, compactHeaderClassName, compactFilterClassName, onShowSelectedOnlyChange, isOptionDisabled, disabled, optionClassName, className, style, } = props;
42
45
  const [searchInputValue, setSearchInputValue] = React.useState('');
46
+ const suppressRowToggleUntilRef = (0, react_1.useRef)(0);
47
+ (0, react_1.useEffect)(() => {
48
+ const markSelectInteraction = (event) => {
49
+ const target = event.target;
50
+ if (target.closest(ROW_CLICK_IGNORE_SELECTOR)) {
51
+ suppressRowToggleUntilRef.current = Date.now() + ROW_TOGGLE_SUPPRESS_MS;
52
+ }
53
+ };
54
+ document.addEventListener('pointerdown', markSelectInteraction, true);
55
+ return () => document.removeEventListener('pointerdown', markSelectInteraction, true);
56
+ }, []);
43
57
  const preparedToLabel = toListLabel ?? toLabel;
44
58
  const [selectedOnly, doSetSelectedOnly] = (0, react_1.useState)(false);
45
59
  const setSelectedOnly = (0, react_1.useCallback)((selectedOnly) => {
@@ -74,30 +88,66 @@ function ValueSelector(props) {
74
88
  return result;
75
89
  });
76
90
  }, [filter, options, searchInputValue, selectedMap, selectedOnly, toIdentifier]);
91
+ const handleOptionRowClick = (0, react_1.useCallback)((option, identifier, optionDisabled, event) => {
92
+ if (Date.now() < suppressRowToggleUntilRef.current) {
93
+ return;
94
+ }
95
+ const target = event.target;
96
+ if (target.closest(ROW_CLICK_IGNORE_SELECTOR)) {
97
+ return;
98
+ }
99
+ if (optionDisabled) {
100
+ return;
101
+ }
102
+ updateSelection((next) => {
103
+ if (next.has(identifier)) {
104
+ next.delete(identifier);
105
+ }
106
+ else {
107
+ next.set(identifier, option);
108
+ }
109
+ });
110
+ }, [updateSelection]);
77
111
  const renderOptionRow = (option, index, reorderable, itemDomProps) => {
78
112
  const identifier = toIdentifier(option);
79
- const label = !reorderEnabled ? preparedToLabel(option) : null;
80
- const { onPointerDown, className: itemClassName, ...restDomProps } = itemDomProps ?? {};
81
- return ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { alignItems: "center", "data-index": index, "data-id": identifier, "data-name": "option", ...restDomProps, className: (0, clsx_1.default)('twa:bg-primary twa:text-primary-foreground twa:rounded-standard twa:p-2', {
82
- 'twa:mt-1': index,
113
+ const label = preparedToLabel(option);
114
+ const { onPointerDown, onClick: itemOnClick, className: itemClassName, ...restDomProps } = itemDomProps ?? {};
115
+ const optionDisabled = disabled || (isOptionDisabled ? isOptionDisabled(option) : false);
116
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", "data-index": index, "data-id": identifier, "data-name": "option", ...restDomProps, onClick: toggleSelectionOnRowClick
117
+ ? (event) => {
118
+ itemOnClick?.(event);
119
+ handleOptionRowClick(option, identifier, optionDisabled, event);
120
+ }
121
+ : itemOnClick, className: (0, utils_1.cn)(toggleSelectionOnRowClick && 'twa:cursor-pointer', reorderable ? 'ab-DraggableListItem' : 'twa:bg-primary twa:text-primary-foreground', 'twa:rounded-standard', compact ? (singleSelect ? 'twa:py-1.5 twa:px-1.5' : 'twa:py-1 twa:px-1.5') : 'twa:p-2', {
122
+ 'twa:mt-0.5': compact && index,
123
+ 'twa:mt-1': !compact && index,
83
124
  'twa:mt-0': !index,
84
- }, itemClassName, `${baseClassName}__option`), children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "twa:flex-1", children: [reorderable ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { onPointerDown: onPointerDown, className: "twa:mr-3", children: (0, jsx_runtime_1.jsx)(icons_1.Icon, { name: "drag", style: { cursor: 'grab' } }) })) : null, singleSelect ? ((0, jsx_runtime_1.jsx)(Radio_1.default, { checked: selectedMap.has(identifier), "data-name": identifier, onChange: (checked) => {
85
- updateSelection((next) => {
86
- next.clear();
87
- if (checked) {
88
- next.set(identifier, option);
89
- }
90
- });
91
- }, children: label })) : ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { "data-name": identifier, disabled: disabled || (isOptionDisabled ? isOptionDisabled(option) : false), onChange: (checked) => {
92
- updateSelection((next) => {
93
- if (checked) {
94
- next.set(identifier, option);
95
- }
96
- else {
97
- next.delete(identifier);
98
- }
99
- });
100
- }, checked: selectedMap.has(identifier), children: label })), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:ml-2 twa:flex-1", children: reorderEnabled ? preparedToLabel(option) : null })] }) }));
125
+ }, itemClassName, optionClassName, `${baseClassName}__option`), children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "twa:flex-1 twa:min-w-0", children: [reorderable ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { "data-drag-handle": true, onPointerDown: onPointerDown, className: (0, utils_1.cn)('twa:shrink-0', compact ? 'twa:mr-2' : 'twa:mr-3'), children: (0, jsx_runtime_1.jsx)(icons_1.Icon, { name: "drag", style: { cursor: 'grab' } }) })) : null, singleSelect ? ((0, jsx_runtime_1.jsx)(Radio_1.default, { className: (0, utils_1.cn)('twa:flex-1 twa:min-w-0', compact && !singleSelect && 'twa:my-0!'), checked: selectedMap.has(identifier), "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
126
+ updateSelection((next) => {
127
+ next.clear();
128
+ if (checked) {
129
+ next.set(identifier, option);
130
+ }
131
+ });
132
+ }, children: label })) : optionLayout === 'label-beside-checkbox' ? ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", className: "twa:flex-1 twa:min-w-0", children: [(0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: "twa:shrink-0", "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
133
+ updateSelection((next) => {
134
+ if (checked) {
135
+ next.set(identifier, option);
136
+ }
137
+ else {
138
+ next.delete(identifier);
139
+ }
140
+ });
141
+ }, checked: selectedMap.has(identifier) }), (0, jsx_runtime_1.jsx)(Flex_1.Flex, { alignItems: "center", className: "twa:mx-1.5 twa:text-3 twa:min-w-0", "data-name": "option-label", children: label })] })) : ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: (0, utils_1.cn)('twa:flex-1 twa:min-w-0', compact && 'twa:my-0!'), "data-name": identifier, disabled: optionDisabled, onClick: toggleSelectionOnRowClick ? (event) => event.stopPropagation() : undefined, onChange: (checked) => {
142
+ updateSelection((next) => {
143
+ if (checked) {
144
+ next.set(identifier, option);
145
+ }
146
+ else {
147
+ next.delete(identifier);
148
+ }
149
+ });
150
+ }, checked: selectedMap.has(identifier), children: label }))] }), renderOptionTrailing ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:shrink-0", children: renderOptionTrailing(option) })) : null] }));
101
151
  };
102
152
  const renderOption = (option, index) => {
103
153
  const identifier = toIdentifier(option);
@@ -135,8 +185,19 @@ function ValueSelector(props) {
135
185
  });
136
186
  },
137
187
  };
138
- const optionList = ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: `${baseClassName}__body twa:flex-1 twa:overflow-auto`, flexDirection: "column", children: (0, jsx_runtime_1.jsx)("div", { children: filteredOptions.map(renderOption) }) }));
139
- return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { style: props.style, className: (0, clsx_1.default)('twa:flex-1', baseClassName), flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: "twa:mb-1", children: showFilterInput && filter ? ((0, jsx_runtime_1.jsx)(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue, OnTextChange: setSearchInputValue, placeholder: "Type to search", inputClassName: "twa:p-3", className: "twa:flex-1 twa:m-[3px]" })) : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1" })) }), (0, exports.renderSelectionSection)(selectionSectionProps), reorderEnabled ? ((0, jsx_runtime_1.jsx)(dnd_1.DragDropProvider, { children: (0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: `${baseClassName}__body twa:flex-1 twa:overflow-auto`, flexDirection: "column", children: (0, jsx_runtime_1.jsx)(dnd_1.DragList, { dragListId: "value-selector", orientation: "vertical", onDragProxyMove: dnd_1.defaultDragProxyMove, onDragProxySetup: ({ proxyElement }) => {
188
+ const optionList = ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: `${baseClassName}__body twa:flex-1 twa:min-h-0 twa:overflow-auto`, flexDirection: "column", children: (0, jsx_runtime_1.jsx)("div", { children: filteredOptions.map(renderOption) }) }));
189
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { style: style, className: (0, utils_1.cn)('twa:flex-1 twa:min-h-0', compact && 'twa:overflow-hidden', baseClassName, compact && `${baseClassName}--compact`, className), flexDirection: "column", children: [!compact && ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: "twa:mb-1", children: showFilterInput && filter ? ((0, jsx_runtime_1.jsx)(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue, OnTextChange: setSearchInputValue, placeholder: filterPlaceholder ?? 'Type to search', inputClassName: "twa:p-3", className: "twa:flex-1 twa:m-[3px]" })) : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1" })) })), (0, exports.renderSelectionSection)({
190
+ ...selectionSectionProps,
191
+ compact,
192
+ showFilterInput,
193
+ filter,
194
+ searchInputValue,
195
+ setSearchInputValue,
196
+ filterPlaceholder,
197
+ hideShowSelectedOnly,
198
+ compactHeaderClassName,
199
+ compactFilterClassName,
200
+ }), reorderEnabled ? ((0, jsx_runtime_1.jsx)(dnd_1.DragDropProvider, { children: (0, jsx_runtime_1.jsx)(Flex_1.Flex, { className: `${baseClassName}__body twa:flex-1 twa:min-h-0 twa:overflow-auto`, flexDirection: "column", children: (0, jsx_runtime_1.jsx)(dnd_1.DragList, { dragListId: "value-selector", orientation: "vertical", onDragProxyMove: dnd_1.defaultDragProxyMove, onDragProxySetup: ({ proxyElement }) => {
140
201
  proxyElement.classList.add('twa:shadow-md');
141
202
  }, onDrop: (_sortedIndexes) => {
142
203
  const selection = [];
@@ -161,8 +222,30 @@ function ValueSelector(props) {
161
222
  }, children: (listDomProps) => (0, jsx_runtime_1.jsx)("div", { ...listDomProps, children: filteredOptions.map(renderOption) }) }) }) })) : (optionList)] }));
162
223
  }
163
224
  const renderSelectionSection = (props) => {
164
- const { value, options, disabled, singleSelect, toLabel, toIdentifier, } = props;
165
- const selectionBox = ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2", children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: (0, clsx_1.default)('twa:flex twa:flex-row', 'twa:border-b twa:border-primarydark/30 twa:rounded-standard'), children: [singleSelect ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
225
+ const { value, options, singleSelect, toLabel, toIdentifier, compact, showFilterInput, filter, searchInputValue, setSearchInputValue, filterPlaceholder, hideShowSelectedOnly, compactHeaderClassName, compactFilterClassName, } = props;
226
+ const compactFilterClass = compactFilterClassName ?? 'twa:flex-1 twa:min-w-0';
227
+ const compactFilterUsesSpacer = compactFilterClassName != null && !/\bflex-1\b/.test(compactFilterClassName);
228
+ const headerRowClassName = (0, utils_1.cn)('twa:mb-1', 'twa:p-1', 'twa:border-b twa:border-primarydark/30', compact
229
+ ? (0, utils_1.cn)('twa:w-full twa:min-w-0 twa:gap-2 twa:font-bold twa:shrink-0', compactHeaderClassName)
230
+ : 'twa:flex twa:flex-row ');
231
+ const selectionBox = compact ? ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", className: headerRowClassName, children: [singleSelect ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
232
+ if (!value.length) {
233
+ return (0, jsx_runtime_1.jsx)("span", { className: "twa:opacity-70", children: "(none selected)" });
234
+ }
235
+ const selectedId = value[0];
236
+ const selectedOption = options.find((o) => toIdentifier(o) === selectedId);
237
+ if (!selectedOption) {
238
+ return (0, jsx_runtime_1.jsx)("span", { className: "twa:opacity-70", children: "(none selected)" });
239
+ }
240
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "twa:opacity-70 twa:mr-1", children: "Selected:" }), (0, jsx_runtime_1.jsx)("span", { className: "twa:font-medium", children: toLabel(selectedOption) })] }));
241
+ })() })) : ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: "twa:shrink-0", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
242
+ if (checked) {
243
+ props.onSelectAll();
244
+ }
245
+ else {
246
+ props.onClear();
247
+ }
248
+ }, children: "Select All" })), hideShowSelectedOnly ? null : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:shrink-0 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })), showFilterInput && filter ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [compactFilterUsesSpacer ? (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1 twa:min-w-0" }) : null, (0, jsx_runtime_1.jsx)(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue ?? '', OnTextChange: setSearchInputValue ?? (() => undefined), placeholder: filterPlaceholder ?? 'Search...', className: compactFilterClass })] })) : null] })) : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2", children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: headerRowClassName, children: [singleSelect ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal twa:items-center", children: (() => {
166
249
  // For single-select we show the *name* of the selected option
167
250
  // rather than a (1 of N) counter — useful when the list is
168
251
  // long enough to scroll past the chosen row.
@@ -182,7 +265,7 @@ const renderSelectionSection = (props) => {
182
265
  else {
183
266
  props.onClear();
184
267
  }
185
- }, children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:items-center twa:gap-3", children: ["Select All", (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:font-normal", children: ["(", value.length, " of ", options.length, " selected)"] })] }) })), (0, jsx_runtime_1.jsx)("div", { className: "twa:flex-1" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:mr-2 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox })] }) }));
186
- return (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: (0, clsx_1.default)(`${baseClassName}__header `), children: selectionBox });
268
+ }, children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:flex twa:flex-row twa:items-center twa:gap-3", children: ["Select All", (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:font-normal", children: ["(", value.length, " of ", options.length, " selected)"] })] }) })), hideShowSelectedOnly ? null : (0, jsx_runtime_1.jsx)("div", { className: "twa:flex-1" }), hideShowSelectedOnly ? null : ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:mr-2 twa:text-2 twa:font-normal", children: props.showOnlySelectedCheckbox }))] }) }));
269
+ return (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: (0, utils_1.cn)(`${baseClassName}__header`), children: selectionBox });
187
270
  };
188
271
  exports.renderSelectionSection = renderSelectionSection;
@@ -0,0 +1,10 @@
1
+ /** ValueSelector row sizing — matches Visibility and Order list rows. */
2
+ export declare const WIZARD_COLUMN_LIST_OPTION_CLASS = "twa:!py-1 twa:!px-1.5";
3
+ /** Single-select column lists — ~50% taller than multi-select compact rows. */
4
+ export declare const WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = "twa:!py-1.5 twa:!px-1.5";
5
+ /** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
6
+ export declare const WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = "twa:!py-2 twa:!px-2";
7
+ /** Compact list header — spacing between Select All, Show Selected Only, and search. */
8
+ export declare const WIZARD_COLUMN_LIST_HEADER_CLASS = "twa:gap-4";
9
+ /** Narrow search field (matches Visibility list column width, not full card width). */
10
+ export declare const WIZARD_COLUMN_LIST_SEARCH_CLASS = "twa:w-[12rem] twa:shrink-0 twa:min-w-0";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WIZARD_COLUMN_LIST_SEARCH_CLASS = exports.WIZARD_COLUMN_LIST_HEADER_CLASS = exports.WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = exports.WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = exports.WIZARD_COLUMN_LIST_OPTION_CLASS = void 0;
4
+ /** ValueSelector row sizing — matches Visibility and Order list rows. */
5
+ exports.WIZARD_COLUMN_LIST_OPTION_CLASS = 'twa:!py-1 twa:!px-1.5';
6
+ /** Single-select column lists — ~50% taller than multi-select compact rows. */
7
+ exports.WIZARD_COLUMN_LIST_OPTION_CLASS_SINGLE_SELECT = 'twa:!py-1.5 twa:!px-1.5';
8
+ /** Taller rows when ultra-compact one-line cards are not required (e.g. Custom Sort wizard). */
9
+ exports.WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED = 'twa:!py-2 twa:!px-2';
10
+ /** Compact list header — spacing between Select All, Show Selected Only, and search. */
11
+ exports.WIZARD_COLUMN_LIST_HEADER_CLASS = 'twa:gap-4';
12
+ /** Narrow search field (matches Visibility list column width, not full card width). */
13
+ exports.WIZARD_COLUMN_LIST_SEARCH_CLASS = 'twa:w-[12rem] twa:shrink-0 twa:min-w-0';
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { CustomSort } from '../../../AdaptableState/CustomSortState';
3
+ import { AdaptableApi } from '../../../Api/AdaptableApi';
3
4
  export type CustomSortColumnWizardSectionProps = {
4
5
  onChange: (data: CustomSort) => void;
5
6
  isNew: boolean;
6
7
  allCustomSorts: CustomSort[];
7
8
  };
8
- export declare const renderCustomSortColumn: (data: CustomSort) => React.JSX.Element;
9
+ export declare const renderCustomSortColumn: (data: CustomSort, api: AdaptableApi) => React.JSX.Element;
9
10
  export declare const isValidCustomSortColumn: (data: CustomSort, allCustomSorts: CustomSort[]) => true | string;
10
11
  export declare const CustomSortColumnWizardSection: (props: CustomSortColumnWizardSectionProps) => React.JSX.Element;
@@ -6,14 +6,13 @@ const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
7
  const Tag_1 = require("../../../components/Tag");
8
8
  const ColumnSelector_1 = require("../../Components/ColumnSelector");
9
+ const wizardColumnListStyles_1 = require("../../Components/wizardColumnListStyles");
9
10
  const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
10
11
  const Flex_1 = require("../../../components/Flex");
11
12
  const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
12
- const AdaptableFormControlTextClear_1 = require("../../Components/Forms/AdaptableFormControlTextClear");
13
13
  const Card_1 = require("../../../components/Card");
14
- const renderCustomSortColumn = (data) => {
15
- const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
16
- return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:py-2 twa:pr-2", children: [(0, jsx_runtime_1.jsxs)(Tag_1.Tag, { className: "twa:mr-2", children: ["Name: ", data.Name] }), (0, jsx_runtime_1.jsxs)(Tag_1.Tag, { children: ["Column: ", api.columnApi.getFriendlyNameForColumnId(data.ColumnId)] })] }));
14
+ const renderCustomSortColumn = (data, api) => {
15
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:py-2 twa:pr-2", children: [(0, jsx_runtime_1.jsxs)(Tag_1.Tag, { className: "twa:mr-2", children: ["Name: ", data.Name] }), (0, jsx_runtime_1.jsxs)(Tag_1.ColumnTag, { children: ["Column: ", api.columnApi.getFriendlyNameForColumnId(data.ColumnId)] })] }));
17
16
  };
18
17
  exports.renderCustomSortColumn = renderCustomSortColumn;
19
18
  const isValidCustomSortColumn = (data, allCustomSorts) => {
@@ -51,14 +50,13 @@ const CustomSortColumnWizardSection = (props) => {
51
50
  });
52
51
  });
53
52
  }, []);
54
- const [columnsSearchText, setColumnsSearchText] = React.useState('');
55
53
  const onNameChange = (event) => {
56
54
  props.onChange({
57
55
  ...data,
58
56
  Name: event.target.value,
59
57
  });
60
58
  };
61
- return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:h-full", children: [(0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3 twa:shrink-0", children: (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, children: [(0, jsx_runtime_1.jsxs)(Card_1.Card.Title, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Name" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for the Custom Sort" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { className: "twa:max-w-[300px] twa:w-full", "data-name": "custom-sort-name", onChange: onNameChange, value: data?.Name ?? '' }) })] }) }), (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:flex-1 twa:min-h-0", children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "twa:p-2 twa:gap-3 twa:border-b twa:mb-2 twa:border-b-foreground/20", children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-5 twa:font-medium", children: "Column" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:max-w-[520px]", children: "Select the column to apply the Custom Sort to" })] }), (0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "twa:px-2 twa:pb-2 twa:gap-2", children: (0, jsx_runtime_1.jsx)(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: columnsSearchText, OnTextChange: setColumnsSearchText, placeholder: "Type to search columns", className: "twa:flex-1" }) }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1 twa:min-h-0 twa:overflow-auto twa:px-2 twa:pb-2", children: (0, jsx_runtime_1.jsx)(ColumnSelector_1.NewColumnSelector, { columnFilterText: columnsSearchText, availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: (ids) => {
59
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:h-full twa:min-h-0", children: [(0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3 twa:shrink-0", children: (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, children: [(0, jsx_runtime_1.jsxs)(Card_1.Card.Title, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Name" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Provide a unique name for the Custom Sort" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { className: "twa:max-w-[300px] twa:w-full", "data-name": "custom-sort-name", onChange: onNameChange, value: data?.Name ?? '' }) })] }) }), (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden", children: [(0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "row", alignItems: "center", className: "twa:p-2 twa:gap-3 twa:border-b twa:mb-2 twa:border-b-foreground/20 twa:shrink-0", children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-5 twa:font-medium", children: "Column" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:max-w-[520px]", children: "Select the column to apply the Custom Sort to" })] }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:px-2 twa:pb-2 twa:flex twa:flex-col", children: (0, jsx_runtime_1.jsx)(ColumnSelector_1.NewColumnSelector, { compactColumnList: true, className: "twa:h-full", optionClassName: wizardColumnListStyles_1.WIZARD_COLUMN_LIST_OPTION_CLASS_RELAXED, availableColumns: sortableCols, selected: data.ColumnId ? [data.ColumnId] : [], singleSelect: true, onChange: (ids) => {
62
60
  props.onChange({
63
61
  ...data,
64
62
  SortedValues: [],
@@ -45,9 +45,9 @@ const CustomSortWizard = (props) => {
45
45
  renderSummary: CustomSortColumnWizardSection_1.renderCustomSortColumn,
46
46
  details: 'Enter Name and select a Column to Sort',
47
47
  render: () => {
48
- return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2 twa:h-full", children: (0, jsx_runtime_1.jsx)(CustomSortColumnWizardSection_1.CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort, allCustomSorts: allCustomSorts }) }));
48
+ return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2 twa:h-full twa:min-h-0 twa:flex twa:flex-col", children: (0, jsx_runtime_1.jsx)(CustomSortColumnWizardSection_1.CustomSortColumnWizardSection, { isNew: props.isNew, onChange: setCustomSort, allCustomSorts: allCustomSorts }) }));
49
49
  },
50
- title: 'Name & Column',
50
+ title: 'Settings',
51
51
  },
52
52
  {
53
53
  title: 'Sort Order',
@@ -15,18 +15,8 @@ interface DashboardPopupComponentProps extends ModuleViewPopupProps<DashboardPop
15
15
  onSetDashboardFloating: (isFloating: boolean) => DashboardRedux.DashboardSetIsFloatingAction;
16
16
  onSetDashboardHidden: (isHidden: boolean) => DashboardRedux.DashboardSetIsHiddenAction;
17
17
  }
18
- export declare enum DashboardConfigView {
19
- Toolbars = "Toolbars",
20
- Buttons = "Buttons",
21
- PinnedToolbars = "PinnedToolbars"
22
- }
23
- export interface DashboardPopupState {
24
- DashboardConfigView: DashboardConfigView;
25
- }
26
- declare class DashboardPopupComponent extends React.Component<DashboardPopupComponentProps, DashboardPopupState> {
27
- constructor(props: DashboardPopupComponentProps);
18
+ declare class DashboardPopupComponent extends React.Component<DashboardPopupComponentProps> {
28
19
  render(): React.JSX.Element;
29
- onDashboardConfigViewChanged(event: React.FormEvent<any>): void;
30
20
  }
31
21
  export declare let DashboardPopup: import("react-redux").ConnectedComponent<typeof DashboardPopupComponent, {
32
22
  [x: string]: any;
@@ -1,84 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DashboardPopup = exports.DashboardConfigView = void 0;
3
+ exports.DashboardPopup = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
7
  const react_redux_1 = require("react-redux");
8
8
  const DashboardRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/DashboardRedux"));
9
9
  const PopupPanel_1 = require("../Components/Popups/AdaptablePopup/PopupPanel");
10
- const DashboardManager_1 = tslib_1.__importDefault(require("../../components/Dashboard/DashboardManager"));
11
10
  const GeneralConstants_1 = require("../../Utilities/Constants/GeneralConstants");
12
- const ModuleValueSelector_1 = require("../Components/ModuleValueSelector");
13
- const PinnedToolbarsSelector_1 = require("./PinnedToolbarsSelector");
14
- const Flex_1 = require("../../components/Flex");
15
- const ToggleButton_1 = require("../../components/ToggleButton");
16
- const Tabs_1 = require("../../components/Tabs");
17
- const Card_1 = require("../../components/Card");
18
- var DashboardConfigView;
19
- (function (DashboardConfigView) {
20
- DashboardConfigView["Toolbars"] = "Toolbars";
21
- DashboardConfigView["Buttons"] = "Buttons";
22
- DashboardConfigView["PinnedToolbars"] = "PinnedToolbars";
23
- })(DashboardConfigView || (exports.DashboardConfigView = DashboardConfigView = {}));
11
+ const DashboardPopupSections_1 = require("./DashboardPopupSections");
24
12
  class DashboardPopupComponent extends React.Component {
25
- constructor(props) {
26
- super(props);
27
- this.state = {
28
- DashboardConfigView: DashboardConfigView.Toolbars,
29
- };
30
- }
31
13
  render() {
32
- const systemToolbars = this.props.api.dashboardApi.internalApi
33
- .getModuleToolbars()
34
- .map((toolbar) => ({
35
- Id: toolbar.id,
36
- Title: toolbar.friendlyName,
37
- }));
38
- const customToolbars = this.props.api.dashboardApi.getCustomToolbars().map((ct) => ({
39
- Id: ct.name,
40
- Title: ct.title ? ct.title : ct.name,
41
- }));
42
- const tabs = this.props.DashboardState.Tabs.map((tab) => {
43
- const Toolbars = tab.Toolbars.filter((vt) => {
44
- let customToolbar = this.props.api.dashboardApi
45
- .getCustomToolbars()
46
- .find((ct) => ct.name === vt);
47
- return customToolbar
48
- ? true
49
- : this.props.api.internalApi
50
- .getModuleService()
51
- .isAdapTableModulePresent(vt);
52
- });
53
- return { ...tab, Toolbars };
54
- });
55
- let selectedModuleButtons = [];
56
- this.props.DashboardState.ModuleButtons.forEach((x) => {
57
- let menuItem = this.props.InternalState.SettingsPanelModuleEntries.find((m) => m.category == x);
58
- if (menuItem?.isVisible) {
59
- selectedModuleButtons.push(x);
60
- }
61
- });
62
- const allModuleButtons = this.props.InternalState.SettingsPanelModuleEntries.map((x) => x.category);
63
- const baseClassName = 'ab-Dashboard-Popup';
64
14
  const dashboardAccessLevel = this.props.api.entitlementApi.getEntitlementAccessLevelForModule('Dashboard');
65
15
  const areDashboardSettingsVisible = dashboardAccessLevel == GeneralConstants_1.ACCESS_LEVEL_FULL || dashboardAccessLevel == GeneralConstants_1.ACCESS_LEVEL_READ_ONLY;
66
16
  const isDashboardDisabled = dashboardAccessLevel === GeneralConstants_1.ACCESS_LEVEL_READ_ONLY;
67
- const isModuleCheckboxDisabled = (module) => {
68
- if (module === 'SettingsPanel') {
69
- return this.props.api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
70
- }
71
- return false;
72
- };
73
- const contentCls = '';
74
- return ((0, jsx_runtime_1.jsx)(PopupPanel_1.PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:h-full twa:gap-4", children: [areDashboardSettingsVisible && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(Card_1.Card, { children: [(0, jsx_runtime_1.jsx)(Card_1.Card.Title, { gap: 8, children: "Display Settings" }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { gap: 2, className: "twa:p-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "twa:flex twa:flex-row twa:items-center twa:justify-start twa:gap-3", children: [(0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { className: "twa:w-24", onChange: (visible) => this.props.onSetDashboardHidden(!visible), checked: !this.props.IsHidden, "data-name": "dashboard-visibility", children: this.props.IsHidden ? 'Hidden' : 'Visible' }), this.props.DashboardState.Tabs?.length > 0 ? ((0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { disabled: this.props.IsFloating, className: "twa:w-24", onChange: (expanded) => this.props.onSetDashboardCollapsed(!expanded), checked: !this.props.IsCollapsed, "data-name": "expand-state", children: this.props.IsCollapsed ? 'Collapsed' : 'Expanded' })) : null, this.props.api.optionsApi.getDashboardOptions().canFloat ? ((0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { className: "twa:w-24", onChange: (pinned) => this.props.onSetDashboardFloating(!pinned), checked: !this.props.IsFloating, "data-name": "floating", children: this.props.IsFloating ? 'Floating' : 'Pinned' })) : null] }) })] }) })), (0, jsx_runtime_1.jsxs)(Card_1.Card, { className: "twa:flex-1 twa:overflow-hidden", gap: 0, children: [(0, jsx_runtime_1.jsx)(Card_1.Card.Title, { children: "Contents" }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-2", children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { className: "twa:flex-1 twa:min-h-0", children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "pinned-toolbars", children: "Pinned Toolbars" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "tabbed-toolbars", children: "Tabs & Toolbars" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { value: "buttons", children: "Buttons" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Content, { value: "pinned-toolbars", className: contentCls, children: (0, jsx_runtime_1.jsx)(PinnedToolbarsSelector_1.PinnedToolbarsSelector, {}) }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Content, { value: "tabbed-toolbars", className: contentCls, children: (0, jsx_runtime_1.jsx)(DashboardManager_1.default, { disabled: isDashboardDisabled, availableToolbars: [...systemToolbars, ...customToolbars], tabs: tabs, onTabsChange: this.props.onDashboardSetTabs, api: this.props.api }) }), (0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Content, { value: "buttons", className: contentCls, children: (0, jsx_runtime_1.jsx)(ModuleValueSelector_1.ModuleValueSelector, { disabled: isDashboardDisabled, options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, onChange: (selectedValues) => this.props.onDashboardSetModuleButtons(selectedValues) }) })] }) })] })] }) }));
75
- }
76
- onDashboardConfigViewChanged(event) {
77
- let e = event.target;
78
- let dashboardConfigView = e.value;
79
- this.setState({
80
- DashboardConfigView: dashboardConfigView,
81
- });
17
+ return ((0, jsx_runtime_1.jsx)(PopupPanel_1.PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed(), bodyClassName: "twa:gap-3 twa:flex twa:flex-col", children: (0, jsx_runtime_1.jsx)(DashboardPopupSections_1.DashboardPopupSections, { DashboardState: this.props.DashboardState, InternalState: this.props.InternalState, IsCollapsed: this.props.IsCollapsed, IsHidden: this.props.IsHidden, IsFloating: this.props.IsFloating, isDashboardDisabled: isDashboardDisabled, areDashboardSettingsVisible: areDashboardSettingsVisible, canFloat: this.props.api.optionsApi.getDashboardOptions().canFloat ?? false, onDashboardSetModuleButtons: this.props.onDashboardSetModuleButtons, onDashboardSetTabs: this.props.onDashboardSetTabs, onSetDashboardCollapsed: this.props.onSetDashboardCollapsed, onSetDashboardHidden: this.props.onSetDashboardHidden, onSetDashboardFloating: this.props.onSetDashboardFloating }) }));
82
18
  }
83
19
  }
84
20
  function mapStateToProps(state, ownProps) {
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { InternalState } from '../../AdaptableState/InternalState';
3
+ import { DashboardState, DashboardTab } from '../../AdaptableState/DashboardState';
4
+ import { AdaptableModuleButtons } from '../../AdaptableState/Common/Types';
5
+ export interface DashboardPopupSectionsProps {
6
+ DashboardState: DashboardState;
7
+ InternalState: InternalState;
8
+ IsCollapsed: boolean;
9
+ IsHidden: boolean;
10
+ IsFloating: boolean;
11
+ isDashboardDisabled: boolean;
12
+ areDashboardSettingsVisible: boolean;
13
+ canFloat: boolean;
14
+ onDashboardSetModuleButtons: (moduleButtons: AdaptableModuleButtons) => void;
15
+ onDashboardSetTabs: (tabs: DashboardTab[]) => void;
16
+ onSetDashboardCollapsed: (isCollapsed: boolean) => void;
17
+ onSetDashboardHidden: (isHidden: boolean) => void;
18
+ onSetDashboardFloating: (isFloating: boolean) => void;
19
+ }
20
+ export declare const DashboardPopupSections: React.FunctionComponent<DashboardPopupSectionsProps>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DashboardPopupSections = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const React = tslib_1.__importStar(require("react"));
7
+ const DashboardManager_1 = tslib_1.__importDefault(require("../../components/Dashboard/DashboardManager"));
8
+ const ModuleValueSelector_1 = require("../Components/ModuleValueSelector");
9
+ const PinnedToolbarsSelector_1 = require("./PinnedToolbarsSelector");
10
+ const Flex_1 = require("../../components/Flex");
11
+ const Tag_1 = require("../../components/Tag");
12
+ const ToggleButton_1 = require("../../components/ToggleButton");
13
+ const AdaptableContext_1 = require("../AdaptableContext");
14
+ const CollapsibleWizardCard_1 = require("../Wizard/CollapsibleWizardCard");
15
+ const DashboardSettingsToggles = ({ isHidden, isCollapsed, isFloating, hasTabs, canFloat, className, onSetHidden, onSetCollapsed, onSetFloating, }) => ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", className: className ?? 'twa:gap-3 twa:p-1', children: [(0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { className: "twa:w-24", onChange: (visible) => onSetHidden(!visible), checked: !isHidden, "data-name": "dashboard-visibility", children: isHidden ? 'Hidden' : 'Visible' }), hasTabs ? ((0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { disabled: isFloating, className: "twa:w-24", onChange: (expanded) => onSetCollapsed(!expanded), checked: !isCollapsed, "data-name": "expand-state", children: isCollapsed ? 'Collapsed' : 'Expanded' })) : null, canFloat ? ((0, jsx_runtime_1.jsx)(ToggleButton_1.ToggleButton, { className: "twa:w-24", onChange: (pinned) => onSetFloating(!pinned), checked: !isFloating, "data-name": "floating", children: isFloating ? 'Floating' : 'Pinned' })) : null] }));
16
+ const DashboardPopupSections = (props) => {
17
+ const { api } = (0, AdaptableContext_1.useAdaptable)();
18
+ const { bindCard } = (0, CollapsibleWizardCard_1.useWizardCardAccordion)(null);
19
+ const systemToolbars = api.dashboardApi.internalApi.getModuleToolbars().map((toolbar) => ({
20
+ Id: toolbar.id,
21
+ Title: toolbar.friendlyName,
22
+ }));
23
+ const customToolbars = api.dashboardApi.getCustomToolbars().map((ct) => ({
24
+ Id: ct.name,
25
+ Title: ct.title ? ct.title : ct.name,
26
+ }));
27
+ const allToolbars = [...systemToolbars, ...customToolbars];
28
+ const toolbarTitleById = React.useMemo(() => allToolbars.reduce((map, toolbar) => {
29
+ map.set(toolbar.Id, toolbar.Title);
30
+ return map;
31
+ }, new Map()), [allToolbars]);
32
+ const tabs = props.DashboardState.Tabs.map((tab) => {
33
+ const Toolbars = tab.Toolbars.filter((vt) => {
34
+ const customToolbar = api.dashboardApi
35
+ .getCustomToolbars()
36
+ .find((ct) => ct.name === vt);
37
+ return customToolbar
38
+ ? true
39
+ : api.internalApi.getModuleService().isAdapTableModulePresent(vt);
40
+ });
41
+ return { ...tab, Toolbars };
42
+ });
43
+ const selectedModuleButtons = [];
44
+ props.DashboardState.ModuleButtons?.forEach((module) => {
45
+ const menuItem = props.InternalState.SettingsPanelModuleEntries.find((entry) => entry.category === module);
46
+ if (menuItem?.isVisible) {
47
+ selectedModuleButtons.push(module);
48
+ }
49
+ });
50
+ const allModuleButtons = props.InternalState.SettingsPanelModuleEntries.map((entry) => entry.category);
51
+ const isModuleCheckboxDisabled = (module) => {
52
+ if (module === 'SettingsPanel') {
53
+ return api.optionsApi.getSettingsPanelOptions().alwaysShowInDashboard;
54
+ }
55
+ return false;
56
+ };
57
+ const pinnedToolbarIds = props.DashboardState.PinnedToolbars ?? [];
58
+ const pinnedToolbarTitles = pinnedToolbarIds.map((id) => toolbarTitleById.get(id) ?? id);
59
+ const moduleButtonLabels = selectedModuleButtons.map((module) => api.internalApi.getModuleService().getModuleFriendlyName(module) ?? module);
60
+ const tabsCompactLabels = tabs.flatMap((tab) => {
61
+ const toolbarTitles = tab.Toolbars.map((toolbarId) => toolbarTitleById.get(toolbarId) ?? toolbarId);
62
+ return [`Tab: ${tab.Name}`, ...toolbarTitles];
63
+ });
64
+ const settingsToggles = ((0, jsx_runtime_1.jsx)(DashboardSettingsToggles, { isHidden: props.IsHidden, isCollapsed: props.IsCollapsed, isFloating: props.IsFloating, hasTabs: tabs.length > 0, canFloat: props.canFloat, onSetHidden: props.onSetDashboardHidden, onSetCollapsed: props.onSetDashboardCollapsed, onSetFloating: props.onSetDashboardFloating }));
65
+ const pinnedSummary = pinnedToolbarTitles.length > 0 ? ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: pinnedToolbarTitles.map((title, index) => ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: title }, `${title}-${index}`))) })) : ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: "No Pinned Toolbars" }));
66
+ const tabsSummary = tabs.length > 0 ? ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexDirection: "column", className: "twa:gap-2", children: tabs.map((tab) => {
67
+ const toolbarTitles = tab.Toolbars.map((toolbarId) => toolbarTitleById.get(toolbarId) ?? toolbarId);
68
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: [(0, jsx_runtime_1.jsxs)(Tag_1.Tag, { children: ["Tab: ", tab.Name] }), toolbarTitles.map((title, index) => ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: title }, `${tab.Name}-${title}-${index}`)))] }, tab.Uuid ?? tab.Name));
69
+ }) })) : ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: "No Tabs Configured" }));
70
+ const moduleButtonsSummary = moduleButtonLabels.length > 0 ? ((0, jsx_runtime_1.jsx)(Flex_1.Flex, { flexWrap: "wrap", alignItems: "center", className: "twa:gap-1", children: moduleButtonLabels.map((label) => ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: label }, label))) })) : ((0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: "No Module Buttons" }));
71
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:h-full twa:min-h-0 twa:gap-3 twa:overflow-y-auto", children: [props.areDashboardSettingsVisible && ((0, jsx_runtime_1.jsx)(CollapsibleWizardCard_1.CollapsibleWizardCard, { ...bindCard('settings'), "data-name": "dashboard-settings", title: "Settings", help: "Control Dashboard visibility, expansion and floating mode", compactSummary: settingsToggles, compactSummaryInteractive: true, summary: settingsToggles, className: "twa:overflow-hidden", children: settingsToggles })), (0, jsx_runtime_1.jsx)(CollapsibleWizardCard_1.CollapsibleWizardCard, { ...bindCard('pinned-toolbars'), "data-name": "dashboard-pinned-toolbars", title: "Pinned Toolbars", help: "Optional strip along the top of the grid \u2014 pin Toolbars you want always visible (e.g. Grid Filter)", compactSummary: (0, CollapsibleWizardCard_1.renderCompactColumnTags)(pinnedToolbarTitles, (title) => title, { emptyLabel: 'No Pinned Toolbars' }), summary: pinnedSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[200px] twa:overflow-hidden", children: (0, jsx_runtime_1.jsx)(PinnedToolbarsSelector_1.PinnedToolbarsSelector, {}) }), (0, jsx_runtime_1.jsx)(CollapsibleWizardCard_1.CollapsibleWizardCard, { ...bindCard('tabs-toolbars'), "data-name": "dashboard-tabs-toolbars", title: "Tabs & Toolbars", help: "Group Toolbars into named Tabs in the Dashboard header (independent of Pinned Toolbars)", compactSummary: (0, CollapsibleWizardCard_1.renderCompactColumnTags)(tabsCompactLabels, (label) => label, { emptyLabel: 'No Tabs Configured' }), summary: tabsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[280px] twa:overflow-hidden", children: (0, jsx_runtime_1.jsx)(DashboardManager_1.default, { disabled: props.isDashboardDisabled, availableToolbars: [...systemToolbars, ...customToolbars], tabs: tabs, onTabsChange: props.onDashboardSetTabs, api: api }) }), (0, jsx_runtime_1.jsx)(CollapsibleWizardCard_1.CollapsibleWizardCard, { ...bindCard('module-buttons', { fillAvailable: true }), "data-name": "dashboard-module-buttons", title: "Module Buttons", help: "Buttons in the Dashboard header that open Module settings", compactSummary: (0, CollapsibleWizardCard_1.renderCompactColumnTags)(moduleButtonLabels, (label) => label, { emptyLabel: 'No Module Buttons' }), summary: moduleButtonsSummary, className: "twa:overflow-hidden twa:flex twa:flex-col", bodyClassName: "twa:min-h-[240px] twa:overflow-hidden twa:flex twa:flex-col twa:!pt-0 twa:!pb-0 twa:px-1", children: (0, jsx_runtime_1.jsx)(ModuleValueSelector_1.ModuleValueSelector, { disabled: props.isDashboardDisabled, options: allModuleButtons, value: selectedModuleButtons, isOptionDisabled: isModuleCheckboxDisabled, onChange: (selectedValues) => props.onDashboardSetModuleButtons(selectedValues) }) })] }));
72
+ };
73
+ exports.DashboardPopupSections = DashboardPopupSections;
@@ -36,13 +36,13 @@ const PinnedToolbarsSelector = (props) => {
36
36
  },
37
37
  ];
38
38
  }, [pinnedToolbars]);
39
- return ((0, jsx_runtime_1.jsx)(ModuleManager_1.ModuleManager, { className: "twa:flex-1", permittedActions: {
39
+ return ((0, jsx_runtime_1.jsx)(ModuleManager_1.ModuleManager, { dragScope: "dashboard-pinned", layout: "strip", permittedActions: {
40
40
  createTab: false,
41
41
  dragAndDropTab: false,
42
42
  deleteTab: false,
43
43
  editTabName: false,
44
44
  }, onTabsChange: (tabs) => {
45
45
  dispatch((0, DashboardRedux_1.DashboardSetPinnedToolbars)(tabs[0].Items));
46
- }, disabled: isDashboardDisabled, tabs: tabs, availableItems: toolbars, filterOutSelectedItems: true, tabsTitle: 'Pinned Toolbars', unusedPanelTitle: "Available Pinned Toolbars", dragItemText: "Drag into the Panel below" }));
46
+ }, disabled: isDashboardDisabled, tabs: tabs, availableItems: toolbars, filterOutSelectedItems: true }));
47
47
  };
48
48
  exports.PinnedToolbarsSelector = PinnedToolbarsSelector;
@@ -3,7 +3,6 @@ import * as React from 'react';
3
3
  import { CellDataChangedInfo } from '../../AdaptableState/Common/CellDataChangedInfo';
4
4
  import { DataChangeHistoryDisableAction, DataChangeHistoryEnableAction, DataChangeHistoryResumeAction, DataChangeHistorySuspendAction } from '../../Redux/ActionsReducers/InternalRedux';
5
5
  import { DataChangeHistoryMode } from '../../AdaptableState/InternalState';
6
- import { AdaptableApi } from '../../Api/AdaptableApi';
7
6
  interface DataChangeHistoryPopupProps extends ModuleViewPopupProps<DataChangeHistoryPopupComponent> {
8
7
  changeHistoryLog: Record<string, CellDataChangedInfo>;
9
8
  changeHistoryMode: DataChangeHistoryMode;
@@ -14,11 +13,7 @@ interface DataChangeHistoryPopupProps extends ModuleViewPopupProps<DataChangeHis
14
13
  onChangeHistorySuspend: () => DataChangeHistorySuspendAction;
15
14
  onChangeHistoryResume: () => DataChangeHistoryResumeAction;
16
15
  }
17
- interface DataChangeHistoryPopupState {
18
- dataChangeHistoryAdaptableApi: AdaptableApi | undefined;
19
- }
20
- declare class DataChangeHistoryPopupComponent extends React.Component<DataChangeHistoryPopupProps, DataChangeHistoryPopupState> {
21
- constructor(props: DataChangeHistoryPopupProps);
16
+ declare class DataChangeHistoryPopupComponent extends React.Component<DataChangeHistoryPopupProps> {
22
17
  render(): React.JSX.Element;
23
18
  }
24
19
  export declare let DataChangeHistoryPopup: import("react-redux").ConnectedComponent<typeof DataChangeHistoryPopupComponent, {