@adaptabletools/adaptable 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 +2 -2
  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 +12 -29
  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 +14 -0
  28. package/src/Strategy/Utilities/Export/getExportRowsViewItems.d.ts +1 -0
  29. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +3 -0
  30. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.d.ts +11 -0
  31. package/src/Strategy/Utilities/Layout/aggregationSummaryHelpers.js +105 -0
  32. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.d.ts +48 -0
  33. package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +166 -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 +85 -0
  38. package/src/Utilities/Defaults/DefaultSettingsPanel.d.ts +3 -5
  39. package/src/Utilities/Defaults/DefaultSettingsPanel.js +46 -41
  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 +27 -0
  44. package/src/Utilities/Helpers/StyledColumnGradientHelper.js +7 -5
  45. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.d.ts +3 -0
  46. package/src/Utilities/Helpers/resolveSettingsPanelNavigation.js +15 -0
  47. package/src/Utilities/getScopeViewItems.js +2 -0
  48. package/src/Utilities/wizardSelection.d.ts +10 -0
  49. package/src/Utilities/wizardSelection.js +15 -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 +0 -4
  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 +31 -7
  66. package/src/View/Alert/Wizard/AlertWizard.js +4 -4
  67. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.d.ts +2 -1
  68. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +4 -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 +30 -4
  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 -2
  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 +2 -3
  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 +4 -9
  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 +1 -1
  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 -3
  102. package/src/View/Components/Popups/AdaptablePopup/TopBar.js +2 -2
  103. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.d.ts +11 -0
  104. package/src/View/Components/Popups/AdaptablePopup/settingsPanelNavigationTypes.js +1 -0
  105. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.d.ts +3 -1
  106. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +25 -27
  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 -2
  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 +32 -65
  114. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +10 -7
  115. package/src/View/Components/ToolPanel/ToolPanelPopup.d.ts +3 -13
  116. package/src/View/Components/ToolPanel/ToolPanelPopup.js +5 -81
  117. package/src/View/Components/ToolPanel/ToolPanelPopupSections.d.ts +17 -0
  118. package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +76 -0
  119. package/src/View/Components/ValueSelector/index.d.ts +29 -0
  120. package/src/View/Components/ValueSelector/index.js +113 -30
  121. package/src/View/Components/wizardColumnListStyles.d.ts +10 -0
  122. package/src/View/Components/wizardColumnListStyles.js +10 -0
  123. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  124. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +5 -7
  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 +68 -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 +94 -0
  135. package/src/View/DataChangeHistory/buildActionColumnButton.d.ts +5 -3
  136. package/src/View/DataChangeHistory/buildActionColumnButton.js +30 -39
  137. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.d.ts +15 -0
  138. package/src/View/DataChangeHistory/dataChangeHistoryHelpers.js +37 -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 +3 -3
  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 +4 -9
  147. package/src/View/Export/Wizard/ReportRowsWizardSection.d.ts +2 -1
  148. package/src/View/Export/Wizard/ReportRowsWizardSection.js +3 -6
  149. package/src/View/FlashingCell/FlashingCellStyle.d.ts +4 -2
  150. package/src/View/FlashingCell/FlashingCellStyle.js +4 -2
  151. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.d.ts +2 -1
  152. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +7 -11
  153. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.d.ts +9 -0
  154. package/src/View/FlashingCell/Wizard/FlashingCellScopeSummary.js +5 -0
  155. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.d.ts +1 -1
  156. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +1 -0
  157. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.d.ts +0 -5
  158. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +1 -5
  159. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +2 -3
  160. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +1 -1
  161. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +99 -42
  162. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +0 -1
  163. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +0 -4
  164. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +56 -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 -8
  168. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +8 -13
  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 -2
  174. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -2
  175. package/src/View/Layout/LayoutViewPanel.js +1 -1
  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 +73 -33
  179. package/src/View/Layout/Wizard/sections/ColumnsSection.d.ts +4 -1
  180. package/src/View/Layout/Wizard/sections/ColumnsSection.js +155 -276
  181. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +4 -1
  182. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +148 -145
  183. package/src/View/Layout/Wizard/sections/PivotColumnsSection.d.ts +5 -2
  184. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +24 -12
  185. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.d.ts +4 -1
  186. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +23 -12
  187. package/src/View/Layout/Wizard/sections/RowGroupingSection.d.ts +5 -2
  188. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +19 -12
  189. package/src/View/Layout/Wizard/sections/RowSelectionSection.js +8 -4
  190. package/src/View/Layout/Wizard/sections/RowSummarySection.js +11 -11
  191. package/src/View/Layout/Wizard/sections/SortSection.d.ts +12 -2
  192. package/src/View/Layout/Wizard/sections/SortSection.js +41 -17
  193. package/src/View/Layout/Wizard/sections/columnLayoutCards.d.ts +20 -0
  194. package/src/View/Layout/Wizard/sections/columnLayoutCards.js +159 -0
  195. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.d.ts +30 -0
  196. package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +201 -0
  197. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.d.ts +8 -0
  198. package/src/View/Layout/Wizard/sections/layoutWizardAccordionHelpers.js +63 -0
  199. package/src/View/Layout/Wizard/sections/layoutWizardColumns.d.ts +11 -0
  200. package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +52 -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 -12
  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 +7 -0
  217. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +2 -0
  218. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +14 -11
  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 +8 -14
  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 +50 -0
  225. package/src/View/StyledColumn/Wizard/StyledColumnWizard.d.ts +2 -0
  226. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +26 -5
  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 +98 -43
  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 +32 -46
  234. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +11 -6
  235. package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +94 -7
  236. package/src/View/UIHelper.d.ts +0 -2
  237. package/src/View/UIHelper.js +8 -23
  238. package/src/View/Wizard/CollapsibleWizardCard.d.ts +68 -0
  239. package/src/View/Wizard/CollapsibleWizardCard.js +81 -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 +67 -0
  243. package/src/View/Wizard/WizardTypeSelection.d.ts +34 -0
  244. package/src/View/Wizard/WizardTypeSelection.js +31 -0
  245. package/src/View/Wizard/rowGroupSummaryTags.d.ts +18 -0
  246. package/src/View/Wizard/rowGroupSummaryTags.js +14 -0
  247. package/src/View/Wizard/scopeSummaryTags.d.ts +6 -0
  248. package/src/View/Wizard/scopeSummaryTags.js +33 -0
  249. package/src/agGrid/AdaptableAgGrid.js +1 -1
  250. package/src/agGrid/AgGridAdapter.js +0 -5
  251. package/src/agGrid/AgGridColumnAdapter.js +2 -2
  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 -6
  255. package/src/components/CheckBox/index.js +2 -3
  256. package/src/components/CodeBlock/index.js +2 -2
  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 +26 -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 +3 -0
  269. package/src/components/DragAndDropContext/ModuleManager.d.ts +15 -3
  270. package/src/components/DragAndDropContext/ModuleManager.js +47 -8
  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 +15 -11
  275. package/src/components/DragAndDropContext/dragScope.d.ts +6 -0
  276. package/src/components/DragAndDropContext/dragScope.js +26 -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 -2
  281. package/src/components/ErrorBox/index.js +2 -2
  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 +6 -6
  285. package/src/components/FieldWrap/index.js +2 -2
  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 -3
  289. package/src/components/IconSelector/IconSelector.d.ts +8 -0
  290. package/src/components/IconSelector/IconSelector.js +11 -7
  291. package/src/components/IconSelector/index.d.ts +1 -0
  292. package/src/components/IconSelector/index.js +1 -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 -2
  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 +14 -4
  303. package/src/components/Tag/columnScopeTagHelpers.d.ts +8 -0
  304. package/src/components/Tag/columnScopeTagHelpers.js +6 -0
  305. package/src/components/Tag/index.d.ts +1 -1
  306. package/src/components/Tag/index.js +1 -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 -4
  312. package/src/components/Tree/TreeDropdown/index.js +3 -4
  313. package/src/components/WarningBox/index.js +2 -2
  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.esm.tsbuildinfo +1 -1
  326. package/src/View/DataChangeHistory/DataChangeHistoryGrid.d.ts +0 -17
  327. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +0 -290
  328. package/src/components/DropdownButton/DropdownButtonItem.d.ts +0 -12
  329. package/src/components/DropdownButton/DropdownButtonItem.js +0 -1
  330. package/src/components/DropdownButton/renderItem.d.ts +0 -14
  331. package/src/components/DropdownButton/renderItem.js +0 -11
  332. package/src/components/DropdownButton/useExpanded.d.ts +0 -24
  333. package/src/components/DropdownButton/useExpanded.js +0 -56
  334. package/src/components/NewDropdownButton/index.d.ts +0 -27
  335. package/src/components/NewDropdownButton/index.js +0 -24
