@adaptabletools/adaptable-cjs 20.0.0-canary.2 → 20.0.0-canary.20

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 (116) hide show
  1. package/base.css +1288 -898
  2. package/base.css.map +1 -1
  3. package/index.css +428 -898
  4. package/index.css.map +1 -1
  5. package/package.json +4 -4
  6. package/src/AdaptableInterfaces/IAdaptable.d.ts +2 -1
  7. package/src/AdaptableOptions/CellSummaryOptions.d.ts +1 -1
  8. package/src/AdaptableOptions/ContainerOptions.d.ts +0 -7
  9. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -1
  10. package/src/AdaptableOptions/DefaultAdaptableOptions.js +2 -2
  11. package/src/AdaptableOptions/EditOptions.d.ts +14 -3
  12. package/src/AdaptableOptions/ExportOptions.d.ts +11 -20
  13. package/src/AdaptableOptions/PredicateOptions.d.ts +4 -4
  14. package/src/AdaptableOptions/QuickSearchOptions.d.ts +2 -2
  15. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +7 -0
  16. package/src/Api/ExportApi.d.ts +1 -6
  17. package/src/Api/Fdc3Api.d.ts +5 -3
  18. package/src/Api/Implementation/AdaptableApiImpl.js +1 -0
  19. package/src/Api/Implementation/ColumnFilterApiImpl.js +3 -3
  20. package/src/Api/Implementation/ExportApiImpl.d.ts +1 -2
  21. package/src/Api/Implementation/ExportApiImpl.js +17 -10
  22. package/src/Api/Implementation/Fdc3ApiImpl.d.ts +3 -3
  23. package/src/Api/Implementation/Fdc3ApiImpl.js +4 -4
  24. package/src/Api/Implementation/LayoutHelpers.js +8 -27
  25. package/src/Api/Implementation/PredicateApiImpl.js +1 -1
  26. package/src/Api/Implementation/ScheduleApiImpl.js +1 -1
  27. package/src/Api/Implementation/StyledColumnApiImpl.js +1 -1
  28. package/src/Api/Implementation/ThemeApiImpl.js +3 -1
  29. package/src/Api/Internal/ActionColumnInternalApi.js +16 -19
  30. package/src/Api/Internal/AdaptableInternalApi.js +1 -1
  31. package/src/Api/Internal/ColumnFilterInternalApi.js +2 -2
  32. package/src/Api/Internal/ColumnInternalApi.js +1 -2
  33. package/src/Api/Internal/EventInternalApi.js +6 -1
  34. package/src/Api/Internal/ExportInternalApi.d.ts +10 -6
  35. package/src/Api/Internal/ExportInternalApi.js +105 -136
  36. package/src/Api/Internal/RowFormInternalApi.js +1 -1
  37. package/src/Api/ThemeApi.d.ts +2 -0
  38. package/src/PredefinedConfig/AlertState.d.ts +1 -1
  39. package/src/PredefinedConfig/Common/AdaptableColumnContext.d.ts +1 -1
  40. package/src/PredefinedConfig/Common/AdaptablePredicate.d.ts +1 -1
  41. package/src/PredefinedConfig/Common/AdaptablePredicate.js +32 -48
  42. package/src/PredefinedConfig/Common/ColumnFilter.d.ts +6 -2
  43. package/src/PredefinedConfig/ExportState.d.ts +10 -17
  44. package/src/PredefinedConfig/FlashingCellState.d.ts +1 -1
  45. package/src/PredefinedConfig/LayoutState.d.ts +17 -17
  46. package/src/PredefinedConfig/StyledColumnState.d.ts +1 -1
  47. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +4 -3
  48. package/src/Redux/ActionsReducers/LayoutRedux.js +3 -3
  49. package/src/Redux/Store/AdaptableStore.js +2 -2
  50. package/src/Strategy/ColumnFilterModule.js +4 -4
  51. package/src/Strategy/StyledColumnModule.js +6 -6
  52. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +5 -6
  53. package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +9 -10
  54. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +27 -27
  55. package/src/Utilities/Helpers/AdaptableHelper.d.ts +2 -0
  56. package/src/Utilities/Helpers/AdaptableHelper.js +12 -1
  57. package/src/Utilities/Helpers/DateHelper.js +3 -5
  58. package/src/Utilities/Helpers/FormatHelper.js +19 -6
  59. package/src/Utilities/ObjectFactory.js +1 -0
  60. package/src/Utilities/Services/Fdc3Service.d.ts +2 -2
  61. package/src/Utilities/Services/Fdc3Service.js +7 -2
  62. package/src/Utilities/Services/ThemeService.d.ts +1 -1
  63. package/src/Utilities/Services/ThemeService.js +5 -5
  64. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +41 -0
  65. package/src/View/ColumnInfo/ColumnInfo.js +0 -1
  66. package/src/View/Comments/CommentsEditor.js +5 -2
  67. package/src/View/Comments/CommentsPopup.js +5 -2
  68. package/src/View/Components/ColumnFilter/ColumnFilter.d.ts +1 -1
  69. package/src/View/Components/ColumnFilter/ColumnFilter.js +4 -2
  70. package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -1
  71. package/src/View/Components/ColumnFilter/LayoutColumnFilter.js +1 -1
  72. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.d.ts +1 -1
  73. package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +6 -2
  74. package/src/View/Components/ColumnFilter/utils.js +2 -2
  75. package/src/View/Components/FilterForm/ListBoxFilterForm.js +3 -3
  76. package/src/View/Dashboard/CustomToolbar.js +2 -2
  77. package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +4 -1
  78. package/src/View/Filter/FilterSummary.js +1 -1
  79. package/src/View/GridInfo/GridInfoPopup/AdaptableObjectsSummary.js +6 -2
  80. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +7 -2
  81. package/src/View/Note/NotePopup.js +5 -2
  82. package/src/View/QuickSearch/QuickSearchPopup.js +2 -2
  83. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.d.ts +2 -0
  84. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +18 -2
  85. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +4 -0
  86. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +2 -1
  87. package/src/View/StatusBar/AdaptableStatusBar.js +7 -5
  88. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.d.ts +3 -4
  89. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +348 -191
  90. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +2 -2
  91. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  92. package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +4 -4
  93. package/src/agGrid/AdaptableAgGrid.d.ts +4 -8
  94. package/src/agGrid/AdaptableAgGrid.js +71 -117
  95. package/src/agGrid/AgGridAdapter.d.ts +1 -1
  96. package/src/agGrid/AgGridAdapter.js +5 -6
  97. package/src/agGrid/AgGridColumnAdapter.js +5 -10
  98. package/src/agGrid/AgGridExportAdapter.d.ts +24 -1
  99. package/src/agGrid/AgGridExportAdapter.js +24 -25
  100. package/src/agGrid/AgGridThemeAdapter.d.ts +19 -0
  101. package/src/agGrid/AgGridThemeAdapter.js +126 -0
  102. package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -1
  103. package/src/agGrid/editors/AdaptableDateEditor/InternalAdaptableDateEditor.js +2 -2
  104. package/src/components/ColorPicker/ColorPicker.js +2 -2
  105. package/src/components/Datepicker/DatepickerContext.d.ts +1 -0
  106. package/src/components/Datepicker/index.d.ts +1 -0
  107. package/src/components/OverlayTrigger/useAgGridClassName.js +1 -1
  108. package/src/components/Select/Select.d.ts +1 -0
  109. package/src/components/Select/Select.js +30 -7
  110. package/src/env.js +2 -2
  111. package/src/metamodel/adaptable.metamodel.d.ts +23 -15
  112. package/src/metamodel/adaptable.metamodel.js +1 -1
  113. package/src/migration/VersionUpgrade20.d.ts +3 -0
  114. package/src/migration/VersionUpgrade20.js +141 -12
  115. package/src/types.d.ts +3 -3
  116. package/tsconfig.cjs.tsbuildinfo +1 -1
