@adaptabletools/adaptable-cjs 23.0.0-canary.4 → 23.0.0-canary.6

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 (250) hide show
  1. package/index.css +117 -62
  2. package/package.json +9 -4
  3. package/src/AdaptableOptions/EditOptions.d.ts +2 -2
  4. package/src/AdaptableState/Common/AggregationColumns.d.ts +14 -6
  5. package/src/AdaptableState/Common/AggregationColumns.js +30 -3
  6. package/src/AdaptableState/Common/ColumnScope.d.ts +4 -0
  7. package/src/AdaptableState/Common/Enums.d.ts +5 -5
  8. package/src/AdaptableState/Common/Enums.js +4 -4
  9. package/src/AdaptableState/PlusMinusState.d.ts +3 -3
  10. package/src/AdaptableState/ShortcutState.d.ts +2 -6
  11. package/src/AdaptableState/StyledColumnState.d.ts +3 -5
  12. package/src/AdaptableState/ThemeState.d.ts +33 -28
  13. package/src/Api/EventApi.d.ts +14 -1
  14. package/src/Api/Events/ThemeChanged.d.ts +6 -0
  15. package/src/Api/Events/ThemeSelected.d.ts +11 -0
  16. package/src/Api/Events/ThemeSelected.js +2 -0
  17. package/src/Api/Implementation/EventApiImpl.js +4 -0
  18. package/src/Api/Implementation/LayoutApiImpl.d.ts +0 -2
  19. package/src/Api/Implementation/LayoutApiImpl.js +0 -14
  20. package/src/Api/Implementation/LayoutHelpers.d.ts +2 -0
  21. package/src/Api/Implementation/LayoutHelpers.js +19 -8
  22. package/src/Api/Implementation/ThemeApiImpl.d.ts +3 -2
  23. package/src/Api/Implementation/ThemeApiImpl.js +19 -15
  24. package/src/Api/Internal/EventInternalApi.d.ts +2 -0
  25. package/src/Api/Internal/EventInternalApi.js +8 -1
  26. package/src/Api/Internal/StyledColumnInternalApi.d.ts +4 -4
  27. package/src/Api/Internal/StyledColumnInternalApi.js +4 -4
  28. package/src/Api/Internal/ThemeInternalApi.d.ts +0 -1
  29. package/src/Api/Internal/ThemeInternalApi.js +0 -10
  30. package/src/Api/LayoutApi.d.ts +1 -8
  31. package/src/Api/ThemeApi.d.ts +6 -2
  32. package/src/Redux/ActionsReducers/ThemeRedux.d.ts +3 -3
  33. package/src/Strategy/FormatColumnModule.js +12 -5
  34. package/src/Strategy/LayoutModule.js +13 -8
  35. package/src/Strategy/StyledColumnModule.js +58 -30
  36. package/src/Utilities/Constants/ReduxConstants.d.ts +2 -2
  37. package/src/Utilities/Constants/ReduxConstants.js +1 -14
  38. package/src/Utilities/Helpers/FormatHelper.js +20 -1
  39. package/src/Utilities/Helpers/SparklineOptionsHelper.d.ts +7 -0
  40. package/src/Utilities/Helpers/SparklineOptionsHelper.js +68 -0
  41. package/src/Utilities/Helpers/StyledColumnGradientHelper.d.ts +23 -1
  42. package/src/Utilities/Helpers/StyledColumnGradientHelper.js +212 -1
  43. package/src/Utilities/Helpers/ThemeHelpers.d.ts +5 -0
  44. package/src/Utilities/Helpers/ThemeHelpers.js +43 -0
  45. package/src/Utilities/Helpers/percentBarPreviewHelper.d.ts +19 -0
  46. package/src/Utilities/Helpers/percentBarPreviewHelper.js +155 -0
  47. package/src/Utilities/ObjectFactory.d.ts +1 -3
  48. package/src/Utilities/ObjectFactory.js +0 -9
  49. package/src/Utilities/Services/ThemeService.js +1 -1
  50. package/src/View/Alert/Wizard/AlertBehaviourWizardSection.js +17 -16
  51. package/src/View/Alert/Wizard/AlertButtonsEditor.js +113 -102
  52. package/src/View/Alert/Wizard/AlertMessageWizardSection.js +12 -13
  53. package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +54 -54
  54. package/src/View/Alert/Wizard/AlertRulesWizardSection.js +4 -3
  55. package/src/View/Alert/Wizard/AlertScheduledWizardSection.js +1 -1
  56. package/src/View/Alert/Wizard/AlertScopeWizardSection.js +29 -37
  57. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +2 -3
  58. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +9 -13
  59. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +28 -15
  60. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +7 -9
  61. package/src/View/CalculatedColumn/Wizard/CalculatedColumnTypeSection.js +2 -2
  62. package/src/View/CellSummary/CellSummaryViewPanel.js +1 -1
  63. package/src/View/Charting/ChartingWizard/AgChargingWizard/AgChargingWizard.js +3 -10
  64. package/src/View/Charting/ChartingWizard/AgChargingWizard/PreviewChartSection.js +1 -1
  65. package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +32 -41
  66. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/ExternalChartingWizard.js +4 -31
  67. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.d.ts +5 -0
  68. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/PreviewChartSection.js +26 -0
  69. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.d.ts +1 -0
  70. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +9 -6
  71. package/src/View/Comments/CommentsEditor.js +1 -1
  72. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +0 -1
  73. package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +3 -1
  74. package/src/View/Components/ModuleProfile.js +1 -1
  75. package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +0 -1
  76. package/src/View/Components/Popups/WindowPopups/windowFactory.js +1 -2
  77. package/src/View/Components/RangesComponent.d.ts +7 -2
  78. package/src/View/Components/RangesComponent.js +94 -22
  79. package/src/View/Components/StyleComponent.d.ts +1 -0
  80. package/src/View/Components/StyleComponent.js +1 -1
  81. package/src/View/Components/ValueSelector/index.js +70 -57
  82. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +8 -13
  83. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +8 -8
  84. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -1
  85. package/src/View/DataImport/DataImportWizard/sections/ColumnsSection.js +11 -12
  86. package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadSection.js +5 -4
  87. package/src/View/DataImport/DataImportWizard/sections/UploadSection/UploadTextSection.js +2 -1
  88. package/src/View/DataImport/DataImportWizard/sections/ValidationSection.js +4 -15
  89. package/src/View/Export/Wizard/ReportColumnsWizardSection.js +24 -27
  90. package/src/View/Export/Wizard/ReportNameWizardSection.js +8 -11
  91. package/src/View/Export/Wizard/ReportRowsWizardSection.js +19 -22
  92. package/src/View/Export/Wizard/ScheduledReportSettings.d.ts +2 -0
  93. package/src/View/Export/Wizard/ScheduledReportSettings.js +12 -12
  94. package/src/View/Export/Wizard/ScheduledReportWizard.js +2 -3
  95. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +8 -6
  96. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +19 -20
  97. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +20 -11
  98. package/src/View/FlashingCell/Wizard/FlashingCellStyleWizardSection.js +19 -3
  99. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +4 -4
  100. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +7 -0
  101. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +120 -13
  102. package/src/View/FormatColumn/Wizard/FormatColumnPreview.d.ts +15 -0
  103. package/src/View/FormatColumn/Wizard/FormatColumnPreview.js +78 -0
  104. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +4 -0
  105. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +34 -0
  106. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +11 -6
  107. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +1 -1
  108. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.d.ts +3 -1
  109. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +64 -13
  110. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +3 -1
  111. package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.d.ts +2 -0
  112. package/src/View/FreeTextColumn/Utilities/getFreeTextColumnSettingsTags.js +19 -0
  113. package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.d.ts +10 -0
  114. package/src/View/FreeTextColumn/Wizard/FreeTextColumnDefinitionWizardSection.js +60 -0
  115. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +2 -3
  116. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +35 -70
  117. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +14 -10
  118. package/src/View/Layout/TransposedPopup.js +2 -2
  119. package/src/View/Layout/Wizard/LayoutWizard.js +3 -3
  120. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +2 -3
  121. package/src/View/Layout/Wizard/sections/AggregationsSection.js +116 -26
  122. package/src/View/Layout/Wizard/sections/ColumnsSection.js +79 -79
  123. package/src/View/Layout/Wizard/sections/FilterSection.js +31 -32
  124. package/src/View/Layout/Wizard/sections/GridFilterSection.js +10 -10
  125. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.d.ts +1 -2
  126. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +101 -51
  127. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +9 -8
  128. package/src/View/Layout/Wizard/sections/PivotRowGroupingSection.js +4 -4
  129. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +36 -33
  130. package/src/View/Layout/Wizard/sections/RowSelectionSection.js +2 -2
  131. package/src/View/Layout/Wizard/sections/RowSummarySection.js +95 -73
  132. package/src/View/Layout/Wizard/sections/SettingsSection.js +3 -4
  133. package/src/View/Layout/Wizard/sections/SortSection.js +2 -2
  134. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +1 -1
  135. package/src/View/NamedQuery/Wizard/NamedQuerySettingsWizardSection.js +7 -12
  136. package/src/View/NamedQuery/Wizard/NamedQueryWizard.js +1 -3
  137. package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.d.ts +4 -0
  138. package/src/View/PlusMinus/Wizard/PlusMinusRuleWizardSection.js +45 -12
  139. package/src/View/PlusMinus/Wizard/PlusMinusScopeWizardSection.js +10 -17
  140. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.d.ts +2 -6
  141. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +5 -21
  142. package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +15 -21
  143. package/src/View/Schedule/Wizard/ScheduleScheduleWizard.js +2 -2
  144. package/src/View/Shortcut/Wizard/ShortcutScopeWizardSection.js +10 -17
  145. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +16 -5
  146. package/src/View/Shortcut/Wizard/ShortcutWizard.js +2 -2
  147. package/src/View/Shortcut/shortcutOperations.d.ts +3 -0
  148. package/src/View/Shortcut/shortcutOperations.js +32 -1
  149. package/src/View/SpecialColumnSettingsWizardStep.js +7 -6
  150. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +5 -0
  151. package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +26 -16
  152. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.d.ts +10 -2
  153. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +100 -15
  154. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.d.ts +14 -0
  155. package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +48 -25
  156. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.d.ts +2 -3
  157. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +109 -33
  158. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +20 -12
  159. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.d.ts +5 -0
  160. package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +124 -23
  161. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.d.ts +1 -0
  162. package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +35 -11
  163. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.d.ts +5 -0
  164. package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +88 -11
  165. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.d.ts +5 -0
  166. package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +125 -35
  167. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.d.ts +1 -0
  168. package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +55 -74
  169. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.d.ts +5 -0
  170. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.js +20 -0
  171. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.js +6 -12
  172. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarColumnComparisonPreview.js +5 -5
  173. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarRangesPreview.js +2 -1
  174. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.d.ts +5 -4
  175. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.js +11 -13
  176. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.d.ts +5 -0
  177. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.js +20 -0
  178. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.d.ts +3 -0
  179. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +32 -3
  180. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.d.ts +9 -0
  181. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +64 -0
  182. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.d.ts +10 -0
  183. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnGradientPreview.js +35 -0
  184. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.d.ts +10 -0
  185. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.js +96 -0
  186. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.d.ts +8 -0
  187. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.js +57 -0
  188. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.d.ts +8 -0
  189. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +58 -0
  190. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.d.ts +18 -0
  191. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +66 -0
  192. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.d.ts +10 -0
  193. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +133 -0
  194. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +12 -5
  195. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.d.ts +1 -5
  196. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +53 -29
  197. package/src/View/SystemStatus/Utilities/getStatusItemStyle.js +1 -1
  198. package/src/View/Theme/ThemePopup.d.ts +2 -14
  199. package/src/View/Theme/ThemePopup.js +1 -36
  200. package/src/View/UIHelper.js +1 -1
  201. package/src/View/Wizard/OnePageAdaptableWizard.js +6 -20
  202. package/src/agGrid/AdaptableAgGrid.d.ts +1 -0
  203. package/src/agGrid/AdaptableAgGrid.js +34 -24
  204. package/src/agGrid/AgGridAdapter.d.ts +1 -1
  205. package/src/agGrid/AgGridAdapter.js +27 -17
  206. package/src/agGrid/AgGridColumnAdapter.js +9 -15
  207. package/src/agGrid/AgGridMenuAdapter.d.ts +0 -1
  208. package/src/agGrid/AgGridMenuAdapter.js +20 -37
  209. package/src/agGrid/buildValueAggregationMenuItem.d.ts +19 -0
  210. package/src/agGrid/buildValueAggregationMenuItem.js +114 -0
  211. package/src/agGrid/cellRenderers/IconRenderer.d.ts +6 -0
  212. package/src/agGrid/cellRenderers/IconRenderer.js +46 -17
  213. package/src/agGrid/createAgGridIcon.d.ts +10 -0
  214. package/src/agGrid/createAgGridIcon.js +19 -0
  215. package/src/components/DragAndDropContext/UnusedPanel.js +1 -1
  216. package/src/components/ExpressionEditor/BaseEditorInput.js +1 -1
  217. package/src/components/ExpressionEditor/ExpressionFunctionDocumentation.js +1 -1
  218. package/src/components/Input/NumberInput.js +1 -1
  219. package/src/components/Panel/index.js +1 -1
  220. package/src/components/SimpleButton/index.js +4 -4
  221. package/src/components/Toggle/Toggle.js +1 -1
  222. package/src/components/Toggle/ToggleGroup.js +1 -1
  223. package/src/env.js +2 -2
  224. package/src/layout-manager/src/index.js +2 -9
  225. package/src/metamodel/adaptable.metamodel.d.ts +39 -29
  226. package/src/metamodel/adaptable.metamodel.js +1 -1
  227. package/src/types.d.ts +5 -4
  228. package/themes/dark.css +1 -68
  229. package/themes/light.css +1 -5
  230. package/tsconfig.cjs.tsbuildinfo +1 -1
  231. package/src/Aggregation/ParameterizedAggregationRegistry.d.ts +0 -35
  232. package/src/Aggregation/ParameterizedAggregationRegistry.js +0 -74
  233. package/src/Aggregation/definitions/weightedAverageAggregationDefinition.d.ts +0 -3
  234. package/src/Aggregation/definitions/weightedAverageAggregationDefinition.js +0 -58
  235. package/src/Aggregation/parameterizedAggregationColumnMenu.d.ts +0 -8
  236. package/src/Aggregation/parameterizedAggregationColumnMenu.js +0 -143
  237. package/src/Aggregation/parameterizedAggregationHeader.d.ts +0 -13
  238. package/src/Aggregation/parameterizedAggregationHeader.js +0 -65
  239. package/src/Aggregation/parameterizedAggregationHelpers.d.ts +0 -23
  240. package/src/Aggregation/parameterizedAggregationHelpers.js +0 -121
  241. package/src/Aggregation/parameterizedAggregationWizardHelpers.d.ts +0 -9
  242. package/src/Aggregation/parameterizedAggregationWizardHelpers.js +0 -74
  243. package/src/Aggregation/validateParameterizedAggregations.d.ts +0 -4
  244. package/src/Aggregation/validateParameterizedAggregations.js +0 -25
  245. package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.d.ts +0 -12
  246. package/src/View/Layout/Wizard/sections/ParameterizedAggFuncPicker.js +0 -48
  247. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.d.ts +0 -5
  248. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgeSettings.js +0 -32
  249. package/src/View/Theme/VariantSelector.d.ts +0 -8
  250. package/src/View/Theme/VariantSelector.js +0 -25
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FreeTextColumnDefinitionWizardSection = exports.isValidFreeTextColumnDefinition = exports.renderFreeTextColumnDefinitionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
8
+ const Tag_1 = require("../../../components/Tag");
9
+ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
10
+ const Flex_1 = require("../../../components/Flex");
11
+ const Card_1 = require("../../../components/Card");
12
+ const renderFreeTextColumnDefinitionSummary = (data) => {
13
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2 twa:grid twa:items-center twa:grid-cols-[auto_1fr] twa:gap-2", children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { children: "Column Identifier:" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { children: (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.ColumnId }) }), data.FriendlyName ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { children: "Column Name:" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { children: (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.FriendlyName ?? data.ColumnId }) })] })) : null] }));
14
+ };
15
+ exports.renderFreeTextColumnDefinitionSummary = renderFreeTextColumnDefinitionSummary;
16
+ const isValidFreeTextColumnDefinition = (data, api) => {
17
+ const columns = api.columnApi.getUIAvailableColumns();
18
+ if (!data.ColumnId) {
19
+ return 'A Column Name is required';
20
+ }
21
+ const columnsWithSameIdCount = columns.filter((c) => c.columnId === data.ColumnId).length;
22
+ const hasAlreadyExistingId = data.Uuid ? columnsWithSameIdCount > 1 : columnsWithSameIdCount > 0;
23
+ return hasAlreadyExistingId ? 'A column with this Name already exists' : true;
24
+ };
25
+ exports.isValidFreeTextColumnDefinition = isValidFreeTextColumnDefinition;
26
+ const FreeTextColumnDefinitionWizardSection = (props) => {
27
+ const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
28
+ const [ColumnNameFocused, setColumnNameFocused] = (0, react_1.useState)(false);
29
+ const inEdit = props.isEdit;
30
+ const handleColumnIdChange = (event) => {
31
+ let e = event.target;
32
+ props.onChange({
33
+ ...data,
34
+ ColumnId: e.value,
35
+ });
36
+ };
37
+ const handleColumnNameChange = (event) => {
38
+ let e = event.target;
39
+ props.onChange({
40
+ ...data,
41
+ FriendlyName: e.value,
42
+ });
43
+ };
44
+ const handleSpecialColumnSettingsChange = (settings) => {
45
+ props.onChange({
46
+ ...data,
47
+ FreeTextColumnSettings: {
48
+ ...data.FreeTextColumnSettings,
49
+ ...settings,
50
+ },
51
+ });
52
+ };
53
+ const { HeaderToolTip } = data.FreeTextColumnSettings ?? {};
54
+ return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { "data-name": "free-text-column-definition", children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", 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: "Column Name" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Unique identifier for the Free Text Column" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "column-id", value: data.ColumnId || '', className: "twa:max-w-[500px] twa:w-full", autoFocus: !inEdit, disabled: inEdit, type: "text", placeholder: "Enter a Column Name", onChange: handleColumnIdChange }) })] }), (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: "Column Header" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional display name shown in the grid header" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "column-name", autoFocus: inEdit, onFocus: () => setColumnNameFocused(true), onBlur: () => setColumnNameFocused(false), value: ColumnNameFocused
55
+ ? data.FriendlyName || ''
56
+ : data.FriendlyName || data.ColumnId || '', className: "twa:max-w-[500px] twa:w-full", type: "text", placeholder: "Enter a Column Header (optional)", onChange: handleColumnNameChange }) })] }), (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: "Column Header Tooltip" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional text shown when hovering over the column header" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "header-tooltip", type: "text", className: "twa:max-w-[500px] twa:w-full", value: HeaderToolTip, onChange: (e) => handleSpecialColumnSettingsChange({
57
+ HeaderToolTip: e.target.value,
58
+ }) }) })] })] }) }));
59
+ };
60
+ exports.FreeTextColumnDefinitionWizardSection = FreeTextColumnDefinitionWizardSection;
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { FreeTextColumn } from '../../../AdaptableState/FreeTextColumnState';
3
- import { AdaptableApi } from '../../../Api/AdaptableApi';
4
- export declare const renderFreeTextColumnSummary: (data: FreeTextColumn) => React.JSX.Element;
5
- export declare const isValidFreeTextColumn: (data: FreeTextColumn, api: AdaptableApi) => true | "A Column Name is required" | "A column with this Name already exists" | "A data type is required for the column";
3
+ export declare const renderFreeTextColumnSettingsSummary: (data: FreeTextColumn) => React.JSX.Element;
4
+ export declare const isValidFreeTextColumnSettings: (data: FreeTextColumn) => true | string;
6
5
  export type FreeTextColumnSettingsWizardSectionProps = {
7
6
  onChange: (data: FreeTextColumn) => void;
8
7
  isEdit: boolean;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FreeTextColumnSettingsWizardSection = exports.isValidFreeTextColumn = exports.renderFreeTextColumnSummary = void 0;
3
+ exports.FreeTextColumnSettingsWizardSection = exports.isValidFreeTextColumnSettings = exports.renderFreeTextColumnSettingsSummary = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = require("react");
7
6
  const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
8
- const ErrorBox_1 = tslib_1.__importDefault(require("../../../components/ErrorBox"));
9
- const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
10
- const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
7
+ const Radio_1 = tslib_1.__importStar(require("../../../components/Radio"));
11
8
  const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
12
9
  const AdaptableInput_1 = tslib_1.__importDefault(require("../../Components/AdaptableInput"));
13
10
  const CheckBox_1 = require("../../../components/CheckBox");
@@ -17,55 +14,31 @@ const Tag_1 = require("../../../components/Tag");
17
14
  const SpecialColumnSettingsWizardStep_1 = require("../../SpecialColumnSettingsWizardStep");
18
15
  const Flex_1 = require("../../../components/Flex");
19
16
  const NewSelect_1 = require("../../../components/NewSelect");
20
- const options = [
17
+ const Card_1 = require("../../../components/Card");
18
+ const Tag_2 = require("../../../components/Tag/Tag");
19
+ const getFreeTextColumnSettingsTags_1 = require("../Utilities/getFreeTextColumnSettingsTags");
20
+ const OnePageAdaptableWizard_2 = require("../../Wizard/OnePageAdaptableWizard");
21
+ const dataTypeOptions = [
21
22
  { value: 'number', label: 'Number' },
22
23
  { value: 'text', label: 'Text' },
23
24
  { value: 'date', label: 'Date' },
24
25
  { value: 'boolean', label: 'Boolean' },
25
26
  ];
26
- const renderFreeTextColumnSummary = (data) => {
27
- return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-2", children: [(0, jsx_runtime_1.jsxs)(Flex_1.Box, { children: ["Column Identifier: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.ColumnId })] }), data.FriendlyName ? ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:mt-3", children: ["Column Name: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.FriendlyName ?? data.ColumnId })] })) : null, (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:mt-3", children: ["Data Type: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.FreeTextColumnSettings.DataType })] }), data.DefaultValue !== undefined ? ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:mt-3", children: ["Default Value: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.DefaultValue })] })) : null, data.TextEditor !== undefined ? ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:mt-3", children: ["Editor Type: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.TextEditor })] })) : null] }));
27
+ const renderFreeTextColumnSettingsSummary = (data) => {
28
+ const propertyTags = (0, getFreeTextColumnSettingsTags_1.getFreeTextColumnSettingsTags)(data.FreeTextColumnSettings);
29
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(OnePageAdaptableWizard_2.SummaryText, { children: ["Data Type: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.FreeTextColumnSettings.DataType || 'Not specified' })] }), data.DefaultValue !== undefined ? ((0, jsx_runtime_1.jsxs)(OnePageAdaptableWizard_2.SummaryText, { children: ["Default Value: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: String(data.DefaultValue) })] })) : null, data.TextEditor !== undefined ? ((0, jsx_runtime_1.jsxs)(OnePageAdaptableWizard_2.SummaryText, { children: ["Editor Type: ", (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: data.TextEditor })] })) : null, propertyTags.length ? ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:mt-2", children: (0, jsx_runtime_1.jsx)(Tag_2.TagList, { tags: propertyTags }) })) : null] }));
28
30
  };