@@ -8,6 +8,7 @@ import { getStatusPanelsSelector } from '../../Redux/ActionsReducers/StatusBarRe
8
8
  import { useAdaptable } from '../AdaptableContext';
9
9
  import { PopupPanel } from '../Components/Popups/AdaptablePopup/PopupPanel';
10
10
  import { ACCESS_LEVEL_READ_ONLY } from '../../Utilities/Constants/GeneralConstants';
11
+ import { isRichStatusBarPanel } from './statusBarPanelHelpers';
11
12
  export const StatusBarPopup = (props) => {
12
13
  const statusPanels = useSelector(getStatusPanelsSelector);
13
14
  const adaptable = useAdaptable();
@@ -26,19 +27,46 @@ export const StatusBarPopup = (props) => {
26
27
  };
27
28
  });
28
29
  adaptable.api.statusBarApi.setStatusBarPanels(newStatusPanels);
29
- }, [statusPanels]);
30
- const availableItems = ALL_STATUS_SUB_PANELS.filter((panel) => {
30
+ }, [statusPanels, adaptable.api.statusBarApi]);
31
+ const availableItems = React.useMemo(() => ALL_STATUS_SUB_PANELS.filter((panel) => {
31
32
  const module = adaptable.ModuleService.getModuleById(panel);
32
33
  return module?.isModuleVisible();
33
34
  }).map((panel) => {
34
35
  const module = adaptable.ModuleService.getModuleById(panel);
35
36
  return { Id: panel, Title: module.moduleInfo.FriendlyName };
36
- });
37
+ }), [adaptable]);
38
+ const unusedItemGroups = React.useMemo(() => {
39
+ const statusPanelIds = [];
40
+ const moduleShortcutIds = [];
41
+ availableItems.forEach((item) => {
42
+ const module = adaptable.ModuleService.getModuleById(item.Id);
43
+ if (isRichStatusBarPanel(module)) {
44
+ statusPanelIds.push(item.Id);
45
+ }
46
+ else {
47
+ moduleShortcutIds.push(item.Id);
48
+ }
49
+ });
50
+ return [
51
+ {
52
+ listId: 'UNUSED-PANELS',
53
+ title: 'Status Panels',
54
+ help: 'Fully featured actionable controls',
55
+ items: statusPanelIds,
56
+ },
57
+ {
58
+ listId: 'UNUSED-SHORTCUTS',
59
+ title: 'Module Shortcuts',
60
+ help: 'Buttons to open Module Status Panel',
61
+ items: moduleShortcutIds,
62
+ },
63
+ ];
64
+ }, [availableItems, adaptable]);
37
65
  const disabled = props.accessLevel === ACCESS_LEVEL_READ_ONLY;
38
- return (_jsx(PopupPanel, { headerText: props.moduleInfo.FriendlyName, glyphicon: props.moduleInfo.Glyph, infoLink: props.moduleInfo.HelpPage, infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed(), children: statusPanels.length ? (_jsx(ModuleManager, { permittedActions: {
66
+ return (_jsx(PopupPanel, { headerText: props.moduleInfo.FriendlyName, glyphicon: props.moduleInfo.Glyph, infoLink: props.moduleInfo.HelpPage, infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed(), children: statusPanels.length ? (_jsx(ModuleManager, { dragScope: "status-bar", layout: "rows", permittedActions: {
39
67
  createTab: false,
40
68
  dragAndDropTab: false,
41
69
  deleteTab: false,
42
70
  editTabName: false,
43
- }, onTabsChange: handleTabChange, disabled: disabled, tabs: tabs, availableItems: availableItems, tabsTitle: 'AdapTable Status Bar Panels', unusedPanelTitle: "Available Status Bar Components", dragItemText: "Drag into a Status Bar Panel below" })) : (_jsx(EmptyContent, { children: "To enable this feature add to Grid Options statusPanels the Adaptable Status Panel." })) }));
71
+ }, onTabsChange: handleTabChange, disabled: disabled, tabs: tabs, availableItems: availableItems, unusedItemGroups: unusedItemGroups, dragItemText: "Drag items from either panel above into a Status Bar Panel below", tabsTitle: "AdapTable Status Bar Panels" })) : (_jsx(EmptyContent, { children: "To enable this feature add to Grid Options statusPanels the Adaptable Status Panel." })) }));
44
72
  };
@@ -0,0 +1,2 @@
1
+ import { IModule } from '../../Strategy/Interface/IModule';
2
+ export declare const isRichStatusBarPanel: (module: IModule | undefined) => boolean;
@@ -0,0 +1,7 @@
1
+ export const isRichStatusBarPanel = (module) => {
2
+ if (!module) {
3
+ return false;
4
+ }
5
+ const statusBarPanelProps = module.getViewProperties?.()?.getStatusBarPanelProps?.() ?? {};
6
+ return Boolean(statusBarPanelProps.view || statusBarPanelProps.content || statusBarPanelProps.popover);
7
+ };
@@ -11,6 +11,8 @@ export interface BadgePillStyleEditorProps {
11
11
  */
12
12
  onChange: (next: BadgePillStyle | undefined) => void;
13
13
  disabled?: boolean;
14
+ /** When true, omit outer border — for use inside a wizard Card body. */
15
+ embedded?: boolean;
14
16
  }