@@ -3,18 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AdaptableStatusBar = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
+ const react_1 = require("react");
6
7
  const react_redux_1 = require("react-redux");
7
8
  const rebass_1 = require("rebass");
8
9
  const StatusBarRedux_1 = require("../../Redux/ActionsReducers/StatusBarRedux");
9
10
  const AdaptableContext_1 = require("../AdaptableContext");
10
11
  const StatusBarPanel_1 = require("./StatusBarPanel");
12
+ const useRerender_1 = require("../../components/utils/useRerender");
11
13
  const AdaptableStatusBar = (props) => {
12
- /**
13
- * All state is selected so the Status Bar is re-rendered for all adaptable state changes
14
- */
15
- const state = (0, react_redux_1.useSelector)((state) => state);
16
- const statusPanels = (0, StatusBarRedux_1.getStatusPanelsSelector)(state);
17
14
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
15
+ const rerender = (0, useRerender_1.useRerender)();
16
+ (0, react_1.useEffect)(() => {
17
+ return adaptable.api.eventApi.on('AdaptableStateChanged', rerender);
18
+ }, [adaptable]);
19
+ const statusPanels = (0, react_redux_1.useSelector)(StatusBarRedux_1.getStatusPanelsSelector);
18
20
  const dispatch = (0, react_redux_1.useDispatch)();
19
21
  const statusSubPanels = statusPanels.find((statusPanel) => statusPanel.Key === props.context.Key);
20
22
  const allMenuItems = (0, react_redux_1.useSelector)((state) => state?.Internal?.SettingsPanelModuleEntries);
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
- import { StyledColumn } from '../../../types';
3
- export interface StyledColumnSparklineSettingsSectionProps {
2
+ import type { StyledColumn } from '../../../types';
3
+ export declare const StyledColumnSparklineSettingsSection: React.FC<{
4
4
  onChange: (data: StyledColumn) => void;
5
- }
6
- export declare const StyledColumnSparklineSettingsSection: React.FunctionComponent<StyledColumnSparklineSettingsSectionProps>;
5
+ }>;
@@ -4,216 +4,373 @@ exports.StyledColumnSparklineSettingsSection = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const React = tslib_1.__importStar(require("react"));
6
6
  const rebass_1 = require("rebass");
7
- const CheckBox_1 = require("../../../components/CheckBox");
8
- const ColorPicker_1 = require("../../../components/ColorPicker");
9
- const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
10
- const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
11
7
  const Select_1 = require("../../../components/Select");
12
8
  const Tabs_1 = require("../../../components/Tabs");
9
+ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
10
+ const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
13
11
  const Tag_1 = require("../../../components/Tag");
14
- const ObjectExtensions_1 = require("../../../Utilities/Extensions/ObjectExtensions");
15
12
  const AdaptableInput_1 = tslib_1.__importDefault(require("../../Components/AdaptableInput"));
16
- const UIHelper_1 = require("../../UIHelper");
17
- const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
18
- const CommonProperties = (props) => {
19
- const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
20
- const axisTypeOptions = React.useMemo(() => {
21
- return [
22
- {
23
- label: 'Number',
24
- value: 'number',
25
- },
26
- {
27
- label: 'Category',
28
- value: 'category',
29
- },
30
- {
31
- label: 'Time',
32
- value: 'time',
33
- },
34
- ];
35
- }, [data]);
36
- return (React.createElement(Tabs_1.Tabs, { mb: 2 },
37
- React.createElement(Tabs_1.Tabs.Tab, null, "Padding"),
38
- React.createElement(Tabs_1.Tabs.Tab, null, "Axis"),
39
- React.createElement(Tabs_1.Tabs.Tab, null, "Highlight Style"),
40
- React.createElement(Tabs_1.Tabs.Content, null,
41
- React.createElement(FormLayout_1.default, null,
42
- React.createElement(FormLayout_1.FormRow, { label: "Top" },
43
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['padding', 'top'], event.target.value ?? 0), type: "number", value: data.SparkLineStyle.options?.padding?.top })),
44
- React.createElement(FormLayout_1.FormRow, { label: "Bottom" },
45
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['padding', 'bottom'], event.target.value ?? 0), type: "number", value: data.SparkLineStyle.options?.padding?.bottom })),
46
- React.createElement(FormLayout_1.FormRow, { label: "Left" },
47
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['padding', 'left'], event.target.value ?? 0), type: "number", value: data.SparkLineStyle.options?.padding?.left })),
48
- React.createElement(FormLayout_1.FormRow, { label: "Right" },
49
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['padding', 'right'], event.target.value ?? 0), type: "number", value: data.SparkLineStyle.options?.padding?.right })))),
50
- React.createElement(Tabs_1.Tabs.Content, null,
51
- React.createElement(FormLayout_1.default, null,
52
- React.createElement(FormLayout_1.FormRow, { label: "Axis Type" },
53
- React.createElement(rebass_1.Box, { maxWidth: 180 },
54
- React.createElement(Select_1.Select, { value: data?.SparkLineStyle?.options?.axis?.type, options: axisTypeOptions, onChange: (value) => props.onOptionChange(['axis', 'type'], value), placeholder: "Select Axis Type" }))),
55
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Color" },
56
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: data.SparkLineStyle?.options?.axis?.stroke ?? '#fff', onChange: (color) => props.onOptionChange(['axis', 'stroke'], color) })),
57
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Width" },
58
- React.createElement(AdaptableInput_1.default, { type: "number", value: data.SparkLineStyle?.options?.axis?.strokeWidth ?? 0, onChange: (event) => props.onOptionChange(['axis', 'strokeWidth'], parseFloat(event.target.value)) })))),
59
- React.createElement(Tabs_1.Tabs.Content, null,
60
- React.createElement(FormLayout_1.default, null,
61
- React.createElement(FormLayout_1.FormRow, { label: "Fill" },
62
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: data.SparkLineStyle?.options?.highlightStyle?.item?.fill ?? UIHelper_1.YELLOW, onChange: (color) => props.onOptionChange(['highlightStyle', 'item', 'fill'], color) })),
63
- React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
64
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: data.SparkLineStyle?.options?.highlightStyle?.item?.stroke ?? UIHelper_1.LIGHT_GRAY, onChange: (color) => props.onOptionChange(['highlightStyle', 'item', 'stroke'], color) })),
65
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Width" },
66
- React.createElement(AdaptableInput_1.default, { type: "number", value: data.SparkLineStyle?.options?.highlightStyle?.item?.strokeWidth, onChange: (event) => props.onOptionChange(['highlightStyle', 'item', 'strokeWidth'], parseFloat(event.target.value)) }))))));
67
- };
68
- const SparklineMarkerProperties = (props) => {
69
- const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
70
- const sparklineOptions = data.SparkLineStyle.options;
71
- return (React.createElement(FormLayout_1.default, null,
72
- React.createElement(FormLayout_1.FormRow, { label: "Enabled" },
73
- React.createElement(CheckBox_1.CheckBox, { checked: sparklineOptions?.marker?.enabled ?? true, onChange: (checked) => props.onOptionChange(['marker', 'enabled'], checked) })),
74
- React.createElement(FormLayout_1.FormRow, { label: "Size" },
75
- React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions?.marker?.size ?? 0, onChange: (event) => props.onOptionChange(['marker', 'size'], parseFloat(event.target.value)) })),
76
- React.createElement(FormLayout_1.FormRow, { label: "Fill" },
77
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.marker?.fill ?? UIHelper_1.LIGHT_BLUE, onChange: (color) => props.onOptionChange(['marker', 'fill'], color) })),
78
- React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
79
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.marker?.stroke ?? UIHelper_1.LIGHT_BLUE, onChange: (color) => props.onOptionChange(['marker', 'stroke'], color) })),
80
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Width" },
81
- React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions?.marker?.strokeWidth ?? 1, onChange: (event) => props.onOptionChange(['marker', 'strokeWidth'], parseFloat(event.target.value)) }))));
82
- };
83
- const SparklineLineProperties = (props) => {
84
- const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
85
- const sparklineOptions = data.SparkLineStyle.options;
86
- return (React.createElement(FormLayout_1.default, null,
87
- React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
88
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.stroke ?? UIHelper_1.LIGHT_BLUE, onChange: (color) => props.onOptionChange(['stroke'], color) })),
89
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Width" },
90
- React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions?.strokeWidth, onChange: (event) => props.onOptionChange(['strokeWidth'], parseFloat(event.target.value)) }))));
91
- };
92
- const TypeAreaProperties = (props) => {
93
- const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
94
- const sparklineOptions = data.SparkLineStyle.options;
95
- return (React.createElement(Tabs_1.Tabs, { mb: 2 },
96
- React.createElement(Tabs_1.Tabs.Tab, null, "Stroke"),
97
- React.createElement(Tabs_1.Tabs.Tab, null, "Line"),
98
- React.createElement(Tabs_1.Tabs.Tab, null, "Marker"),
99
- React.createElement(Tabs_1.Tabs.Content, null,
100
- React.createElement(FormLayout_1.default, null,
101
- React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
102
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.fill ?? UIHelper_1.LIGHT_BLUE, onChange: (color) => props.onOptionChange(['fill'], color) })))),
103
- React.createElement(Tabs_1.Tabs.Content, null,
104
- React.createElement(SparklineLineProperties, { onOptionChange: props.onOptionChange })),
105
- React.createElement(Tabs_1.Tabs.Content, null,
106
- React.createElement(SparklineMarkerProperties, { onOptionChange: props.onOptionChange }))));
107
- };
108
- const TypeLineProperties = (props) => {
109
- return (React.createElement(Tabs_1.Tabs, { mb: 2 },
110
- React.createElement(Tabs_1.Tabs.Tab, null, "Line"),
111
- React.createElement(Tabs_1.Tabs.Tab, null, "Marker"),
112
- React.createElement(Tabs_1.Tabs.Content, null,
113
- React.createElement(SparklineLineProperties, { onOptionChange: props.onOptionChange })),
114
- React.createElement(Tabs_1.Tabs.Content, null,
115
- React.createElement(SparklineMarkerProperties, { onOptionChange: props.onOptionChange }))));
13
+ const ColorPicker_1 = require("../../../components/ColorPicker");
14
+ const CheckBox_1 = require("../../../components/CheckBox");
15
+ const SparklineTypes = {
16
+ LINE: 'line',
17
+ AREA: 'area',
18
+ BAR_VERTICAL: 'bar_vertical',
19
+ BAR_HORIZONTAL: 'bar_horizontal',
116
20
  };
117
- const TypeColumnBarProperties = (props) => {
21
+ const sparklineTypeOptions = [
22
+ { label: 'Line', value: SparklineTypes.LINE },
23
+ { label: 'Area', value: SparklineTypes.AREA },
24
+ { label: 'Column', value: SparklineTypes.BAR_VERTICAL },
25
+ { label: 'Bar', value: SparklineTypes.BAR_HORIZONTAL },
26
+ ];
27
+ const StyledColumnSparklineSettingsSection = ({ onChange }) => {
118
28
  const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
119
- const sparklineOptions = data.SparkLineStyle.options;
120
- return (React.createElement(Tabs_1.Tabs, { mb: 2 },
121
- React.createElement(Tabs_1.Tabs.Tab, null, "General"),
122
- React.createElement(Tabs_1.Tabs.Content, null,
123
- React.createElement(FormLayout_1.default, null,
124
- React.createElement(FormLayout_1.FormRow, { label: "Fill" },
125
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.fill ?? UIHelper_1.LIGHT_BLUE, onChange: (color) => props.onOptionChange(['fill'], color) })),
126
- React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
127
- React.createElement(ColorPicker_1.ColorPicker, { api: api, value: sparklineOptions?.stroke ?? UIHelper_1.LIGHT_GRAY, onChange: (color) => props.onOptionChange(['stroke'], color) })),
128
- React.createElement(FormLayout_1.FormRow, { label: "Stroke Width" },
129
- React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions?.strokeWidth ?? 1, onChange: (event) => props.onOptionChange(['strokeWidth'], event.target.value) }))))));
29
+ const sparklineOptions = data.SparklineStyle?.options ?? {
30
+ type: SparklineTypes.LINE,
31
+ };
32
+ if (!sparklineOptions.type) {
33
+ sparklineOptions.type = SparklineTypes.LINE;
34
+ }
35
+ const handleOptionsChange = (newOptions) => {
36
+ const updatedStyledColumn = {
37
+ ...data,
38
+ SparklineStyle: { ...data.SparklineStyle, options: newOptions },
39
+ };
40
+ onChange(updatedStyledColumn);
41
+ };
42
+ const currentType = sparklineOptions.type ?? 'line';
43
+ const currentDirection = sparklineOptions.direction;
44
+ const sparklineType = (currentType === 'bar' ? `bar_${currentDirection ?? 'vertical'}` : currentType);
45
+ const handleTypeChange = (value) => {
46
+ const [type, direction] = value.split('_');
47
+ const newOptions = { ...sparklineOptions, type };
48
+ if (direction) {
49
+ newOptions.direction = direction;
50
+ }
51
+ else {
52
+ delete newOptions.direction;
53
+ }
54
+ handleOptionsChange(newOptions);
55
+ };
56
+ const isObjectNumberArray = api.columnApi.getColumnWithColumnId(data.ColumnId)?.dataType === 'objectArray';
57
+ return (React.createElement(React.Fragment, null,
58
+ React.createElement(Tabs_1.Tabs, { mb: 2 },
59
+ React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
60
+ React.createElement(Tabs_1.Tabs.Content, null,
61
+ React.createElement(FormLayout_1.default, null,
62
+ React.createElement(FormLayout_1.FormRow, { label: "Sparkline Type" },
63
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
64
+ React.createElement(Select_1.Select, { options: sparklineTypeOptions, value: sparklineType, onChange: handleTypeChange, placeholder: "Select Sparkline Type" }))),
65
+ isObjectNumberArray && (React.createElement(SparklineObjectArrayProperties, { options: sparklineOptions, onChange: handleOptionsChange })),
66
+ React.createElement(FormLayout_1.FormRow, { label: "Min Value" },
67
+ React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions.min ?? '', onChange: (e) => handleOptionsChange({
68
+ ...sparklineOptions,
69
+ min: e.target.value === '' ? undefined : Number(e.target.value),
70
+ }), placeholder: 'Auto', title: "User override for the automatically determined min value (based on series data)" })),
71
+ React.createElement(FormLayout_1.FormRow, { label: "Max Value" },
72
+ React.createElement(AdaptableInput_1.default, { type: "number", value: sparklineOptions.max ?? '', onChange: (e) => handleOptionsChange({
73
+ ...sparklineOptions,
74
+ max: e.target.value === '' ? undefined : Number(e.target.value),
75
+ }), placeholder: 'Auto', title: "User override for the automatically determined max value (based on series data)" }))))),
76
+ React.createElement(Tabs_1.Tabs, { mb: 2 },
77
+ React.createElement(Tabs_1.Tabs.Tab, null, "Theming"),
78
+ React.createElement(Tabs_1.Tabs.Tab, null, "Axis"),
79
+ React.createElement(Tabs_1.Tabs.Tab, { hidden: sparklineOptions.type === 'bar' }, "Marker"),
80
+ React.createElement(Tabs_1.Tabs.Tab, null, "Tooltip"),
81
+ React.createElement(Tabs_1.Tabs.Tab, null, "Highlight Style"),
82
+ React.createElement(Tabs_1.Tabs.Content, null,
83
+ React.createElement(SparklineThemingOptions, { options: sparklineOptions, onChange: handleOptionsChange })),
84
+ React.createElement(Tabs_1.Tabs.Content, null,
85
+ React.createElement(SparklineAxisOptions, { options: sparklineOptions, onChange: handleOptionsChange })),
86
+ React.createElement(Tabs_1.Tabs.Content, null,
87
+ React.createElement(SparklineMarkerOptions, { options: sparklineOptions, onChange: handleOptionsChange })),
88
+ React.createElement(Tabs_1.Tabs.Content, null,
89
+ React.createElement(SparklineTooltipOptions, { options: sparklineOptions, onChange: handleOptionsChange })),
90
+ React.createElement(Tabs_1.Tabs.Content, null,
91
+ React.createElement(SparklineHighlightOptions, { options: sparklineOptions, onChange: handleOptionsChange })))));
130
92
  };