29
- exports.renderFreeTextColumnSummary = renderFreeTextColumnSummary;
30
- const isValidFreeTextColumn = (data, api) => {
31
- const columns = api.columnApi.getUIAvailableColumns();
32
- if (!data.ColumnId) {
33
- return 'A Column Name is required';
34
- }
35
- const columnsWithSameIdCount = columns.filter((c) => c.columnId === data.ColumnId).length;
36
- const hasAlreadyExistingId = data.Uuid ? columnsWithSameIdCount > 1 : columnsWithSameIdCount > 0;
37
- if (hasAlreadyExistingId) {
38
- return 'A column with this Name already exists';
39
- }
40
- if (!data.FreeTextColumnSettings.DataType) {
31
+ exports.renderFreeTextColumnSettingsSummary = renderFreeTextColumnSettingsSummary;
32
+ const isValidFreeTextColumnSettings = (data) => {
33
+ if (!data.FreeTextColumnSettings?.DataType) {
41
34
  return 'A data type is required for the column';
42
35
  }
43
36
  return true;
44
37
  };
45
- exports.isValidFreeTextColumn = isValidFreeTextColumn;
38
+ exports.isValidFreeTextColumnSettings = isValidFreeTextColumnSettings;
46
39
  const FreeTextColumnSettingsWizardSection = (props) => {
47
40
  const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
48
41
  const Pattern = api.optionsApi.getUserInterfaceOptions().dateInputOptions.dateFormat;
49
- const [ColumnNameFocused, setColumnNameFocused] = (0, react_1.useState)(false);
50
- const inEdit = props.isEdit;
51
- const validCheck = (0, exports.isValidFreeTextColumn)(data, api);
52
- const ErrorMessage = validCheck === true ? null : validCheck;
53
- const handleColumnIdChange = (event) => {
54
- let e = event.target;
55
- const ColumnId = e.value;
56
- props.onChange({
57
- ...data,
58
- ColumnId,
59
- });
60
- };
61
- const handleColumnNameChange = (event) => {
62
- let e = event.target;
63
- const ColumnName = e.value;
64
- props.onChange({
65
- ...data,
66
- FriendlyName: ColumnName,
67
- });
68
- };
69
42
  const handleDataTypeChange = (DataType) => {
70
43
  const newData = {
71
44
  ...data,
@@ -80,14 +53,6 @@ const FreeTextColumnSettingsWizardSection = (props) => {
80
53
  }
81
54
  props.onChange(newData);
82
55
  };
83
- const onDynamicSelectChanged = (event) => {
84
- let e = event.target;
85
- const TextEditor = e.value;
86
- props.onChange({
87
- ...data,
88
- TextEditor,
89
- });
90
- };
91
56
  const handleDefaultValueChange = (event) => {
92
57
  let e = event.target;
93
58
  let DefaultValue = e.value;
@@ -101,9 +66,7 @@ const FreeTextColumnSettingsWizardSection = (props) => {
101
66
  DefaultValue,
102
67
  });
103
68
  };
104
- const handleSpecialColumnSettingsChange = (
105
- // settings: SpecialColumnSettings
106
- settings) => {
69
+ const handleSpecialColumnSettingsChange = (settings) => {
107
70
  props.onChange({
108
71
  ...data,
109
72
  FreeTextColumnSettings: {
@@ -112,23 +75,25 @@ const FreeTextColumnSettingsWizardSection = (props) => {
112
75
  },
113
76
  });
114
77
  };
115
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(FormLayout_1.default, { children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Column Name", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "column-id", autoFocus: !inEdit, value: data.ColumnId || '', style: { width: '100%', maxWidth: 500 }, disabled: inEdit, type: "text", placeholder: "Enter a Column Name", onChange: (e) => handleColumnIdChange(e) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Column Header", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "column-name", autoFocus: inEdit, onFocus: () => {
116
- setColumnNameFocused(true);
117
- }, onBlur: () => {
118
- setColumnNameFocused(false);
119
- }, value: ColumnNameFocused ? data.FriendlyName || '' : data.FriendlyName || data.ColumnId || '', style: { width: '100%', maxWidth: 500 }, type: "text", placeholder: "Enter a Column Header (optional)", onChange: (e) => handleColumnNameChange(e) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Data Type", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[500px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { "data-name": "column-type-dropdown", className: "twa:w-full", items: options, placeholder: "Select Data Type", value: data.FreeTextColumnSettings.DataType, onValueChange: (value) => handleDataTypeChange(value) }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Default Value", children: data.FreeTextColumnSettings.DataType === 'boolean' ? ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { "data-name": "column-default-value-checkbox", checked: !!data.DefaultValue, onChange: (DefaultValue) => {
120
- props.onChange({
121
- ...data,
122
- DefaultValue,
123
- });
124
- } })) : ((0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { "data-name": "column-default-value", value: data.FreeTextColumnSettings.DataType === 'date' && data.DefaultValue
125
- ? (0, DateHelper_1.parseToISO)(data.DefaultValue, Pattern) || ''
126
- : data.DefaultValue || '', className: "twa:w-full twa:max-w-[500px]", type: data.FreeTextColumnSettings.DataType === 'number'
127
- ? 'number'
128
- : data.FreeTextColumnSettings.DataType === 'date'
129
- ? 'date'
130
- : 'text', placeholder: "Enter a default value (optional)", onChange: (e) => handleDefaultValueChange(e) })) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Header Tooltip", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "header-tooltip", type: "text", style: { width: '100%', maxWidth: 500 }, value: data.FreeTextColumnSettings?.HeaderToolTip || '', onChange: (e) => handleSpecialColumnSettingsChange({
131
- HeaderToolTip: e.target.value,
132
- }) }) }), ' ', data.FreeTextColumnSettings.DataType == 'text' && ((0, jsx_runtime_1.jsxs)(FormLayout_1.FormRow, { label: "Cell Editor", children: [(0, jsx_runtime_1.jsx)(Radio_1.default, { "data-name": "inline-editor", value: "Inline", checked: data.TextEditor == 'Inline', onChange: (_, e) => onDynamicSelectChanged(e), className: "twa:mr-2", children: "Inline Editor" }), (0, jsx_runtime_1.jsx)(Radio_1.default, { "data-name": "large-editor", value: "Large", checked: data.TextEditor == 'Large', onChange: (_, e) => onDynamicSelectChanged(e), children: "Large Editor" })] }))] }), ErrorMessage ? (0, jsx_runtime_1.jsx)(ErrorBox_1.default, { className: "twa:my-2", children: ErrorMessage }) : null, (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:mt-2", children: (0, jsx_runtime_1.jsx)(SpecialColumnSettingsWizardStep_1.SpecialColumnSettingsWizardStep, { isEditable: true, settings: data.FreeTextColumnSettings, onChange: handleSpecialColumnSettingsChange }) })] }));
78
+ const { Width } = data.FreeTextColumnSettings ?? {};
79
+ return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { "data-name": "free-text-column-settings", children: (0, jsx_runtime_1.jsxs)(Flex_1.Flex, { flexDirection: "column", className: "twa:gap-3 twa:p-3", 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: "Data Type" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose the data type for values entered in this column" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { "data-name": "column-type-dropdown", className: "twa:max-w-[300px]", items: dataTypeOptions, placeholder: "Select Data Type", value: data.FreeTextColumnSettings.DataType, onValueChange: (value) => handleDataTypeChange(value) }) })] }), (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: "Default Value" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional initial value for each cell in the column" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: data.FreeTextColumnSettings.DataType === 'boolean' ? ((0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { "data-name": "column-default-value-checkbox", checked: !!data.DefaultValue, onChange: (DefaultValue) => {
80
+ props.onChange({
81
+ ...data,
82
+ DefaultValue,
83
+ });
84
+ } })) : ((0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { "data-name": "column-default-value", value: data.FreeTextColumnSettings.DataType === 'date' && data.DefaultValue
85
+ ? (0, DateHelper_1.parseToISO)(data.DefaultValue, Pattern) || ''
86
+ : data.DefaultValue || '', className: "twa:max-w-[500px] twa:w-full", type: data.FreeTextColumnSettings.DataType === 'number'
87
+ ? 'number'
88
+ : data.FreeTextColumnSettings.DataType === 'date'
89
+ ? 'date'
90
+ : 'text', placeholder: "Enter a default value (optional)", onChange: handleDefaultValueChange })) })] }), data.FreeTextColumnSettings.DataType === 'text' ? ((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: "Cell Editor" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Choose how text values are edited in the grid" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsxs)(Radio_1.RadioGroup, { value: data.TextEditor ?? 'Inline', name: "textEditor", orientation: "horizontal", onRadioChange: (TextEditor) => {
91
+ props.onChange({
92
+ ...data,
93
+ TextEditor,
94
+ });
95
+ }, children: [(0, jsx_runtime_1.jsx)(Radio_1.default, { className: "twa:ml-1", "data-name": "inline-editor", value: "Inline", children: "Inline Editor" }), (0, jsx_runtime_1.jsx)(Radio_1.default, { className: "twa:ml-4", "data-name": "large-editor", value: "Large", children: "Large Editor" })] }) })] })) : null, (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: "Width" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optional column width in pixels" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(Input_1.default, { "data-name": "column-width", type: "number", className: "twa:max-w-[300px]", value: Width || '', onChange: (e) => handleSpecialColumnSettingsChange({
96
+ Width: Number(e.target.value),
97
+ }) }) })] }), (0, jsx_runtime_1.jsx)(SpecialColumnSettingsWizardStep_1.SpecialColumnSettingsWizardStep, { isEditable: true, settings: data.FreeTextColumnSettings, onChange: handleSpecialColumnSettingsChange })] }) }));
133
98
  };