15
17
  /**
16
18
  * Compact editor for the cut-down {@link BadgePillStyle}.
@@ -1,10 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CheckBox } from '../../../components/CheckBox';
3
- import { ColorPicker } from '../../../components/ColorPicker';
2
+ import { OptionalColorPicker } from '../../../components/ColorPicker';
4
3
  import FormLayout, { FormRow } from '../../../components/FormLayout';
5
4
  import { Box, Flex } from '../../../components/Flex';
6
5
  import { Toggle, ToggleGroup } from '../../../components/Toggle';
7
- import { Tag } from '../../../components/Tag';
6
+ import { renderSummaryLabelValueTags } from '../../Wizard/SummaryColorTag';
8
7
  const LABEL_COLUMN = { name: 'label', style: { textAlign: 'start' } };
9
8
  const CHILD_COLUMN = { name: 'children' };
10
9
  /**
@@ -35,7 +34,11 @@ export const BadgePillStyleEditor = (props) => {
35
34
  }
36
35
  };
37
36
  const disabledClass = disabled ? 'twa:opacity-50 twa:pointer-events-none' : '';
38
- return (_jsx(Box, { className: "twa:mt-2 twa:rounded-standard twa:border twa:border-border twa:overflow-hidden twa:shadow-sm", children: _jsx(Box, { className: "twa:p-3", children: _jsxs(FormLayout, { columns: [LABEL_COLUMN, CHILD_COLUMN], sizes: ['7.5rem', '1fr'], gridColumnGap: "0.75rem", children: [_jsx(FormRow, { label: "Background", children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!pill.BackColor, onChange: (checked) => update({ BackColor: checked ? pill.BackColor ?? '#cccccc' : undefined }), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !pill.BackColor, api: props.api, value: pill.BackColor || '#cccccc', onChange: (c) => update({ BackColor: c }) })] }) }), _jsx(FormRow, { label: "Text", children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!pill.ForeColor, onChange: (checked) => update({ ForeColor: checked ? pill.ForeColor ?? '#000000' : undefined }), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !pill.ForeColor, api: props.api, value: pill.ForeColor || '#000000', onChange: (c) => update({ ForeColor: c }) })] }) }), _jsx(FormRow, { label: "Border", children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!pill.BorderColor, onChange: (checked) => update({ BorderColor: checked ? pill.BorderColor ?? '#000000' : undefined }), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !pill.BorderColor, api: props.api, value: pill.BorderColor || '#000000', onChange: (c) => update({ BorderColor: c }) })] }) }), _jsx(FormRow, { label: "Font", children: _jsx(Box, { className: disabledClass, children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2 twa:flex-wrap", children: [_jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: pill.FontStyle === 'Italic', onPressedChange: (pressed) => update({ FontStyle: pressed ? 'Italic' : undefined }), icon: "italic" }), _jsx(Toggle, { pressed: pill.FontWeight === 'Bold', onPressedChange: (pressed) => update({ FontWeight: pressed ? 'Bold' : undefined }), icon: "bold" })] }), _jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: pill.TextDecoration === 'Underline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Underline' : undefined }), icon: "underline" }), _jsx(Toggle, { pressed: pill.TextDecoration === 'LineThrough', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'LineThrough' : undefined }), icon: "strikethrough" }), _jsx(Toggle, { pressed: pill.TextDecoration === 'Overline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Overline' : undefined }), icon: "overline" })] })] }) }) })] }) }) }));
37
+ const form = (_jsxs(FormLayout, { columns: [LABEL_COLUMN, CHILD_COLUMN], sizes: ['7.5rem', '1fr'], gridColumnGap: "0.75rem", children: [_jsx(FormRow, { label: "Background", children: _jsx(OptionalColorPicker, { disabled: disabled, api: props.api, value: pill.BackColor, defaultColor: "#cccccc", onChange: (c) => update({ BackColor: c }) }) }), _jsx(FormRow, { label: "Text", children: _jsx(OptionalColorPicker, { disabled: disabled, api: props.api, value: pill.ForeColor, defaultColor: "#000000", onChange: (c) => update({ ForeColor: c }) }) }), _jsx(FormRow, { label: "Border", children: _jsx(OptionalColorPicker, { disabled: disabled, api: props.api, value: pill.BorderColor, defaultColor: "#000000", onChange: (c) => update({ BorderColor: c }) }) }), _jsx(FormRow, { label: "Font", children: _jsx(Box, { className: disabledClass, children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2 twa:flex-wrap", children: [_jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(Toggle, { standalone: true, pressed: pill.FontStyle === 'Italic', onPressedChange: (pressed) => update({ FontStyle: pressed ? 'Italic' : undefined }), icon: "italic" }), _jsx(Toggle, { standalone: true, pressed: pill.FontWeight === 'Bold', onPressedChange: (pressed) => update({ FontWeight: pressed ? 'Bold' : undefined }), icon: "bold" })] }), _jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: pill.TextDecoration === 'Underline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Underline' : undefined }), icon: "underline" }), _jsx(Toggle, { pressed: pill.TextDecoration === 'LineThrough', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'LineThrough' : undefined }), icon: "strikethrough" }), _jsx(Toggle, { pressed: pill.TextDecoration === 'Overline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Overline' : undefined }), icon: "overline" })] })] }) }) })] }));
38
+ if (props.embedded) {
39
+ return form;
40
+ }
41
+ return (_jsx(Box, { className: "twa:mt-2 twa:rounded-standard twa:border twa:border-border twa:overflow-hidden twa:shadow-sm", children: _jsx(Box, { className: "twa:p-3", children: form }) }));
39
42
  };
40
43
  /** Descriptive pill properties for summary panels (`Label: value` strings). */
41
44
  export const getBadgePillStyleSummaryItems = (pill) => {
@@ -44,22 +47,22 @@ export const getBadgePillStyleSummaryItems = (pill) => {
44
47
  }
45
48
  const items = [];
46
49
  if (pill.BackColor) {
47
- items.push({ label: 'Pill Back Colour', value: pill.BackColor });
50
+ items.push({ label: 'Back Colour', value: pill.BackColor });
48
51
  }
49
52
  if (pill.ForeColor) {
50
- items.push({ label: 'Pill Fore Colour', value: pill.ForeColor });
53
+ items.push({ label: 'Fore Colour', value: pill.ForeColor });
51
54
  }
52
55
  if (pill.BorderColor) {
53
- items.push({ label: 'Pill Border Colour', value: pill.BorderColor });
56
+ items.push({ label: 'Border Colour', value: pill.BorderColor });
54
57
  }
55
58
  if (pill.FontWeight === 'Bold') {
56
- items.push({ label: 'Pill Font Weight', value: 'Bold' });
59
+ items.push({ label: 'Font Weight', value: 'Bold' });
57
60
  }
58
61
  if (pill.FontStyle === 'Italic') {
59
- items.push({ label: 'Pill Font Style', value: 'Italic' });
62
+ items.push({ label: 'Font Style', value: 'Italic' });
60
63
  }
61
64
  if (pill.TextDecoration && pill.TextDecoration !== 'None') {
62
- items.push({ label: 'Pill Text Decoration', value: pill.TextDecoration });
65
+ items.push({ label: 'Text Decoration', value: pill.TextDecoration });
63
66
  }
64
67
  return items;
65
68
  };