131
- const SparklineObjectNumberArrayProperties = (props) => {
93
+ exports.StyledColumnSparklineSettingsSection = StyledColumnSparklineSettingsSection;
94
+ const SparklineObjectArrayProperties = ({ options, onChange, }) => {
132
95
  const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
133
- const sparkLineOptions = data.SparkLineStyle.options;
134
- const [sparklineDataItem, setSparklineDataItem] = React.useState('');
96
+ const [previewData, setPreviewData] = React.useState('');
135
97
  React.useEffect(() => {
98
+ const column = api.columnApi.getColumnWithColumnId(data.ColumnId);
99
+ if (!column) {
100
+ return;
101
+ }
136
102
  try {
137
- let cellData = null;
138
- const MAX_ROWS_TO_CHECK = 20;
139
- let currentRow = 0;
140
- while (!cellData || currentRow < MAX_ROWS_TO_CHECK) {
141
- const rowWithData = api.gridApi.getRowNodeForIndex(currentRow)?.data;
142
- const column = api.columnApi.getColumnWithColumnId(data.ColumnId);
143
- if (rowWithData?.[column?.field]?.[0]) {
144
- cellData = rowWithData?.[column?.field]?.[0];
103
+ for (let row = 0; row < 20; row++) {
104
+ const rowNode = api.gridApi.getRowNodeForIndex(row);
105
+ const cellData = rowNode?.data?.[column.field]?.[0];
106
+ if (cellData) {
107
+ const preview = JSON.stringify(cellData, null, 2).replace(/[{}",]/g, '');
108
+ setPreviewData(preview);
145
109
  break;
146
110
  }
147
- currentRow++;
148
- }
149
- if (cellData) {
150
- const str = JSON.stringify(cellData, null, 2).replace(/[{}",]/g, '');
151
- setSparklineDataItem(str);
152
111
  }
153
112
  }
154
- catch (e) {
155
- api.logError('Error parsing sparkline data', e);
113
+ catch (error) {
114
+ api.logError('Error parsing sparkline data', error);
156
115
  }
157
- }, [data]);
116
+ }, [api, data.ColumnId]);
158
117
  return (React.createElement(React.Fragment, null,
159
118
  React.createElement(FormLayout_1.FormRow, { label: "X Key" },
160
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['xKey'], event.target.value), value: sparkLineOptions?.xKey ?? 'x' })),
119
+ React.createElement(AdaptableInput_1.default, { value: options.xKey ?? 'x', onChange: (e) => onChange({ ...options, xKey: e.target.value }) })),
161
120
  React.createElement(FormLayout_1.FormRow, { label: "Y Key" },
162
- React.createElement(Input_1.default, { onChange: (event) => props.onOptionChange(['yKey'], event.target.value), value: sparkLineOptions?.yKey ?? 'y' })),
163
- sparklineDataItem && (React.createElement(FormLayout_1.FormRow, { label: "Preview" },
164
- React.createElement(Tag_1.Tag, null, sparklineDataItem)))));
121
+ React.createElement(AdaptableInput_1.default, { value: options.yKey ?? 'y', onChange: (e) => onChange({ ...options, yKey: e.target.value }) })),
122
+ previewData && (React.createElement(FormLayout_1.FormRow, { label: "Preview" },
123
+ React.createElement(Tag_1.Tag, null, previewData)))));
165
124
  };