134
99
  exports.FreeTextColumnSettingsWizardSection = FreeTextColumnSettingsWizardSection;
@@ -7,6 +7,7 @@ const react_1 = require("react");
7
7
  const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
8
8
  const Helper_1 = require("../../../Utilities/Helpers/Helper");
9
9
  const FreeTextColumnSettingsWizardSection_1 = require("./FreeTextColumnSettingsWizardSection");
10
+ const FreeTextColumnDefinitionWizardSection_1 = require("./FreeTextColumnDefinitionWizardSection");
10
11
  const ObjectFactory_1 = tslib_1.__importDefault(require("../../../Utilities/ObjectFactory"));
11
12
  const FreeTextColumnRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/FreeTextColumnRedux"));
12
13
  const react_redux_1 = require("react-redux");
@@ -26,7 +27,7 @@ const FreeTextColumnWizard = (props) => {
26
27
  return ObjectFactory_1.default.CreateEmptyFreeTextColumn(adaptable.api.gridApi.internalApi.deriveSpecialColumnSettingsFromAgGridDefaultColDef());
27
28
  });
28
29
  const dispatch = (0, react_redux_1.useDispatch)();
29
- const isEdit = props.data || props.popupParams?.action === 'Edit';
30
+ const isEdit = Boolean(props.data) || props.popupParams?.action === 'Edit';
30
31
  const handleFinish = () => {
31
32
  if (isEdit) {
32
33
  dispatch(FreeTextColumnRedux.FreeTextColumnEdit(freeTextColumn));
@@ -37,13 +38,19 @@ const FreeTextColumnWizard = (props) => {
37
38
  props.onFinishWizard(freeTextColumn);
38
39
  };
39
40
  return ((0, jsx_runtime_1.jsx)(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: freeTextColumn, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
41
+ {
42
+ title: 'Details',
43
+ details: 'Provide Free Text Column Details',
44
+ isValid: FreeTextColumnDefinitionWizardSection_1.isValidFreeTextColumnDefinition,
45
+ renderSummary: FreeTextColumnDefinitionWizardSection_1.renderFreeTextColumnDefinitionSummary,
46
+ render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2", children: (0, jsx_runtime_1.jsx)(FreeTextColumnDefinitionWizardSection_1.FreeTextColumnDefinitionWizardSection, { isEdit: isEdit, onChange: setFreeTextColumn }) })),
47
+ },
40
48
  {
41
49
  title: 'Settings',
42
- details: 'Configure the Free Text Column',
43
- isValid: FreeTextColumnSettingsWizardSection_1.isValidFreeTextColumn,
44
- render: () => {
45
- return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2", children: (0, jsx_runtime_1.jsx)(FreeTextColumnSettingsWizardSection_1.FreeTextColumnSettingsWizardSection, { isEdit: Boolean(props.data), onChange: setFreeTextColumn }) }));
46
- },
50
+ details: 'Specify Free Text Column Properties',
51
+ isValid: FreeTextColumnSettingsWizardSection_1.isValidFreeTextColumnSettings,
52
+ renderSummary: FreeTextColumnSettingsWizardSection_1.renderFreeTextColumnSettingsSummary,
53
+ render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2", children: (0, jsx_runtime_1.jsx)(FreeTextColumnSettingsWizardSection_1.FreeTextColumnSettingsWizardSection, { isEdit: isEdit, onChange: setFreeTextColumn }) })),
47
54
  },
48
55
  {
49
56
  details: 'Select Free Text Column Tags',
@@ -55,10 +62,7 @@ const FreeTextColumnWizard = (props) => {
55
62
  '-',
56
63
  {
57
64
  details: 'Review the Free Text Column',
58
- renderSummary: FreeTextColumnSettingsWizardSection_1.renderFreeTextColumnSummary,
59
- render: () => {
60
- return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2", children: (0, jsx_runtime_1.jsx)(OnePageAdaptableWizard_1.OnePageWizardSummary, {}) }));
61
- },
65
+ render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2", children: (0, jsx_runtime_1.jsx)(OnePageAdaptableWizard_1.OnePageWizardSummary, {}) })),
62
66
  title: 'Summary',
63
67
  },
64
68
  ] }));
@@ -187,8 +187,8 @@ const TransposedPopup = (props) => {
187
187
  modules,
188
188
  }).then((adaptableApi) => {
189
189
  transposedAdaptableApiRef.current = adaptableApi;
190
- adaptableApi.eventApi.on('ThemeChanged', (event) => {
191
- transposedAdaptableApiRef.current?.themeApi.loadTheme(typeof event.theme === 'object' ? event.theme.Name : event.theme);
190
+ adaptableApi.eventApi.on('ThemeSelected', (event) => {
191
+ transposedAdaptableApiRef.current?.themeApi.loadTheme(event.theme);
192
192
  });
193
193
  });
194
194
  }, [elevatedColumnId, adaptable]);
@@ -179,8 +179,7 @@ const LayoutWizard = (props) => {
179
179
  {
180
180
  title: 'Row Groups',
181
181
  isVisible: () => layoutSupportedFeatures.RowGroupedColumns,
182
- isValid: RowSummarySection_1.areSummaryRowsValid,
183
- details: 'Configure Row Grouping',
182
+ details: 'Configure Row Grouping and Display Behaviour',
184
183
  renderSummary: () => (0, jsx_runtime_1.jsx)(RowGroupingSection_1.RowGroupingSectionSummary, {}),
185
184
  render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2 twa:h-full", children: (0, jsx_runtime_1.jsx)(RowGroupingSection_1.RowGroupingSection, { onChange: setLayout }) })),
186
185
  },
@@ -194,7 +193,7 @@ const LayoutWizard = (props) => {
194
193
  {
195
194
  title: 'Aggregations',
196
195
  isVisible: () => layoutSupportedFeatures.TableAggregationColumns,
197
- details: 'Select Column Aggregations',
196
+ details: 'Select Aggregation Columns and Behaviour',
198
197
  renderSummary: () => (0, jsx_runtime_1.jsx)(AggregationsSection_1.AggregationsSectionSummary, {}),
199
198
  isValid: (data) => (0, AggregationsSection_1.isAggregationsSectionValid)(data),
200
199
  render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2 twa:h-full", children: (0, jsx_runtime_1.jsx)(AggregationsSection_1.AggregationsSection, { onChange: (layout) => {
@@ -233,6 +232,7 @@ const LayoutWizard = (props) => {
233
232
  details: 'Configure Row Summaries',
234
233
  renderSummary: () => (0, jsx_runtime_1.jsx)(RowSummarySection_1.RowSummarySectionSummary, {}),
235
234
  isVisible: () => layoutSupportedFeatures.RowSummaries,
235
+ isValid: RowSummarySection_1.areSummaryRowsValid,
236
236
  render: () => ((0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:p-2 twa:h-full", children: (0, jsx_runtime_1.jsx)(RowSummarySection_1.RowSummarySection, { onChange: setLayout }) })),
237
237
  },
238
238
  {
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
- import { TableLayout } from '../../../../../types';
3
- import { validateTableLayoutAggregations } from '../../../../Aggregation/validateParameterizedAggregations';
4
- export declare const isAggregationsSectionValid: typeof validateTableLayoutAggregations;
2
+ import { Layout, TableLayout } from '../../../../../types';
3
+ export declare const isAggregationsSectionValid: (data: Layout) => true | string;
5
4
  export declare const AggregationsSectionSummary: React.FunctionComponent;
6
5
  interface AggregationsSectionProps {
7
6
  onChange: (data: TableLayout) => void;
@@ -6,11 +6,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const React = tslib_1.__importStar(require("react"));
7
7
  const CheckBox_1 = require("../../../../components/CheckBox");
8
8
  const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
9
- const Tabs_1 = require("../../../../components/Tabs");
9
+ const Card_1 = require("../../../../components/Card");
10
10
  const Tag_1 = require("../../../../components/Tag");
11
- const validateParameterizedAggregations_1 = require("../../../../Aggregation/validateParameterizedAggregations");
12
- const parameterizedAggregationHeader_1 = require("../../../../Aggregation/parameterizedAggregationHeader");
13
- const parameterizedAggregationWizardHelpers_1 = require("../../../../Aggregation/parameterizedAggregationWizardHelpers");
11
+ const AggregationColumns_1 = require("../../../../AdaptableState/Common/AggregationColumns");
14
12
  const AdaptableContext_1 = require("../../../AdaptableContext");
15
13
  const ValueSelector_1 = require("../../../Components/ValueSelector");
16
14
  const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
@@ -20,15 +18,25 @@ const ArrayExtensions_1 = tslib_1.__importDefault(require("../../../../Utilities
20
18
  const StringExtensions_1 = tslib_1.__importDefault(require("../../../../Utilities/Extensions/StringExtensions"));
21
19
  const Flex_1 = require("../../../../components/Flex");
22
20
  const NewSelect_1 = require("../../../../components/NewSelect");
23
- const ParameterizedAggFuncPicker_1 = require("./ParameterizedAggFuncPicker");
24
- exports.isAggregationsSectionValid = validateParameterizedAggregations_1.validateTableLayoutAggregations;
21
+ const WEIGHTED_AVERAGE_AGG_FN_NAME = 'weightedAvg';
22
+ const isAggregationsSectionValid = (data) => {
23
+ const weightedAvg = data.TableAggregationColumns
24
+ ? (data.TableAggregationColumns || []).find(({ AggFunc }) => typeof AggFunc === 'object' &&
25
+ AggFunc.type === 'weightedAverage')?.AggFunc
26
+ : null;
27
+ if (weightedAvg && !weightedAvg.weightedColumnId) {
28
+ return 'Weighted Average requires a weight column to be selected.';
29
+ }
30
+ return true;
31
+ };
32
+ exports.isAggregationsSectionValid = isAggregationsSectionValid;
25
33
  const AggregationsSectionSummary = () => {
26
34
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
27
35
  const { data: layout } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
28
36
  const entries = layout.TableAggregationColumns || [];
29
37
  let content = null;
30
38
  if (entries.length) {
31
- content = ((0, jsx_runtime_1.jsx)(FormLayout_1.default, { children: entries.map(({ ColumnId, AggFunc }) => ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: adaptable.api.columnApi.getFriendlyNameForColumnId(ColumnId), children: (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: (0, parameterizedAggregationHeader_1.getParameterizedAggregationDisplayName)(adaptable.api, AggFunc, ColumnId) }) }, ColumnId))) }));
39
+ content = ((0, jsx_runtime_1.jsx)(FormLayout_1.default, { children: entries.map(({ ColumnId, AggFunc }) => ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: adaptable.api.columnApi.getFriendlyNameForColumnId(ColumnId), children: (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: typeof AggFunc === 'object' ? AggFunc.type : AggFunc }) }, ColumnId))) }));
32
40
  }
33
41
  else {
34
42
  content = (0, jsx_runtime_1.jsx)(Tag_1.Tag, { children: "No Aggregations" });
@@ -38,7 +46,73 @@ const AggregationsSectionSummary = () => {
38
46
  exports.AggregationsSectionSummary = AggregationsSectionSummary;
39
47
  const ColumnRow = (props) => {
40
48
  const aggValue = props.layout?.TableAggregationColumns?.find((agg) => agg.ColumnId === props.column.columnId)?.AggFunc;
41
- return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", children: [props.column.friendlyName, (0, jsx_runtime_1.jsx)(ColumnGroupTag_1.ColumnGroupTag, { column: props.column }), (0, jsx_runtime_1.jsx)(ParameterizedAggFuncPicker_1.ParameterizedAggFuncPicker, { column: props.column, aggValue: aggValue, aggregationColumnsMap: props.aggregationColumnsMap, numberColumns: props.numberColumns, aggregationEntries: props.layout.TableAggregationColumns || [], onChangeEntries: props.onChangeAggFunction })] }));
49
+ const aggFunctionNames = (0, AggregationColumns_1.getDisplayAggFuncNames)(props.column);
50
+ const currentAggFnName = props.aggregationColumnsMap[props.column.columnId];
51
+ const updateAggFunc = (fnName) => {
52
+ let aggCols = [...(props.layout.TableAggregationColumns || [])];
53
+ const AggFuncValue = fnName === WEIGHTED_AVERAGE_AGG_FN_NAME
54
+ ? {
55
+ type: 'weightedAverage',
56
+ weightedColumnId: null,
57
+ }
58
+ : fnName;
59
+ let found = false;
60
+ aggCols = aggCols.map(({ ColumnId, AggFunc }) => {
61
+ if (ColumnId === props.column.columnId) {
62
+ found = true;
63
+ return {
64
+ ColumnId,
65
+ AggFunc: AggFuncValue,
66
+ };
67
+ }
68
+ return { ColumnId, AggFunc };
69
+ });
70
+ if (!found) {
71
+ aggCols.push({
72
+ ColumnId: props.column.columnId,
73
+ AggFunc: AggFuncValue,
74
+ });
75
+ }
76
+ props.onChangeAggFunction(aggCols);
77
+ };
78
+ const updateWeightedColumn = (weightedColumnId) => {
79
+ let aggCols = [...(props.layout.TableAggregationColumns || [])];
80
+ const AggFuncValue = {
81
+ type: 'weightedAverage',
82
+ weightedColumnId: weightedColumnId,
83
+ };
84
+ let found = false;
85
+ aggCols = aggCols.map(({ ColumnId, AggFunc }) => {
86
+ if (ColumnId === props.column.columnId) {
87
+ found = true;
88
+ return {
89
+ ColumnId,
90
+ AggFunc: AggFuncValue,
91
+ };
92
+ }
93
+ return { ColumnId, AggFunc };
94
+ });
95
+ if (!found) {
96
+ aggCols.push({
97
+ ColumnId: props.column.columnId,
98
+ AggFunc: AggFuncValue,
99
+ });
100
+ }
101
+ props.onChangeAggFunction(aggCols);
102
+ };
103
+ const weightColumnId = typeof aggValue === 'object' && aggValue.type === 'weightedAverage'
104
+ ? aggValue.weightedColumnId
105
+ : null;
106
+ const weightColumnOptions = props.numberColumns
107
+ .filter((col) => col.columnId !== props.column.columnId)
108
+ .map((col) => ({
109
+ label: col.friendlyName,
110
+ value: col.columnId,
111
+ }));
112
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { alignItems: "center", children: [props.column.friendlyName, (0, jsx_runtime_1.jsx)(ColumnGroupTag_1.ColumnGroupTag, { column: props.column }), aggValue && ((0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:min-w-[140px] twa:ml-2", value: currentAggFnName, items: aggFunctionNames.map((fnName) => ({
113
+ label: fnName,
114
+ value: fnName,
115
+ })), onValueChange: updateAggFunc })), currentAggFnName === WEIGHTED_AVERAGE_AGG_FN_NAME && ((0, jsx_runtime_1.jsxs)(Flex_1.Flex, { className: "twa:bg-primary twa:ml-3", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { children: "Weight" }), (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:min-w-[140px] twa:ml-2", placeholder: "Select Weight", value: weightColumnId, items: weightColumnOptions, onValueChange: updateWeightedColumn })] }))] }));
42
116
  };
43
117
  const AggregationsSection = (props) => {
44
118
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
@@ -48,6 +122,8 @@ const AggregationsSection = (props) => {
48
122
  const numberColumns = adaptable.api.columnApi.getNumericColumns();
49
123
  const allAggregatableColumnIds = allAggregableColumns.map((col) => col.columnId);
50
124
  (layout.TableAggregationColumns || []).forEach((agg) => {
125
+ // we need to also display the columns currently aggregated,
126
+ // even if they are not aggregatable
51
127
  if (!allAggregatableColumnIds.includes(agg.ColumnId)) {
52
128
  allAggregatableColumnIds.push(agg.ColumnId);
53
129
  }
@@ -82,29 +158,43 @@ const AggregationsSection = (props) => {
82
158
  acc[col.columnId] = col;
83
159
  return acc;
84
160
  }, {});
85
- return (0, parameterizedAggregationWizardHelpers_1.buildAggregationColumnsMap)(layout.TableAggregationColumns || [], allColumnsMap);
86
- }, [layout, allColumns]);
161
+ return (layout.TableAggregationColumns || []).reduce((acc, { ColumnId: colId, AggFunc }) => {
162
+ let fn = AggFunc;
163
+ let fnName = '';
164
+ if (typeof fn === 'boolean') {
165
+ fnName = allColumnsMap[colId].aggregationFunction;
166
+ }
167
+ if (typeof fn === 'object' && fn.type === 'weightedAverage') {
168
+ fnName = WEIGHTED_AVERAGE_AGG_FN_NAME;
169
+ }
170
+ else if (typeof fn === 'string') {
171
+ fnName = fn;
172
+ }
173
+ acc[colId] = fnName;
174
+ return acc;
175
+ }, {});
176
+ }, [layout]);
87
177
  const handleSuppressAggFuncInHeader = (checked) => {
88
178
  props.onChange({
89
179
  ...layout,
90
180
  SuppressAggFuncInHeader: checked,
91
181
  });
92
182
  };
93
- return ((0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { style: { height: '100%' }, children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tabs.Tab, { children: "Column Aggregations" }), (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs.Content, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Flex, { children: (0, jsx_runtime_1.jsxs)(FormLayout_1.default, { children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: 'Omit Aggregation from Header', children: (0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { checked: layout.SuppressAggFuncInHeader, onChange: handleSuppressAggFuncInHeader }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: 'Grand Total Row', children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-[180px]", items: [
94
- {
95
- label: 'Off',
96
- value: null,
97
- },
98
- ].concat(['top', 'bottom', 'pinnedTop', 'pinnedBottom'].map((position) => {
99
- return {
100
- label: StringExtensions_1.default.CamelCaseToHumanText(position),
101
- value: position,
102
- };
103
- })), placeholder: "Off", value: layout.GrandTotalRow, onValueChange: (value) => {
104
- props.onChange({
105
- ...layout,
106
- GrandTotalRow: value,
107
- });
108
- } }) })] }) }), (0, jsx_runtime_1.jsx)(ValueSelector_1.ValueSelector, { showFilterInput: true, filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => option.friendlyName ?? option.columnId, toListLabel: (column) => ((0, jsx_runtime_1.jsx)(ColumnRow, { onChangeAggFunction: handleAggregationChange, layout: layout, column: column, aggregationColumnsMap: aggregationColumnsMap, numberColumns: numberColumns })), options: sortedAggregableColumns, value: (layout.TableAggregationColumns || []).map((agg) => agg.ColumnId), allowReorder: () => true, onChange: handleColumnsSelectionChange })] })] }));
183
+ return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:h-full twa:min-h-0 twa:p-2 twa:gap-2 twa:overflow-hidden twa:grid twa:grid-cols-2", children: [(0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:h-full twa:overflow-hidden twa:flex twa:flex-col", children: [(0, jsx_runtime_1.jsxs)(Card_1.Card.Title, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Aggregation Columns" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Select a column and an aggregation function" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:flex-1 twa:min-h-0 twa:overflow-hidden twa:p-1", children: (0, jsx_runtime_1.jsx)(ValueSelector_1.ValueSelector, { style: { minHeight: 0 }, showFilterInput: true, filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => option.friendlyName ?? option.columnId, toListLabel: (column) => ((0, jsx_runtime_1.jsx)(ColumnRow, { onChangeAggFunction: handleAggregationChange, layout: layout, column: column, aggregationColumnsMap: aggregationColumnsMap, numberColumns: numberColumns })), options: sortedAggregableColumns, value: (layout.TableAggregationColumns || []).map((agg) => agg.ColumnId), allowReorder: () => true, onChange: handleColumnsSelectionChange }) })] }), (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:h-full twa:min-h-0 twa:overflow-y-auto twa:flex twa:flex-col twa:gap-2", children: [(0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, children: [(0, jsx_runtime_1.jsx)(Card_1.Card.Title, { children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Omit Aggregation from Header" }) }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { checked: layout.SuppressAggFuncInHeader, onChange: handleSuppressAggFuncInHeader, children: "Do not show aggregation function names in column headers" }) })] }), (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: "Grand Total Row" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Set position of the grand total row in the grid" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { className: "twa:p-1", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-[180px]", items: [
184
+ {
185
+ label: 'Off',
186
+ value: null,
187
+ },
188
+ ].concat(['top', 'bottom', 'pinnedTop', 'pinnedBottom'].map((position) => {
189
+ return {
190
+ label: StringExtensions_1.default.CamelCaseToHumanText(position),
191
+ value: position,
192
+ };
193
+ })), placeholder: "Off", value: layout.GrandTotalRow, onValueChange: (value) => {
194
+ props.onChange({
195
+ ...layout,
196
+ GrandTotalRow: value,
197
+ });
198
+ } }) })] })] })] }));
109
199
  };
110
200
  exports.AggregationsSection = AggregationsSection;