@@ -69,5 +72,5 @@ export const renderBadgePillStyleSummaryTags = (pill) => {
69
72
  if (!items.length) {
70
73
  return null;
71
74
  }
72
- return (_jsx(Flex, { alignItems: "center", className: "twa:gap-1 twa:flex-wrap", children: items.map(({ label, value }) => (_jsx(Tag, { children: `${label}: ${value}` }, label))) }));
75
+ return renderSummaryLabelValueTags(items);
73
76
  };
@@ -8,7 +8,7 @@ export declare const renderBadgeDefinitionSummaryTags: (styledColumn: StyledColu
8
8
  export declare const StyledColumnBadgeDefinitionsView: React.FunctionComponent<React.PropsWithChildren<{
9
9
  data: StyledColumn;
10
10
  }>>;
11
- export declare const renderBadgeSummary: (styledColumn: StyledColumn, api?: AdaptableApi) => React.JSX.Element;
11
+ export declare const renderBadgeSummary: (styledColumn: StyledColumn, api: AdaptableApi) => React.JSX.Element;
12
12
  export interface StyledColumnBadgeSectionProps {
13
13
  onChange: (data: StyledColumn) => void;
14
14
  }
@@ -17,4 +17,4 @@ export interface StyledColumnBadgeStyleSectionProps {
17
17
  onChange: (data: StyledColumn) => void;
18
18
  }
19
19
  export declare const StyledColumnBadgeStyleSection: React.FunctionComponent<StyledColumnBadgeStyleSectionProps>;
20
- export declare const renderBadgeStyleSummary: (styledColumn: StyledColumn, api?: AdaptableApi) => React.JSX.Element;
20
+ export declare const renderBadgeStyleSummary: (styledColumn: StyledColumn, api: AdaptableApi) => React.JSX.Element;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import DropdownButton from '../../../components/DropdownButton';
3
2
  import ErrorBox from '../../../components/ErrorBox';
4
3
  import FormLayout, { FormRow } from '../../../components/FormLayout';
5
- import HelpBlock from '../../../components/HelpBlock';
6
4
  import SimpleButton from '../../../components/SimpleButton';
5
+ import { ButtonNew } from '../../Components/Buttons/ButtonNew';
7
6
  import { Tag } from '../../../components/Tag';
7
+ import { renderSummaryLabelValueTags, renderSummaryStringTags, } from '../../Wizard/SummaryColorTag';
8
8
  import ObjectFactory from '../../../Utilities/ObjectFactory';
9
9
  import { AdaptableIconSelector } from '../../Components/AdaptableIconSelector';
10
10
  import { PredicateEditor } from '../../Components/PredicateEditor/PredicateEditor';
@@ -22,6 +22,9 @@ import { getCellBoxStyleSummaryItems, getCellFontStyleSummaryItems, StyledColumn
22
22
  import { Card } from '../../../components/Card';
23
23
  import { useAdaptable } from '../../AdaptableContext';
24
24
  import { StyledColumnBadgePreviewCard } from './StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview';
25
+ import { CollapsibleWizardCard, CollapsibleWizardValueSummary, getWizardAccordionSectionClassName, useWizardCardAccordion, } from '../../Wizard/CollapsibleWizardCard';
26
+ import { SingleSelect } from '../../../components/NewSelect';
27
+ import { cn } from '../../../lib/utils';
25
28
  const BADGE_STYLE_FORM_SIZES = ['200px', '1fr'];
26
29
  const SHAPE_CHOICES = [
27
30
  { value: 'Pill', label: 'Pill' },
@@ -38,97 +41,99 @@ const OVERFLOW_CHOICES = [
38
41
  { value: 'Wrap', label: 'Wrap', hint: 'Wrap onto subsequent lines' },
39
42
  { value: 'Scroll', label: 'Scroll', hint: 'Single line; cell scrolls horizontally' },
40
43
  ];
41
- const BadgeEditor = (props) => {
44
+ const badgeCardId = (index) => `badge-${index}`;
45
+ const getBadgePreviewValue = (dataType) => dataType === 'number' || dataType === 'numberArray'
46
+ ? `${DEFAULT_INTEGER_DISPLAY_VALUE}`
47
+ : DEFAULT_STRING_DISPLAY_VALUE;
48
+ const getBadgeDefinitionSummaryItems = (badge, api) => {
49
+ const items = [];
50
+ let rule = 'Always';
51
+ if (badge.Predicate) {
52
+ rule = api.predicateApi.predicateToString(badge.Predicate);
53
+ }
54
+ else if (badge.Expression) {
55
+ rule = badge.Expression.BooleanExpression;
56
+ }
57
+ items.push({ label: 'Rule', value: rule });
58
+ items.push({ label: 'Shape', value: badge.Shape ?? 'Rounded' });
59
+ items.push(...getBadgePillStyleSummaryItems(badge.PillStyle));
60
+ if (badge.Icon) {
61
+ items.push({
62
+ label: 'Icon',
63
+ value: 'name' in badge.Icon ? badge.Icon.name : 'Custom',
64
+ icon: badge.Icon,
65
+ });
66
+ }
67
+ if (badge.IconOnly) {
68
+ items.push({ label: 'Icon Only', value: 'Yes' });
69
+ }
70
+ if (badge.Icon && badge.IconPosition) {
71
+ items.push({ label: 'Icon Position', value: badge.IconPosition });
72
+ }
73
+ if (typeof badge.IconGap === 'number') {
74
+ items.push({ label: 'Icon Gap', value: `${badge.IconGap}px` });
75
+ }
76
+ return items;
77
+ };
78
+ const BadgePreview = ({ badge, density, previewValue }) => (_jsx(Badge, { pillStyle: badge.PillStyle, icon: badge.Icon, iconPosition: badge.IconPosition, shape: badge.Shape, density: density, iconGap: badge.IconGap, children: badge.IconOnly ? '' : previewValue }));
79
+ const BadgeCardSummary = ({ badge, api }) => (_jsx(CollapsibleWizardValueSummary, { value: renderSummaryLabelValueTags(getBadgeDefinitionSummaryItems(badge, api)) }));
80
+ const BadgeEditorForm = (props) => {
42
81
  const { api } = useOnePageAdaptableWizardContext();
43
- const { badge, columnId, onChange, density, index } = props;
82
+ const { badge, columnId, onChange } = props;
44
83
  const predicateDefs = api.styledColumnApi.internalApi.getBadgePredicateDefsForColumn(columnId);
45
- const dataType = api.columnApi.getColumnDataTypeForColumnId(columnId);
46
- const previewValue = dataType === 'number' || dataType == 'numberArray'
47
- ? DEFAULT_INTEGER_DISPLAY_VALUE
48
- : DEFAULT_STRING_DISPLAY_VALUE;
49
84
  const currentShape = badge.Shape ?? 'Rounded';
50
- return (_jsxs(Box, { className: "ab-Badge-Definition-Editor twa:mb-3 twa:rounded-standard twa:border twa:border-border twa:overflow-hidden twa:shadow-sm", children: [_jsxs(Flex, { alignItems: "center", className: "ab-Badge-Definition-Editor__header twa:px-3 twa:py-2 twa:border-b twa:border-border twa:gap-2", children: [_jsx(Box, { className: "twa:flex-1 twa:font-medium twa:text-3", children: `Badge ${index + 1}` }), _jsx(SimpleButton, { icon: "delete", variant: "text", tooltip: "Delete badge", onClick: props.onDelete })] }), _jsx(Box, { className: "twa:p-3", children: _jsxs(FormLayout, { children: [_jsx(FormRow, { label: "Preview", children: _jsx(Badge, { pillStyle: badge.PillStyle, icon: badge.Icon, iconPosition: badge.IconPosition, shape: badge.Shape, density: density, iconGap: badge.IconGap, children: badge.IconOnly ? '' : previewValue }) }), _jsx(FormRow, { label: "Shape", children: _jsx(Box, { className: "twa:ml-2", children: _jsx(RadioGroup, { orientation: "horizontal", name: `ab-badge-shape-${columnId}`, value: currentShape, onRadioChange: (value) => onChange({ ...badge, Shape: value }), className: "twa:gap-3", children: SHAPE_CHOICES.map((choice) => (_jsx(Radio, { value: choice.value, children: choice.label }, choice.value))) }) }) }), _jsx(FormRow, { label: "Style", children: _jsx(BadgePillStyleEditor, { api: api, value: badge.PillStyle, onChange: (next) => {
51
- if (next) {
52
- onChange({ ...badge, PillStyle: next });
53
- }
54
- else {
55
- const cleaned = { ...badge };
56
- delete cleaned.PillStyle;
57
- onChange(cleaned);
58
- }
59
- } }) }), _jsx(FormRow, { label: 'Rule', children: columnId ? (_jsxs(_Fragment, { children: [_jsx(HelpBlock, { className: "twa:text-2 twa:mb-1 twa:mt-2", children: "Create (optional) Rule for when the Badge is displayed; if no Rule provided Badge will always display (unless overriden by another Rule)" }), _jsx(PredicateEditor, { columnId: columnId, predicate: badge.Predicate, predicateDefs: predicateDefs, placeholder: "No Predicate Selected", onChange: (predicate) => {
60
- onChange({
61
- ...badge,
62
- Predicate: predicate,
63
- });
64
- }, onClear: () => onChange({
65
- ...badge,
66
- Predicate: undefined,
67
- }) })] })) : (_jsx(ErrorBox, { children: "Select a column first" })) }), _jsxs(FormRow, { label: "Icon", children: [_jsx(HelpBlock, { className: "twa:text-2 twa:mb-1 twa:mt-2", children: "Select (optional) Icon (and Icon position) to display in the Badge" }), ' ', !badge.Icon || 'name' in badge.Icon ? (_jsx(AdaptableIconSelector, { value: badge?.Icon && 'name' in badge?.Icon ? badge.Icon.name : undefined, onChange: (iconName) => {
68
- if (iconName) {
69
- onChange({
70
- ...badge,
71
- Icon: {
72
- name: iconName,
73
- },
74
- });
75
- }
76
- else {
77
- onChange({
78
- ...badge,
79
- Icon: undefined,
80
- });
81
- }
82
- } })) : (_jsx(AdaptableIconComponent, { icon: badge.Icon }))] }), badge.Icon && (_jsx(FormRow, { label: "Icon Position", children: _jsx(DropdownButton, { columns: ['label'], items: [
83
- {
84
- label: 'Start',
85
- onClick: () => onChange({ ...badge, IconPosition: 'Start' }),
86
- },
87
- {
88
- label: 'End',
89
- onClick: () => onChange({ ...badge, IconPosition: 'End' }),
90
- },
91
- ], children: badge.IconPosition ?? 'Start' }) })), badge.Icon && (_jsx(FormRow, { label: "Show Icon Only", children: _jsx(CheckBox, { checked: badge.IconOnly, onClick: () => onChange({ ...badge, IconOnly: !badge.IconOnly }) }) })), badge.Icon && !badge.IconOnly && (_jsx(FormRow, { label: "Icon Gap", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(NumberInput, { value: badge.IconGap ?? '', placeholder: "auto", step: 1, min: 0, style: { width: 70 }, onChange: (value) => {
92
- onChange({
93
- ...badge,
94
- IconGap: typeof value === 'number' && value >= 0 ? value : undefined,
95
- });
96
- } }), _jsx(Box, { className: "twa:text-xs twa:opacity-70", children: "px between icon and text \u2014 leave blank to follow Density" })] }) }))] }) })] }));
85
+ const hasIcon = Boolean(badge.Icon);
86
+ return (_jsxs(Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-2", children: [_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Shape" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Define shape of the corners for this badge" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(RadioGroup, { orientation: "horizontal", name: `ab-badge-shape-${columnId}`, value: currentShape, onRadioChange: (value) => onChange({ ...badge, Shape: value }), className: "twa:gap-3", children: SHAPE_CHOICES.map((choice) => (_jsx(Radio, { value: choice.value, children: choice.label }, choice.value))) }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Style" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Colours and font styling for the badge pill" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsx(BadgePillStyleEditor, { embedded: true, api: api, value: badge.PillStyle, onChange: (next) => {
87
+ if (next) {
88
+ onChange({ ...badge, PillStyle: next });
89
+ }
90
+ else {
91
+ const cleaned = { ...badge };
92
+ delete cleaned.PillStyle;
93
+ onChange(cleaned);
94
+ }
95
+ } }) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Rule" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional rule for when this badge is displayed \u2014 leave empty for Badge to always show" })] }), _jsx(Card.Body, { className: "twa:p-1", children: columnId ? (_jsx(PredicateEditor, { columnId: columnId, predicate: badge.Predicate, predicateDefs: predicateDefs, placeholder: "No Predicate Selected", onChange: (predicate) => {
96
+ onChange({
97
+ ...badge,
98
+ Predicate: predicate,
99
+ });
100
+ }, onClear: () => onChange({
101
+ ...badge,
102
+ Predicate: undefined,
103
+ }) })) : (_jsx(ErrorBox, { children: "Select a column first" })) })] }), _jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { children: [_jsx(Box, { className: "twa:font-medium", children: "Icon" }), _jsx(Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional icon inside the badge \u2014 position and spacing apply once an icon is selected" })] }), _jsx(Card.Body, { className: "twa:p-1", children: _jsxs(FormLayout, { children: [_jsx(FormRow, { label: "Icon", children: !badge.Icon || 'name' in badge.Icon ? (_jsx(AdaptableIconSelector, { value: badge?.Icon && 'name' in badge.Icon ? badge.Icon.name : undefined, onChange: (iconName) => {
104
+ if (iconName) {
105
+ onChange({
106
+ ...badge,
107
+ Icon: {
108
+ name: iconName,
109
+ },
110
+ });
111
+ }
112
+ else {
113
+ onChange({
114
+ ...badge,
115
+ Icon: undefined,
116
+ IconOnly: undefined,
117
+ IconPosition: undefined,
118
+ IconGap: undefined,
119
+ });
120
+ }
121
+ } })) : (_jsx(AdaptableIconComponent, { icon: badge.Icon })) }), _jsx(FormRow, { label: "Icon Position", children: _jsx(Box, { className: "twa:max-w-[160px]", children: _jsx(SingleSelect, { disabled: !hasIcon, className: "twa:w-full", value: badge.IconPosition ?? 'Start', onValueChange: (v) => onChange({ ...badge, IconPosition: v }), items: [
122
+ { value: 'Start', label: 'Start' },
123
+ { value: 'End', label: 'End' },
124
+ ] }) }) }), _jsx(FormRow, { label: "Show Icon Only", children: _jsx(CheckBox, { disabled: !hasIcon, checked: badge.IconOnly, onClick: () => onChange({ ...badge, IconOnly: !badge.IconOnly }) }) }), _jsx(FormRow, { label: "Icon Gap", children: _jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(NumberInput, { disabled: !hasIcon || badge.IconOnly, value: badge.IconGap ?? '', placeholder: "auto", step: 1, min: 0, style: { width: 70 }, onChange: (value) => {
125
+ onChange({
126
+ ...badge,
127
+ IconGap: typeof value === 'number' && value >= 0 ? value : undefined,
128
+ });
129
+ } }), _jsx(Box, { className: "twa:text-xs twa:opacity-70", children: "px between icon and text \u2014 leave blank to follow Density" })] }) })] }) })] })] }));
97
130
  };