166
- const StyledColumnSparklineSettingsSection = (props) => {
167
- const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
168
- const sparklineTypeOptions = React.useMemo(() => [
169
- { label: 'Line', value: 'line' },
170
- { label: 'Area', value: 'area' },
171
- { label: 'Column', value: 'column' },
172
- { label: 'Bar', value: 'bar' },
173
- ], [data]);
174
- const handleOptionChange = React.useCallback((path, value) => {
175
- const newOptions = (0, ObjectExtensions_1.setInPath)(data.SparkLineStyle.options ?? {}, path, value);
176
- props.onChange({
177
- ...data,
178
- SparkLineStyle: {
179
- ...data.SparkLineStyle,
180
- options: newOptions,
125
+ const SparklineThemingOptions = ({ options, onChange, }) => {
126
+ const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
127
+ const sparklineOptions = options;
128
+ const handleChange = (key, value) => {
129
+ onChange({ ...options, [key]: value });
130
+ };
131
+ const handlePaddingChange = (key, value) => {
132
+ const currentPadding = sparklineOptions.padding || {};
133
+ handleChange('padding', { ...currentPadding, [key]: value });
134
+ };
135
+ const themes = [
136
+ { value: 'ag-default', label: 'Default' },
137
+ { value: 'ag-default-dark', label: 'Default Dark' },
138
+ { value: 'ag-sheets', label: 'Sheets' },
139
+ { value: 'ag-sheets-dark', label: 'Sheets Dark' },
140
+ { value: 'ag-polychroma', label: 'Polychroma' },
141
+ { value: 'ag-polychroma-dark', label: 'Polychroma Dark' },
142
+ { value: 'ag-vivid', label: 'Vivid' },
143
+ { value: 'ag-vivid-dark', label: 'Vivid Dark' },
144
+ { value: 'ag-material', label: 'Material' },
145
+ { value: 'ag-material-dark', label: 'Material Dark' },
146
+ { value: 'ag-financial', label: 'Financial' },
147
+ { value: 'ag-financial-dark', label: 'Financial Dark' },
148
+ ];
149
+ return (React.createElement(FormLayout_1.default, null,
150
+ sparklineOptions.type !== 'line' && (React.createElement(FormLayout_1.FormRow, { label: "Fill" },
151
+ React.createElement(ColorPicker_1.ColorPicker, { title: "The colour for filling shapes", api: api, value: sparklineOptions.fill, onChange: (color) => handleChange('fill', color) }))),
152
+ React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
153
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
154
+ React.createElement(ColorPicker_1.ColorPicker, { title: "The colour for the stroke", api: api, value: sparklineOptions.stroke, onChange: (color) => handleChange('stroke', color) }),
155
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Width"),
156
+ React.createElement(AdaptableInput_1.default, { title: "The width of the stroke in pixels", type: "number", style: { width: '70px' }, min: 0, value: sparklineOptions.strokeWidth ?? '', onChange: (e) => handleChange('strokeWidth', Number(e.target.value)) }))),
157
+ React.createElement(FormLayout_1.FormRow, { label: "Padding" },
158
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
159
+ React.createElement(rebass_1.Box, { mr: 1 }, "Top"),
160
+ React.createElement(AdaptableInput_1.default, { type: "number", min: 0, value: sparklineOptions.padding?.top ?? '', onChange: (e) => handlePaddingChange('top', Number(e.target.value)), style: { width: '70px' }, title: "The number of pixels of padding at the top of the chart area" }),
161
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Right"),
162
+ React.createElement(AdaptableInput_1.default, { type: "number", min: 0, value: sparklineOptions.padding?.right ?? '', onChange: (e) => handlePaddingChange('right', Number(e.target.value)), style: { width: '70px' }, title: "The number of pixels of padding at the right of the chart area" }),
163
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Bottom"),
164
+ React.createElement(AdaptableInput_1.default, { type: "number", min: 0, value: sparklineOptions.padding?.bottom ?? '', onChange: (e) => handlePaddingChange('bottom', Number(e.target.value)), style: { width: '70px' }, title: "The number of pixels of padding at the bottom of the chart area" }),
165
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Left"),
166
+ React.createElement(AdaptableInput_1.default, { type: "number", min: 0, value: sparklineOptions.padding?.left ?? '', onChange: (e) => handlePaddingChange('left', Number(e.target.value)), style: { width: '70px' }, title: "The number of pixels of padding at the left of the chart area" }))),
167
+ React.createElement(FormLayout_1.FormRow, { label: "Line Dash" },
168
+ React.createElement(AdaptableInput_1.default, { title: "Length of dashes and gaps in pixels (comma-separated values, e.g. '3,6,9')", value: sparklineOptions.lineDash?.join(',') ?? '', onChange: (e) => {
169
+ const value = e.target.value;
170
+ const dashArray = value
171
+ ? value
172
+ .split(',')
173
+ .map(Number)
174
+ .filter((n) => !isNaN(n))
175
+ : [];
176
+ handleChange('lineDash', dashArray);
177
+ } })),
178
+ React.createElement(FormLayout_1.FormRow, { label: "Line Dash Offset" },
179
+ React.createElement(AdaptableInput_1.default, { title: "The offset of the line dash pattern in pixels", type: "number", min: 0, value: sparklineOptions.lineDashOffset ?? '', onChange: (e) => handleChange('lineDashOffset', Number(e.target.value)) })),
180
+ React.createElement(FormLayout_1.FormRow, { label: "Background" },
181
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
182
+ React.createElement(CheckBox_1.CheckBox, { checked: sparklineOptions.background?.visible ?? false, onChange: (visible) => handleChange('background', {
183
+ ...sparklineOptions.background,
184
+ visible,
185
+ }) }),
186
+ React.createElement(rebass_1.Box, { ml: 2 },
187
+ React.createElement(ColorPicker_1.ColorPicker, { disabled: !sparklineOptions.background?.visible, title: "The colour of the chart background", api: api, value: sparklineOptions.background?.fill, onChange: (fill) => handleChange('background', {
188
+ ...sparklineOptions.background,
189
+ fill,
190
+ }) })))),
191
+ typeof sparklineOptions.theme !== 'object' && (React.createElement(FormLayout_1.FormRow, { label: "Theme" },
192
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
193
+ React.createElement(Select_1.Select, { value: sparklineOptions.theme ?? 'ag-default', onChange: (themeName) => handleChange('theme', themeName), options: themes }))))));
194
+ };
195
+ const SparklineAxisOptions = ({ options, onChange, }) => {
196
+ const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
197
+ const sparklineOptions = options ?? {};
198
+ if (!sparklineOptions.axis?.type) {
199
+ sparklineOptions.axis = sparklineOptions.axis ?? { type: 'category' };
200
+ sparklineOptions.axis.type = 'category';
201
+ }
202
+ const handleChange = (value) => {
203
+ onChange({
204
+ ...options,
205
+ axis: {
206
+ ...options.axis,
207
+ ...value,
181
208
  },
182
209
  });
183
- }, [data]);
184
- const isObjectNumberArray = api.columnApi.getColumnWithColumnId(data.ColumnId)?.dataType === 'objectArray';
185
- return (React.createElement(React.Fragment, null,
186
- React.createElement(Tabs_1.Tabs, { mb: 2 },
187
- React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
188
- React.createElement(Tabs_1.Tabs.Content, null,
189
- React.createElement(FormLayout_1.default, null,
190
- React.createElement(FormLayout_1.FormRow, { label: "Sparkline Type" },
191
- React.createElement(rebass_1.Box, { maxWidth: 160 },
192
- React.createElement(Select_1.Select, { options: sparklineTypeOptions, value: data.SparkLineStyle.options?.type, onChange: (value) => {
193
- if (value === 'column') {
194
- handleOptionChange(['type'], 'bar');
195
- handleOptionChange(['direction'], 'vertical');
196
- }
197
- else if (value === 'bar') {
198
- handleOptionChange(['type'], 'bar');
199
- handleOptionChange(['direction'], 'horizontal');
200
- }
201
- else {
202
- handleOptionChange(['type'], value);
203
- }
204
- }, placeholder: "Select Sparkline Type" }))),
205
- isObjectNumberArray && (React.createElement(SparklineObjectNumberArrayProperties, { onOptionChange: handleOptionChange }))))),
206
- React.createElement(CommonProperties, { onOptionChange: handleOptionChange }),
207
- (() => {
208
- switch (data.SparkLineStyle.options?.type) {
209
- case 'line':
210
- return React.createElement(TypeLineProperties, { onOptionChange: handleOptionChange });
211
- case 'area':
212
- return React.createElement(TypeAreaProperties, { onOptionChange: handleOptionChange });
213
- case 'bar':
214
- // It is the same as column. If they diverge, we can split them out.
215
- return React.createElement(TypeColumnBarProperties, { onOptionChange: handleOptionChange });
216
- }
217
- })()));
210
+ };
211
+ const axisTypes = [
212
+ { value: 'category', label: 'Category' },
213
+ { value: 'number', label: 'Number' },
214
+ { value: 'time', label: 'Time' },
215
+ ];
216
+ const isAxisEnabled = sparklineOptions.axis?.visible ?? false;
217
+ return (React.createElement(FormLayout_1.default, null,
218
+ React.createElement(FormLayout_1.FormRow, { label: "Show Axis" },
219
+ React.createElement(CheckBox_1.CheckBox, { checked: isAxisEnabled, onChange: (visible) => handleChange({ visible }) })),
220
+ React.createElement(FormLayout_1.FormRow, { label: "Axis Type" },
221
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
222
+ React.createElement(Select_1.Select, { disabled: !isAxisEnabled, value: sparklineOptions.axis.type, onChange: (type) => handleChange({ type }), options: axisTypes }))),
223
+ React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
224
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
225
+ React.createElement(ColorPicker_1.ColorPicker, { disabled: !isAxisEnabled, title: "The colour of the axis line", api: api, value: sparklineOptions.axis?.stroke, onChange: (stroke) => handleChange({ stroke }) }),
226
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Width"),
227
+ React.createElement(AdaptableInput_1.default, { disabled: !isAxisEnabled, style: { width: '70px' }, title: "The width in pixels of the axis line", type: "number", min: 0, value: sparklineOptions.axis?.strokeWidth ?? '', onChange: (e) => handleChange({ strokeWidth: Number(e.target.value) }) }))),
228
+ React.createElement(FormLayout_1.FormRow, { label: "Reverse Scale" },
229
+ React.createElement(CheckBox_1.CheckBox, { disabled: !isAxisEnabled, checked: sparklineOptions.axis?.reverse, onChange: (reverse) => handleChange({ reverse }) })),
230
+ sparklineOptions.axis.type === 'category' && (React.createElement(React.Fragment, null,
231
+ React.createElement(FormLayout_1.FormRow, { label: "Padding" },
232
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
233
+ React.createElement(rebass_1.Box, { mr: 1 }, "Inner"),
234
+ React.createElement(AdaptableInput_1.default, { disabled: !isAxisEnabled, title: "The size of the gap between categories (0-1)", type: "number", min: 0, max: 1, step: 0.1, value: sparklineOptions.axis?.paddingInner ?? '', onChange: (e) => handleChange({ paddingInner: Number(e.target.value) }) }),
235
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Outer"),
236
+ React.createElement(AdaptableInput_1.default, { disabled: !isAxisEnabled, title: "The padding on the outside of first and last categories (0-1)", type: "number", min: 0, max: 1, step: 0.1, value: sparklineOptions.axis?.paddingOuter ?? '', onChange: (e) => handleChange({ paddingOuter: Number(e.target.value) }) })))))));
237
+ };
238
+ const SparklineTooltipOptions = ({ options, onChange, }) => {
239
+ const sparklineOptions = options;
240
+ const handleChange = (key, value) => {
241
+ onChange({ ...options, [key]: value });
242
+ };
243
+ const isTooltipEnabled = sparklineOptions.tooltip?.enabled;
244
+ const positionTypes = [
245
+ { value: 'pointer', label: 'Pointer' },
246
+ { value: 'node', label: 'Node' },
247
+ { value: 'top', label: 'Top' },
248
+ { value: 'right', label: 'Right' },
249
+ { value: 'bottom', label: 'Bottom' },
250
+ { value: 'left', label: 'Left' },
251
+ { value: 'top-left', label: 'Top Left' },
252
+ { value: 'top-right', label: 'Top Right' },
253
+ { value: 'bottom-right', label: 'Bottom Right' },
254
+ { value: 'bottom-left', label: 'Bottom Left' },
255
+ ];
256
+ const interactionRanges = [
257
+ { value: 'exact', label: 'Exact' },
258
+ { value: 'nearest', label: 'Nearest' },
259
+ ];
260
+ return (React.createElement(FormLayout_1.default, null,
261
+ React.createElement(FormLayout_1.FormRow, { label: "Enabled" },
262
+ React.createElement(CheckBox_1.CheckBox, { checked: sparklineOptions.tooltip?.enabled, onChange: (enabled) => handleChange('tooltip', { ...sparklineOptions.tooltip, enabled }) })),
263
+ React.createElement(FormLayout_1.FormRow, { label: "Show Arrow" },
264
+ React.createElement(CheckBox_1.CheckBox, { disabled: !isTooltipEnabled, checked: sparklineOptions.tooltip?.showArrow, onChange: (showArrow) => handleChange('tooltip', { ...sparklineOptions.tooltip, showArrow }) })),
265
+ React.createElement(FormLayout_1.FormRow, { label: "Interaction Enabled" },
266
+ React.createElement(CheckBox_1.CheckBox, { disabled: !isTooltipEnabled, checked: sparklineOptions.tooltip?.interaction?.enabled, onChange: (enabled) => handleChange('tooltip', {
267
+ ...sparklineOptions.tooltip,
268
+ interaction: { enabled },
269
+ }) })),
270
+ React.createElement(FormLayout_1.FormRow, { label: "Range" },
271
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
272
+ React.createElement(Select_1.Select, { disabled: !isTooltipEnabled, value: sparklineOptions.tooltip?.range ?? 'nearest', onChange: (range) => handleChange('tooltip', { ...sparklineOptions.tooltip, range }), options: interactionRanges }))),
273
+ React.createElement(FormLayout_1.FormRow, { label: "Position Type" },
274
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
275
+ React.createElement(Select_1.Select, { disabled: !isTooltipEnabled, value: sparklineOptions.tooltip?.position?.type ?? 'pointer', onChange: (type) => handleChange('tooltip', {
276
+ ...sparklineOptions.tooltip,
277
+ position: { ...sparklineOptions.tooltip?.position, type },
278
+ }), options: positionTypes }))),
279
+ React.createElement(FormLayout_1.FormRow, { label: "Position Offset X" },
280
+ React.createElement(AdaptableInput_1.default, { disabled: !isTooltipEnabled, title: "The horizontal offset in pixels for the position of the tooltip.", type: "number", value: sparklineOptions.tooltip?.position?.xOffset ?? '', onChange: (e) => handleChange('tooltip', {
281
+ ...sparklineOptions.tooltip,
282
+ position: { ...sparklineOptions.tooltip?.position, xOffset: Number(e.target.value) },
283
+ }) })),
284
+ React.createElement(FormLayout_1.FormRow, { label: "Position Offset Y" },
285
+ React.createElement(AdaptableInput_1.default, { disabled: !isTooltipEnabled, title: "The vertical offset in pixels for the position of the tooltip.", type: "number", value: sparklineOptions.tooltip?.position?.yOffset ?? '', onChange: (e) => handleChange('tooltip', {
286
+ ...sparklineOptions.tooltip,
287
+ position: { ...sparklineOptions.tooltip?.position, yOffset: Number(e.target.value) },
288
+ }) }))));
289
+ };
290
+ const SparklineMarkerOptions = ({ options, onChange }) => {
291
+ const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
292
+ const sparklineOptions = options;
293
+ const handleChange = (value) => {
294
+ onChange({
295
+ ...options,
296
+ marker: {
297
+ ...options.marker,
298
+ ...value,
299
+ },
300
+ });
301
+ };
302
+ const markerShapes = [
303
+ { value: 'circle', label: 'Circle' },
304
+ { value: 'cross', label: 'Cross' },
305
+ { value: 'diamond', label: 'Diamond' },
306
+ { value: 'heart', label: 'Heart' },
307
+ { value: 'plus', label: 'Plus' },
308
+ { value: 'pin', label: 'Pin' },
309
+ { value: 'square', label: 'Square' },
310
+ { value: 'star', label: 'Star' },
311
+ { value: 'triangle', label: 'Triangle' },
312
+ ];
313
+ const isMarkerEnabled = sparklineOptions.marker?.enabled ?? false;
314
+ return (React.createElement(FormLayout_1.default, null,
315
+ React.createElement(FormLayout_1.FormRow, { label: "Show Markers" },
316
+ React.createElement(CheckBox_1.CheckBox, { checked: isMarkerEnabled, onChange: (enabled) => handleChange({ enabled }) })),
317
+ React.createElement(FormLayout_1.FormRow, { label: "Marker Size" },
318
+ React.createElement(AdaptableInput_1.default, { disabled: !isMarkerEnabled, type: "number", min: 1, value: sparklineOptions.marker?.size ?? '', onChange: (e) => handleChange({ size: Number(e.target.value) }), title: "The size in pixels of the markers" })),
319
+ React.createElement(FormLayout_1.FormRow, { label: "Marker Shape" },
320
+ React.createElement(rebass_1.Box, { maxWidth: 160 },
321
+ React.createElement(Select_1.Select, { disabled: !isMarkerEnabled, value: sparklineOptions.marker?.shape, onChange: (shape) => handleChange({ shape: shape }), options: markerShapes }))),
322
+ React.createElement(FormLayout_1.FormRow, { label: "Fill" },
323
+ React.createElement(ColorPicker_1.ColorPicker, { disabled: !isMarkerEnabled, title: "The colour for filling markers", api: api, value: sparklineOptions.marker?.fill, onChange: (fill) => handleChange({ fill }) })),
324
+ React.createElement(FormLayout_1.FormRow, { label: "Stroke" },
325
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
326
+ React.createElement(ColorPicker_1.ColorPicker, { disabled: !isMarkerEnabled, title: "The colour for the marker stroke", api: api, value: sparklineOptions.marker?.stroke, onChange: (stroke) => handleChange({ stroke }) }),
327
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Width"),
328
+ React.createElement(AdaptableInput_1.default, { disabled: !isMarkerEnabled, style: { width: '70px' }, type: "number", min: 0, value: sparklineOptions.marker?.strokeWidth ?? '', onChange: (e) => handleChange({ strokeWidth: Number(e.target.value) }), title: "The width of the marker stroke in pixels" })))));
329
+ };
330
+ const SparklineHighlightOptions = ({ options, onChange, }) => {
331
+ const { api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
332
+ const sparklineOptions = options;
333
+ const handleItemChange = (value) => {
334
+ onChange({
335
+ ...options,
336
+ highlightStyle: {
337
+ ...options.highlightStyle,
338
+ item: {
339
+ ...options.highlightStyle?.item,
340
+ ...value,
341
+ },
342
+ },
343
+ });
344
+ };
345
+ const handleSeriesChange = (value) => {
346
+ onChange({
347
+ ...options,
348
+ highlightStyle: {
349
+ ...options.highlightStyle,
350
+ series: {
351
+ ...options.highlightStyle?.series,
352
+ ...value,
353
+ },
354
+ },
355
+ });
356
+ };
357
+ return (React.createElement(FormLayout_1.default, null,
358
+ React.createElement(FormLayout_1.FormRow, { label: "Item Fill" },
359
+ React.createElement(ColorPicker_1.ColorPicker, { title: "The colour for filling highlighted items", api: api, value: sparklineOptions.highlightStyle?.item?.fill, onChange: (fill) => handleItemChange({ fill }) })),
360
+ React.createElement(FormLayout_1.FormRow, { label: "Item Stroke" },
361
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
362
+ React.createElement(ColorPicker_1.ColorPicker, { title: "The colour for the highlighted item stroke", api: api, value: sparklineOptions.highlightStyle?.item?.stroke, onChange: (stroke) => handleItemChange({ stroke }) }),
363
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Width"),
364
+ React.createElement(AdaptableInput_1.default, { style: { width: '70px' }, type: "number", min: 0, value: sparklineOptions.highlightStyle?.item?.strokeWidth ?? '', onChange: (e) => handleItemChange({ strokeWidth: Number(e.target.value) }), title: "The width of the highlighted item stroke in pixels" }))),
365
+ React.createElement(FormLayout_1.FormRow, { label: "Series" },
366
+ React.createElement(rebass_1.Flex, { alignItems: "center" },
367
+ React.createElement(CheckBox_1.CheckBox, { checked: sparklineOptions.highlightStyle?.series?.enabled ?? false, onChange: (enabled) => handleSeriesChange({ enabled }) }),
368
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Opacity"),
369
+ React.createElement(AdaptableInput_1.default, { disabled: !sparklineOptions.highlightStyle?.series?.enabled, style: { width: '70px' }, type: "number", min: 0, max: 1, step: 0.1, value: sparklineOptions.highlightStyle?.series?.dimOpacity ?? '', onChange: (e) => handleSeriesChange({ dimOpacity: Number(e.target.value) }), title: "The opacity of the whole series when another series is highlighted" }),
370
+ React.createElement(rebass_1.Box, { ml: 2, mr: 1 }, "Stroke Width"),
371
+ React.createElement(AdaptableInput_1.default, { disabled: !sparklineOptions.highlightStyle?.series?.enabled, style: { width: '70px' }, type: "number", min: 0, value: sparklineOptions.highlightStyle?.series?.strokeWidth ?? '', onChange: (e) => handleSeriesChange({ strokeWidth: Number(e.target.value) }), title: "The stroke width when markers are hovered or tooltip is shown" })))));
372
+ };
373
+ const test = {
374
+ type: 'line',
375
+ xName: 'test',
218
376
  };
219
- exports.StyledColumnSparklineSettingsSection = StyledColumnSparklineSettingsSection;