98
131
  export const getStyledColumnBadgeDefinitionViewValueGroups = (styledColumn, api) => {
99
132
  const badgeStyle = styledColumn.BadgeStyle;
100
133
  if (!badgeStyle?.Badges?.length) {
101
134
  return [];
102
135
  }
103
- return badgeStyle.Badges.map((badge, index) => {
104
- const items = [];
105
- let rule = 'Always';
106
- if (badge.Predicate) {
107
- rule = api.predicateApi.predicateToString(badge.Predicate);
108
- }
109
- else if (badge.Expression) {
110
- rule = badge.Expression.BooleanExpression;
111
- }
112
- items.push(`Badge ${index + 1}: ${rule}`);
113
- items.push(`Shape: ${badge.Shape ?? 'Rounded'}`);
114
- getBadgePillStyleSummaryItems(badge.PillStyle).forEach(({ label, value }) => {
115
- items.push(`${label}: ${value}`);
116
- });
117
- if (badge.Icon) {
118
- const iconName = 'name' in badge.Icon ? badge.Icon.name : 'Custom';
119
- items.push(`Icon: ${iconName}`);
120
- }
121
- if (badge.IconOnly) {
122
- items.push('Icon Only: Yes');
123
- }
124
- if (badge.Icon && badge.IconPosition) {
125
- items.push(`Icon Position: ${badge.IconPosition}`);
126
- }
127
- if (typeof badge.IconGap === 'number') {
128
- items.push(`Icon Gap: ${badge.IconGap}px`);
129
- }
130
- return items;
131
- });
136
+ return badgeStyle.Badges.map((badge) => getBadgeDefinitionSummaryItems(badge, api).map(({ label, value }) => `${label}: ${value}`));
132
137
  };
133
138
  export const getStyledColumnBadgeDefinitionViewValues = (styledColumn, api) => {
134
139
  return getStyledColumnBadgeDefinitionViewValueGroups(styledColumn, api).flat();
@@ -161,40 +166,67 @@ export const getStyledColumnBadgeStyleViewValues = (styledColumn, api) => {
161
166
  return items;
162
167
  };
163
168
  export const renderBadgeDefinitionSummaryTags = (styledColumn, api) => {
164
- const groups = getStyledColumnBadgeDefinitionViewValueGroups(styledColumn, api);
165
- if (!groups.length) {
169
+ const badges = styledColumn.BadgeStyle?.Badges;
170
+ if (!badges?.length) {
166
171
  return _jsx(Tag, { children: "No Badges Defined" });
167
172
  }
168
- return (_jsx(Flex, { flexDirection: "column", className: "twa:gap-2", children: groups.map((items, index) => (_jsx(Flex, { alignItems: "center", className: "twa:flex-wrap twa:gap-2", children: items.map((item, itemIndex) => (_jsx(Tag, { children: item }, `${index}-${itemIndex}`))) }, index))) }));
173
+ return (_jsx(Flex, { flexDirection: "column", className: "twa:gap-2", children: badges.map((badge, index) => (_jsxs(Flex, { alignItems: "center", className: "twa:flex-wrap twa:gap-2", children: [_jsxs(Tag, { className: "twa:shrink-0", children: ["Badge ", index + 1] }), renderSummaryLabelValueTags(getBadgeDefinitionSummaryItems(badge, api))] }, index))) }));
169
174
  };
170
175
  export const StyledColumnBadgeDefinitionsView = ({ data }) => {
171
176
  const { api } = useAdaptable();
172
177
  return renderBadgeDefinitionSummaryTags(data, api);
173
178
  };
174
179
  export const renderBadgeSummary = (styledColumn, api) => {
175
- if (!api) {
176
- const { api: adaptableApi } = useOnePageAdaptableWizardContext();
177
- api = adaptableApi;
178
- }
179
180
  return renderBadgeDefinitionSummaryTags(styledColumn, api);
180
181
  };
181
182
  export const StyledColumnBadgeSection = (props) => {
182
- const { data } = useOnePageAdaptableWizardContext();
183
+ const { data, api } = useOnePageAdaptableWizardContext();
183
184
  const badgeStyle = data?.BadgeStyle ?? {};
184
185
  const badges = badgeStyle.Badges ?? [];
185
186
  const currentDensity = badgeStyle.Density ?? 'Normal';
186
- return (_jsxs(Box, { children: [_jsx(Flex, { className: "twa:justify-end", children: _jsx(SimpleButton, { icon: "plus", onClick: () => {
187
- props.onChange({
188
- ...data,
189
- BadgeStyle: {
190
- ...badgeStyle,
191
- Badges: [...badges, ObjectFactory.CreateDefaultStyledColumnBadge()],
192
- },
193
- });
194
- }, children: "Add Badge" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:p-2", children: badges.map((badge, index) => {
195
- const handleEditBadge = (badge) => {
187
+ const dataType = data.ColumnId
188
+ ? api.columnApi.getColumnDataTypeForColumnId(data.ColumnId)
189
+ : 'text';
190
+ const previewValue = getBadgePreviewValue(dataType);
191
+ const initialExpandedCardId = badges.length === 1 ? badgeCardId(0) : null;
192
+ const { bindCard, hasExpandedCard, expandedFillsSpace, expandedId, setExpandedId } = useWizardCardAccordion(initialExpandedCardId);
193
+ const handleAddBadge = () => {
194
+ const newIndex = badges.length;
195
+ props.onChange({
196
+ ...data,
197
+ BadgeStyle: {
198
+ ...badgeStyle,
199
+ Badges: [...badges, ObjectFactory.CreateDefaultStyledColumnBadge()],
200
+ },
201
+ });
202
+ setExpandedId(badgeCardId(newIndex));
203
+ };
204
+ const handleDeleteBadge = (index) => {
205
+ const cardId = badgeCardId(index);
206
+ const newBadges = [...badges];
207
+ newBadges.splice(index, 1);
208
+ props.onChange({
209
+ ...data,
210
+ BadgeStyle: {
211
+ ...badgeStyle,
212
+ Badges: newBadges,
213
+ },
214
+ });
215
+ if (expandedId === cardId) {
216
+ setExpandedId(null);
217
+ return;
218
+ }
219
+ if (expandedId?.startsWith('badge-')) {
220
+ const expandedIndex = Number(expandedId.replace('badge-', ''));
221
+ if (!Number.isNaN(expandedIndex) && expandedIndex > index) {
222
+ setExpandedId(badgeCardId(expandedIndex - 1));
223
+ }
224
+ }
225
+ };
226
+ return (_jsxs(Box, { className: cn(getWizardAccordionSectionClassName(hasExpandedCard, expandedFillsSpace), 'twa:p-2'), children: [_jsx(Flex, { className: "twa:justify-end twa:mb-2 twa:shrink-0", children: _jsx(ButtonNew, { onClick: handleAddBadge, children: "Add Badge" }) }), _jsx(Flex, { flexDirection: "column", className: "twa:gap-3 twa:min-h-0", children: badges.map((badge, index) => {
227
+ const handleEditBadge = (nextBadge) => {
196
228
  const newBadges = [...badges];
197
- newBadges[index] = badge;
229
+ newBadges[index] = nextBadge;
198
230
  props.onChange({
199
231
  ...data,
200
232
  BadgeStyle: {
@@ -203,17 +235,7 @@ export const StyledColumnBadgeSection = (props) => {
203
235
  },
204
236
  });
205
237
  };
206
- return (_jsx(BadgeEditor, { index: index, badge: badge, density: currentDensity, columnId: data.ColumnId, onChange: handleEditBadge, onDelete: () => {
207
- const newBadges = [...badges];
208
- newBadges.splice(index, 1);
209
- props.onChange({
210
- ...data,
211
- BadgeStyle: {
212
- ...badgeStyle,
213
- Badges: newBadges,
214
- },
215
- });
216
- } }, index));
238
+ return (_jsx(CollapsibleWizardCard, { ...bindCard(badgeCardId(index)), surface: "panel", "data-name": `styled-column-badge-${index}`, title: `Badge ${index + 1}`, collapsedHelp: false, headerVisual: _jsx(BadgePreview, { badge: badge, density: currentDensity, previewValue: previewValue }), headerActions: _jsx(SimpleButton, { icon: "delete", variant: "text", tooltip: "Delete badge", onClick: () => handleDeleteBadge(index) }), summary: _jsx(BadgeCardSummary, { badge: badge, api: api }), bodyClassName: "twa:!pt-0 twa:overflow-y-auto", children: _jsx(BadgeEditorForm, { badge: badge, columnId: data.ColumnId, onChange: handleEditBadge }) }, badgeCardId(index)));
217
239
  }) })] }));
218
240
  };
219
241
  export const StyledColumnBadgeStyleSection = (props) => {
@@ -260,13 +282,9 @@ export const StyledColumnBadgeStyleSection = (props) => {
260
282
  } }) })] })] }), _jsx(StyledColumnBadgePreviewCard, { data: data })] }));
261
283
  };
262
284
  export const renderBadgeStyleSummary = (styledColumn, api) => {
263
- if (!api) {
264
- const { api: adaptableApi } = useOnePageAdaptableWizardContext();
265
- api = adaptableApi;
266
- }
267
285
  const items = getStyledColumnBadgeStyleViewValues(styledColumn, api);
268
286
  if (!items.length) {
269
287
  return _jsx(Tag, { children: "No Style Defined" });
270
288
  }
271
- return (_jsx(Flex, { alignItems: "center", className: "twa:flex-wrap twa:gap-2", children: items.map((item) => (_jsx(Tag, { children: item }, item))) }));
289
+ return renderSummaryStringTags(items);
272
290
  };
@@ -1,12 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
- import { CheckBox } from '../../../components/CheckBox';
4
- import { ColorPicker } from '../../../components/ColorPicker';
3
+ import { OptionalColorPicker } from '../../../components/ColorPicker';
5
4
  import FormLayout, { FormRow } from '../../../components/FormLayout';
6
5
  import { Box, Flex } from '../../../components/Flex';
7
6
  import { NumberInput } from '../../../components/Input/NumberInput';
8
7
  import { SingleSelect } from '../../../components/NewSelect';
9
- import { Tag } from '../../../components/Tag';
8
+ import { renderSummaryLabelValueTags } from '../../Wizard/SummaryColorTag';
10
9
  import { Toggle, ToggleGroup } from '../../../components/Toggle';
11
10
  const FORM_SIZES = ['200px', '1fr'];
12
11
  const FONT_SIZE_ITEMS = [
@@ -46,18 +45,13 @@ export const StyledColumnFontStyleEditor = (props) => {
46
45
  props.onChange(next);
47
46
  }
48
47
  };
49
- const onForeColorChecked = (checked) => {
50
- if (checked) {
51
- update({ ForeColor: font.ForeColor ?? '#000000' });
52
- }
53
- else {
54
- update({ ForeColor: undefined });
55
- }
48
+ const onForeColorChange = (color) => {
49
+ update({ ForeColor: color });
56
50
  };
57
51
  const onAlignmentChange = (alignment) => {
58
52
  update({ Alignment: alignment });
59
53
  };
60
- return (_jsx(Box, { children: _jsxs(FormLayout, { className: "twa:ml-2", sizes: [...FORM_SIZES], children: [_jsx(FormRow, { label: "Text Colour:", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!font.ForeColor, onChange: (checked) => onForeColorChecked(checked), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !font.ForeColor, api: props.api, value: font.ForeColor || '#000000', onChange: (c) => update({ ForeColor: c }) })] }) }), _jsx(FormRow, { label: "Font:", children: _jsx(Box, { className: disabledClass, children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2 twa:flex-wrap", children: [_jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: font.FontStyle === 'Italic', onPressedChange: (pressed) => update({ FontStyle: pressed ? 'Italic' : undefined }), icon: "italic" }), _jsx(Toggle, { pressed: font.FontWeight === 'Bold', onPressedChange: (pressed) => update({ FontWeight: pressed ? 'Bold' : undefined }), icon: "bold" })] }), _jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: font.TextDecoration === 'Underline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Underline' : undefined }), icon: "underline" }), _jsx(Toggle, { pressed: font.TextDecoration === 'LineThrough', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'LineThrough' : undefined }), icon: "strikethrough" }), _jsx(Toggle, { pressed: font.TextDecoration === 'Overline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Overline' : undefined }), icon: "overline" })] }), _jsx(Box, { className: "twa:w-32", children: _jsx(SingleSelect, { placeholder: "Default size", items: FONT_SIZE_ITEMS, value: font.FontSize ?? '', onValueChange: (value) => update({
54
+ return (_jsx(Box, { children: _jsxs(FormLayout, { className: "twa:ml-2", sizes: [...FORM_SIZES], children: [_jsx(FormRow, { label: "Text Colour:", children: _jsx(OptionalColorPicker, { className: "twa:ml-2", disabled: disabled, api: props.api, value: font.ForeColor, defaultColor: "#000000", onChange: onForeColorChange }) }), _jsx(FormRow, { label: "Font:", children: _jsx(Box, { className: disabledClass, children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2 twa:flex-wrap", children: [_jsxs(Flex, { alignItems: "center", className: "twa:gap-2", children: [_jsx(Toggle, { standalone: true, pressed: font.FontStyle === 'Italic', onPressedChange: (pressed) => update({ FontStyle: pressed ? 'Italic' : undefined }), icon: "italic" }), _jsx(Toggle, { standalone: true, pressed: font.FontWeight === 'Bold', onPressedChange: (pressed) => update({ FontWeight: pressed ? 'Bold' : undefined }), icon: "bold" })] }), _jsxs(ToggleGroup, { children: [_jsx(Toggle, { pressed: font.TextDecoration === 'Underline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Underline' : undefined }), icon: "underline" }), _jsx(Toggle, { pressed: font.TextDecoration === 'LineThrough', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'LineThrough' : undefined }), icon: "strikethrough" }), _jsx(Toggle, { pressed: font.TextDecoration === 'Overline', onPressedChange: (pressed) => update({ TextDecoration: pressed ? 'Overline' : undefined }), icon: "overline" })] }), _jsx(Box, { className: "twa:w-32", children: _jsx(SingleSelect, { placeholder: "Default size", items: FONT_SIZE_ITEMS, value: font.FontSize ?? '', onValueChange: (value) => update({
61
55
  FontSize: (value || undefined),
62
56
  }) }) })] }) }) }), !hideAlignment && (_jsx(FormRow, { label: "Alignment:", children: _jsx(Box, { className: disabledClass, children: _jsx(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: _jsxs(ToggleGroup, { children: [_jsx(Toggle, { icon: "align-left", pressed: font.Alignment === 'Left', onPressedChange: (pressed) => onAlignmentChange(pressed ? 'Left' : undefined) }), _jsx(Toggle, { icon: "align-center", pressed: font.Alignment === 'Center', onPressedChange: (pressed) => onAlignmentChange(pressed ? 'Center' : undefined) }), _jsx(Toggle, { icon: "align-right", pressed: font.Alignment === 'Right', onPressedChange: (pressed) => onAlignmentChange(pressed ? 'Right' : undefined) })] }) }) }) }))] }) }));
63
57
  };
@@ -88,7 +82,7 @@ export const StyledColumnCellStyleEditor = (props) => {
88
82
  props.onChange(next);
89
83
  }
90
84
  };
91
- return (_jsx(Box, { children: _jsxs(FormLayout, { className: "twa:ml-2", sizes: [...FORM_SIZES], children: [_jsx(FormRow, { label: "Background:", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!cell.BackColor, onChange: (checked) => update({ BackColor: checked ? cell.BackColor ?? '#ffffff' : undefined }), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !cell.BackColor, api: props.api, value: cell.BackColor || '#ffffff', onChange: (c) => update({ BackColor: c }) })] }) }), _jsx(FormRow, { label: "Border colour:", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(CheckBox, { disabled: disabled, checked: !!cell.BorderColor, onChange: (checked) => update({ BorderColor: checked ? cell.BorderColor ?? '#000000' : undefined }), children: "Set" }), _jsx(ColorPicker, { disabled: disabled || !cell.BorderColor, api: props.api, value: cell.BorderColor || '#000000', onChange: (c) => update({ BorderColor: c }) })] }) }), _jsx(FormRow, { label: "Border radius:", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(NumberInput, { disabled: disabled, className: "twa:w-20", value: cell.BorderRadius, min: 0, max: 64, step: 1, onChange: (v) => update({ BorderRadius: v === undefined || isNaN(Number(v)) ? undefined : v }) }), _jsx(Box, { className: "twa:text-xs twa:opacity-70", children: "px" })] }) })] }) }));
85
+ return (_jsx(Box, { children: _jsxs(FormLayout, { className: "twa:ml-2", sizes: [...FORM_SIZES], children: [_jsx(FormRow, { label: "Background:", children: _jsx(OptionalColorPicker, { className: "twa:ml-2", disabled: disabled, api: props.api, value: cell.BackColor, defaultColor: "#ffffff", onChange: (c) => update({ BackColor: c }) }) }), _jsx(FormRow, { label: "Border colour:", children: _jsx(OptionalColorPicker, { className: "twa:ml-2", disabled: disabled, api: props.api, value: cell.BorderColor, defaultColor: "#000000", onChange: (c) => update({ BorderColor: c }) }) }), _jsx(FormRow, { label: "Border radius:", children: _jsxs(Flex, { alignItems: "center", className: "twa:ml-2 twa:gap-2", children: [_jsx(NumberInput, { disabled: disabled, className: "twa:w-20", value: cell.BorderRadius, min: 0, max: 64, step: 1, onChange: (v) => update({ BorderRadius: v === undefined || isNaN(Number(v)) ? undefined : v }) }), _jsx(Box, { className: "twa:text-xs twa:opacity-70", children: "px" })] }) })] }) }));
92
86
  };
93
87
  /**
94
88
  * Descriptive font properties for summary panels (`Label: value` strings).
@@ -126,7 +120,7 @@ export const renderFontStyleSummaryTags = (font) => {
126
120
  if (!items.length) {
127
121
  return null;
128
122
  }
129
- return (_jsx(Flex, { alignItems: "center", className: "twa:gap-1 twa:flex-wrap", children: items.map(({ label, value }) => (_jsx(Tag, { children: `${label}: ${value}` }, label))) }));
123
+ return renderSummaryLabelValueTags(items);
130
124
  };
131
125
  /**
132
126
  * Descriptive cell box properties for summary panels (`Label: value` strings).
@@ -155,5 +149,5 @@ export const renderCellStyleSummaryTags = (cell) => {
155
149
  if (!items.length) {
156
150
  return null;
157
151
  }
158
- return (_jsx(Flex, { alignItems: "center", className: "twa:gap-1 twa:flex-wrap", children: items.map(({ label, value }) => (_jsx(Tag, { children: `${label}: ${value}` }, label))) }));
152
+ return renderSummaryLabelValueTags(items);
159
153
  };
@@ -4,6 +4,7 @@ import { SingleSelect } from '../../../components/NewSelect';
4
4
  import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
5
5
  import FormLayout, { FormRow } from '../../../components/FormLayout';
6
6
  import { Tag } from '../../../components/Tag';
7
+ import { renderSummaryStringTags } from '../../Wizard/SummaryColorTag';
7
8
  import AdaptableInput from '../../Components/AdaptableInput';
8
9
  import { ColorPicker } from '../../../components/ColorPicker';
9
10
  import { CheckBox } from '../../../components/CheckBox';
@@ -95,7 +96,7 @@ export const renderSparklineSummary = (data) => {
95
96
  const items = buildStyledColumnSparklineStyleSummaryStrings(sparkline, {
96
97
  includeEmptyFeatures: true,
97
98
  });
98
- return (_jsx(Flex, { alignItems: "center", className: "twa:flex-wrap twa:gap-2", children: items.map((item) => (_jsx(Tag, { children: item }, item))) }));
99
+ return renderSummaryStringTags(items);
99
100
  };
100
101
  /**
101
102
  * Validation for the Sparkline Settings wizard step.
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export type StyledColumnTypeThumbnailKey = 'gradient' | 'percent' | 'sparkline' | 'badge' | 'bullet' | 'rating' | 'rangeBar' | 'icon';
3
+ export declare const StyledColumnTypeThumbnail: React.FunctionComponent<{
4
+ type: StyledColumnTypeThumbnailKey;
5
+ }>;