@adaptabletools/adaptable-cjs 23.0.0-canary.7 → 23.0.0-canary.8
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.
- package/index.css +75 -9
- package/package.json +1 -1
- package/src/AdaptableState/StyledColumnState.d.ts +8 -850
- package/src/AdaptableState/StyledColumnState.js +0 -10
- package/src/AdaptableState/StyledColumns/BadgeStyle.d.ts +143 -0
- package/src/AdaptableState/StyledColumns/BadgeStyle.js +12 -0
- package/src/AdaptableState/StyledColumns/BulletChartStyle.d.ts +147 -0
- package/src/AdaptableState/StyledColumns/BulletChartStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/Common/BarChartCellText.d.ts +60 -0
- package/src/AdaptableState/StyledColumns/Common/BarChartCellText.js +7 -0
- package/src/AdaptableState/StyledColumns/Common/BarChartMarker.d.ts +24 -0
- package/src/AdaptableState/StyledColumns/Common/BarChartMarker.js +6 -0
- package/src/AdaptableState/StyledColumns/Common/CellTextOptions.d.ts +13 -0
- package/src/AdaptableState/StyledColumns/Common/CellTextOptions.js +7 -0
- package/src/AdaptableState/StyledColumns/Common/NumericStyledColumn.d.ts +79 -0
- package/src/AdaptableState/StyledColumns/Common/NumericStyledColumn.js +10 -0
- package/src/AdaptableState/StyledColumns/GradientStyle.d.ts +48 -0
- package/src/AdaptableState/StyledColumns/GradientStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/IconStyle.d.ts +158 -0
- package/src/AdaptableState/StyledColumns/IconStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/PercentBarStyle.d.ts +32 -0
- package/src/AdaptableState/StyledColumns/PercentBarStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/RangeBarStyle.d.ts +155 -0
- package/src/AdaptableState/StyledColumns/RangeBarStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/RatingStyle.d.ts +111 -0
- package/src/AdaptableState/StyledColumns/RatingStyle.js +2 -0
- package/src/AdaptableState/StyledColumns/SparklineStyle.d.ts +21 -0
- package/src/AdaptableState/StyledColumns/SparklineStyle.js +2 -0
- package/src/Api/ColumnScopeApi.d.ts +1 -1
- package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +1 -1
- package/src/Api/Internal/StyledColumnInternalApi.d.ts +3 -1
- package/src/Utilities/Helpers/IconStylePresets.d.ts +1 -1
- package/src/Utilities/Helpers/StyledColumnGradientHelper.d.ts +3 -1
- package/src/Utilities/Helpers/barChartCellText.d.ts +63 -0
- package/src/Utilities/Helpers/barChartCellText.js +333 -0
- package/src/Utilities/Helpers/percentBarPreviewHelper.d.ts +2 -1
- package/src/Utilities/Helpers/percentBarPreviewHelper.js +3 -8
- package/src/View/Alert/Wizard/AlertButtonsEditor.js +158 -125
- package/src/View/Alert/Wizard/AlertNotificationWizardSection.js +1 -1
- package/src/View/Alert/Wizard/AlertWizard.js +9 -1
- package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +3 -2
- package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +3 -2
- package/src/View/Components/AdaptableObjectList/objectListActionButtonStyles.d.ts +2 -0
- package/src/View/Components/AdaptableObjectList/objectListActionButtonStyles.js +6 -0
- package/src/View/Components/Buttons/EntityListActionButtons.js +1 -1
- package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.d.ts +1 -0
- package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.js +8 -8
- package/src/View/Components/ColumnFilter/ColumnFilter.js +14 -1
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +1 -1
- package/src/View/Components/RangesComponent.d.ts +2 -1
- package/src/View/Export/ExportSchedulesTab.js +3 -4
- package/src/View/Filter/FilterViewPanel.js +1 -1
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +128 -102
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.d.ts +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +36 -30
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.d.ts +1 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +73 -58
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +38 -11
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +86 -44
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarChartCellTextLayoutEditor.d.ts +9 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarChartCellTextLayoutEditor.js +40 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarChartCellTextPreview.d.ts +23 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarChartCellTextPreview.js +62 -0
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview.d.ts +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.d.ts +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/RangeBarRangesSummaryPreview.d.ts +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +3 -2
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.d.ts +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +13 -17
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnChartListPreviews.d.ts +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnChartListPreviews.js +5 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnIconPreview.js +2 -2
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnPercentBarPreview.js +13 -6
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +11 -17
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.d.ts +2 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +18 -54
- package/src/agGrid/AgGridColumnAdapter.js +2 -1
- package/src/agGrid/cellRenderers/BadgeRenderer.js +7 -5
- package/src/agGrid/cellRenderers/BulletChartRenderer.js +43 -42
- package/src/agGrid/cellRenderers/IconRenderer.d.ts +2 -1
- package/src/agGrid/cellRenderers/IconRenderer.js +13 -11
- package/src/agGrid/cellRenderers/PercentBarRenderer.js +24 -96
- package/src/agGrid/cellRenderers/RangeBarRenderer.js +49 -46
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +80 -14
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/VersionUpgrade23.d.ts +27 -31
- package/src/migration/VersionUpgrade23.js +110 -29
- package/src/types.d.ts +12 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
|
@@ -13,7 +13,6 @@ const RangesComponent_1 = require("../../Components/RangesComponent");
|
|
|
13
13
|
const ColumnSelector_1 = require("../../Components/Selectors/ColumnSelector");
|
|
14
14
|
const UIHelper_1 = require("../../UIHelper");
|
|
15
15
|
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
16
|
-
const ArrayExtensions_1 = tslib_1.__importDefault(require("../../../Utilities/Extensions/ArrayExtensions"));
|
|
17
16
|
const AdaptableInput_1 = tslib_1.__importDefault(require("../../Components/AdaptableInput"));
|
|
18
17
|
const Flex_1 = require("../../../components/Flex");
|
|
19
18
|
const BulletRangesSummaryPreview_1 = require("./StyledColumnWizardStyleSection/Components/BulletRangesSummaryPreview");
|
|
@@ -22,10 +21,9 @@ const NewSelect_1 = require("../../../components/NewSelect");
|
|
|
22
21
|
const StyledColumnSliceStyleEditors_1 = require("./StyledColumnSliceStyleEditors");
|
|
23
22
|
const Card_1 = require("../../../components/Card");
|
|
24
23
|
const SummaryColorTag_1 = require("../../Wizard/SummaryColorTag");
|
|
24
|
+
const barChartCellText_1 = require("../../../Utilities/Helpers/barChartCellText");
|
|
25
|
+
const BarChartCellTextLayoutEditor_1 = require("./StyledColumnWizardStyleSection/Components/BarChartCellTextLayoutEditor");
|
|
25
26
|
const BULLET_STYLE_FORM_SIZES = ['200px', '1fr'];
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Summary helpers
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
27
|
const getTargetSummary = (target) => {
|
|
30
28
|
if (target == undefined) {
|
|
31
29
|
return null;
|
|
@@ -78,11 +76,12 @@ const getStyledColumnBulletRangesViewValues = (data) => {
|
|
|
78
76
|
exports.getStyledColumnBulletRangesViewValues = getStyledColumnBulletRangesViewValues;
|
|
79
77
|
const buildStyledColumnBulletStyleSummaryStrings = (bullet, options) => {
|
|
80
78
|
const items = [];
|
|
81
|
-
const
|
|
79
|
+
const targetProperties = bullet.TargetProperties;
|
|
80
|
+
const targetSummary = getTargetSummary(targetProperties?.Target);
|
|
82
81
|
if (targetSummary) {
|
|
83
82
|
items.push(`Target: ${targetSummary}`);
|
|
84
83
|
}
|
|
85
|
-
const marker =
|
|
84
|
+
const marker = targetProperties?.Marker;
|
|
86
85
|
if (marker?.Shape && marker.Shape !== 'Line') {
|
|
87
86
|
items.push(`Target Marker Shape: ${marker.Shape}`);
|
|
88
87
|
}
|
|
@@ -95,19 +94,24 @@ const buildStyledColumnBulletStyleSummaryStrings = (bullet, options) => {
|
|
|
95
94
|
if (bullet.Orientation === 'Vertical') {
|
|
96
95
|
items.push('Orientation: Vertical');
|
|
97
96
|
}
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
const barProperties = bullet.Bar;
|
|
98
|
+
if (barProperties?.Color) {
|
|
99
|
+
items.push(`Bar Colour: ${barProperties.Color}`);
|
|
100
100
|
}
|
|
101
|
-
if (
|
|
102
|
-
items.push(`${bullet.Orientation === 'Vertical' ? 'Bar Width' : 'Bar Height'}: ${
|
|
101
|
+
if (barProperties?.Height != null) {
|
|
102
|
+
items.push(`${bullet.Orientation === 'Vertical' ? 'Bar Width' : 'Bar Height'}: ${barProperties.Height}px`);
|
|
103
103
|
}
|
|
104
104
|
items.push(`Origin: ${formatBulletOriginLabel(bullet.Origin)}`);
|
|
105
105
|
if (bullet.BackColor) {
|
|
106
106
|
items.push(`Back Colour: ${bullet.BackColor}`);
|
|
107
107
|
}
|
|
108
|
-
if (bullet.
|
|
109
|
-
|
|
110
|
-
items.push(`Cell Text
|
|
108
|
+
if ((0, barChartCellText_1.hasBarChartCellTextConfigured)(bullet.CellTextProperties)) {
|
|
109
|
+
const tokens = (0, barChartCellText_1.getActiveBarChartCellTextTokens)(bullet.CellTextProperties);
|
|
110
|
+
items.push(`Cell Text: ${formatBulletCellTextSummary(tokens)}`);
|
|
111
|
+
const layoutSummary = (0, barChartCellText_1.formatBarChartCellTextLayoutSummary)((0, barChartCellText_1.resolveBarChartCellTextLayout)(bullet.CellTextProperties));
|
|
112
|
+
if (layoutSummary) {
|
|
113
|
+
items.push(`Placement: ${layoutSummary}`);
|
|
114
|
+
}
|
|
111
115
|
}
|
|
112
116
|
else if (options.includeEmptyCellText) {
|
|
113
117
|
items.push('Cell Text: None');
|
|
@@ -270,20 +274,28 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
270
274
|
});
|
|
271
275
|
}, [data, bullet]);
|
|
272
276
|
// -- Target ----------------------------------------------------------------
|
|
273
|
-
const currentMode = getSimpleTargetMode(bullet.Target);
|
|
277
|
+
const currentMode = getSimpleTargetMode(bullet.TargetProperties?.Target);
|
|
278
|
+
const updateTargetProperties = (patch) => {
|
|
279
|
+
const merged = {
|
|
280
|
+
...bullet.TargetProperties,
|
|
281
|
+
...patch,
|
|
282
|
+
};
|
|
283
|
+
// Strip the wrapper when nothing meaningful is left.
|
|
284
|
+
const isEmpty = merged.Target == undefined && merged.Marker == undefined;
|
|
285
|
+
update({ TargetProperties: isEmpty ? undefined : merged });
|
|
286
|
+
};
|
|
287
|
+
const setTarget = (target) => updateTargetProperties({ Target: target });
|
|
274
288
|
const handleTargetModeChange = (mode) => {
|
|
275
289
|
if (mode === 'None') {
|
|
276
|
-
|
|
277
|
-
delete next.Target;
|
|
278
|
-
props.onChange({ ...data, BulletChartStyle: next });
|
|
290
|
+
setTarget(undefined);
|
|
279
291
|
return;
|
|
280
292
|
}
|
|
281
293
|
if (mode === 'Col-Avg' || mode === 'Col-Median') {
|
|
282
|
-
|
|
294
|
+
setTarget(mode);
|
|
283
295
|
return;
|
|
284
296
|
}
|
|
285
297
|
if (mode === 'Number') {
|
|
286
|
-
|
|
298
|
+
setTarget(minMaxRangeValues?.max ?? 0);
|
|
287
299
|
return;
|
|
288
300
|
}
|
|
289
301
|
if (mode === 'Column') {
|
|
@@ -291,38 +303,43 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
291
303
|
const candidate = api.columnApi
|
|
292
304
|
.getNumericColumns()
|
|
293
305
|
.find((c) => c.columnId !== data.ColumnId);
|
|
294
|
-
|
|
306
|
+
setTarget(candidate?.columnId ?? '');
|
|
295
307
|
return;
|
|
296
308
|
}
|
|
297
309
|
};
|
|
298
310
|
const handleNumericTargetChange = (value) => {
|
|
299
|
-
|
|
300
|
-
update({ Target: 0 });
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
update({ Target: value });
|
|
304
|
-
}
|
|
311
|
+
setTarget(value == undefined || isNaN(value) ? 0 : value);
|
|
305
312
|
};
|
|
306
313
|
const handleColumnTargetChange = (columnId) => {
|
|
307
|
-
|
|
314
|
+
setTarget(columnId);
|
|
315
|
+
};
|
|
316
|
+
// -- Bar -------------------------------------------------------------------
|
|
317
|
+
const updateBar = (patch) => {
|
|
318
|
+
const merged = {
|
|
319
|
+
...bullet.Bar,
|
|
320
|
+
...patch,
|
|
321
|
+
};
|
|
322
|
+
const isEmpty = merged.Color == undefined && merged.Height == undefined;
|
|
323
|
+
update({ Bar: isEmpty ? undefined : merged });
|
|
308
324
|
};
|
|
309
325
|
// -- Marker ----------------------------------------------------------------
|
|
310
326
|
const updateMarker = (patch) => {
|
|
311
|
-
|
|
312
|
-
|
|
327
|
+
updateTargetProperties({
|
|
328
|
+
Marker: {
|
|
313
329
|
Shape: 'Line',
|
|
314
|
-
...bullet.
|
|
330
|
+
...bullet.TargetProperties?.Marker,
|
|
315
331
|
...patch,
|
|
316
332
|
},
|
|
317
333
|
});
|
|
318
334
|
};
|
|
319
335
|
// -- Cell text -------------------------------------------------------------
|
|
320
|
-
const toggleCellText = (token,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
336
|
+
const toggleCellText = (token, show) => {
|
|
337
|
+
update((0, barChartCellText_1.toggleBarChartCellTextToken)(bullet.CellTextProperties, token, show));
|
|
338
|
+
};
|
|
339
|
+
const onCellTextPlacementChange = (token, patch) => {
|
|
340
|
+
update({
|
|
341
|
+
CellTextProperties: (0, barChartCellText_1.patchBarChartCellTextPlacement)(bullet.CellTextProperties, token, patch),
|
|
342
|
+
});
|
|
326
343
|
};
|
|
327
344
|
const toggleToolTipText = (token, checked) => {
|
|
328
345
|
const current = bullet.ToolTipText ?? [];
|
|
@@ -331,9 +348,6 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
331
348
|
: current.filter((t) => t !== token);
|
|
332
349
|
update({ ToolTipText: next });
|
|
333
350
|
};
|
|
334
|
-
const handleCellTextPositionChange = (pos) => {
|
|
335
|
-
update({ CellTextPosition: pos });
|
|
336
|
-
};
|
|
337
351
|
// -------------------------------------------------------------------------
|
|
338
352
|
// Render
|
|
339
353
|
// -------------------------------------------------------------------------
|
|
@@ -346,22 +360,27 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
346
360
|
if (variant === 'ranges') {
|
|
347
361
|
return ((0, jsx_runtime_1.jsx)(Flex_1.Box, { 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: "Ranges" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Define qualitative bands for the bullet scale" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsx)(RangesComponent_1.RangesComponent, { disabled: disabled, minMaxRangeValues: minMaxRangeValues, api: api, scope: scope, ranges: bullet.CellRanges, rangeValueType: bullet.RangeValueType, onRangeValueTypeChange: onRangeValueTypeChange, columnComparison: bullet.ColumnComparison, updateRanges: onUpdateRanges, updateColumnComparison: onUpdateColumnComparison, hideColumnComparison: true }) })] }) }));
|
|
348
362
|
}
|
|
349
|
-
const
|
|
350
|
-
? bullet.Target
|
|
351
|
-
:
|
|
352
|
-
|
|
363
|
+
const primaryTarget = Array.isArray(bullet.TargetProperties?.Target)
|
|
364
|
+
? bullet.TargetProperties?.Target?.[0]
|
|
365
|
+
: bullet.TargetProperties?.Target;
|
|
366
|
+
const numericTargetValue = typeof primaryTarget === 'number'
|
|
367
|
+
? primaryTarget
|
|
368
|
+
: typeof primaryTarget?.Value === 'number'
|
|
369
|
+
? primaryTarget.Value
|
|
353
370
|
: undefined;
|
|
354
|
-
const columnTargetValue = typeof
|
|
355
|
-
?
|
|
356
|
-
: typeof
|
|
357
|
-
?
|
|
371
|
+
const columnTargetValue = typeof primaryTarget === 'string' && primaryTarget !== 'Col-Avg' && primaryTarget !== 'Col-Median'
|
|
372
|
+
? primaryTarget
|
|
373
|
+
: typeof primaryTarget?.Value === 'string'
|
|
374
|
+
? primaryTarget.Value
|
|
358
375
|
: undefined;
|
|
376
|
+
const markerCfg = bullet.TargetProperties?.Marker;
|
|
359
377
|
const marker = {
|
|
360
|
-
Shape:
|
|
361
|
-
Color:
|
|
362
|
-
Size:
|
|
378
|
+
Shape: markerCfg?.Shape ?? 'Line',
|
|
379
|
+
Color: markerCfg?.Color ?? '',
|
|
380
|
+
Size: markerCfg?.Size ?? (markerCfg?.Shape === 'Line' ? 2 : 8),
|
|
363
381
|
};
|
|
364
|
-
const
|
|
382
|
+
const cellTextProperties = bullet.CellTextProperties;
|
|
383
|
+
const cellTextDisabled = !(0, barChartCellText_1.hasBarChartCellTextConfigured)(cellTextProperties) || disabled;
|
|
365
384
|
return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { children: [(0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", children: [(0, jsx_runtime_1.jsxs)(Card_1.Card.Title, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Target" }), (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 target value for the bullet scale" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsxs)(FormLayout_1.default, { sizes: [...BULLET_STYLE_FORM_SIZES], children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Target:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[180px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: currentMode, onValueChange: (v) => handleTargetModeChange(v), items: [
|
|
366
385
|
{ value: 'None', label: 'None' },
|
|
367
386
|
{ value: 'Number', label: 'Fixed Number' },
|
|
@@ -371,8 +390,8 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
371
390
|
] }) }) }), currentMode === 'Number' && ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Target Value:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { type: "number", value: numericTargetValue ?? '', onChange: (e) => handleNumericTargetChange(e.target.value === '' ? undefined : Number(e.target.value)) }) }) })), currentMode === 'Column' && ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Target Column:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[220px]", children: (0, jsx_runtime_1.jsx)(ColumnSelector_1.ColumnSelector, { type: "number", value: columnTargetValue ?? '', onChange: handleColumnTargetChange, filterColumn: (c) => c.columnId !== data.ColumnId, placeholder: "Select numeric column" }) }) })), currentMode !== 'None' && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Marker Shape:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: marker.Shape, onValueChange: (s) => updateMarker({ Shape: s }), items: MARKER_SHAPES.map((s) => ({ value: s.value, label: s.label })) }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Marker Colour:", children: (0, jsx_runtime_1.jsx)(ColorPicker_1.ColorPicker, { disabled: disabled, api: api, value: marker.Color || undefined, onChange: (c) => updateMarker({ Color: c }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Marker Size:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[100px]", children: (0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { type: "number", min: 1, value: marker.Size, onChange: (e) => updateMarker({ Size: Number(e.target.value) }) }) }) })] }))] }) })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", children: [(0, jsx_runtime_1.jsxs)(Card_1.Card.Title, { children: [(0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:font-medium", children: "Bar" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Set the bar orientation and height" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsxs)(FormLayout_1.default, { sizes: [...BULLET_STYLE_FORM_SIZES], children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Orientation:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: bullet.Orientation ?? 'Horizontal', onValueChange: (v) => update({ Orientation: v }), items: [
|
|
372
391
|
{ value: 'Horizontal', label: 'Horizontal' },
|
|
373
392
|
{ value: 'Vertical', label: 'Vertical' },
|
|
374
|
-
] }) }) }), bullet.Orientation === 'Vertical' && ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "", children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-xs twa:text-neutral-500", children: ["Tip: vertical bullet charts need a tall row height to be readable (we recommend at least 60px). Set ", (0, jsx_runtime_1.jsx)("code", { children: "rowHeight" }), " on ", (0, jsx_runtime_1.jsx)("code", { children: " gridOptions " }), " or use", ' ', (0, jsx_runtime_1.jsx)("code", { children: "getRowHeight" }), "."] }) })), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Bar Colour:", children: (0, jsx_runtime_1.jsx)(ColorPicker_1.ColorPicker, { disabled: disabled, api: api, value: bullet.
|
|
375
|
-
|
|
393
|
+
] }) }) }), bullet.Orientation === 'Vertical' && ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "", children: (0, jsx_runtime_1.jsxs)(Flex_1.Box, { className: "twa:text-xs twa:text-neutral-500", children: ["Tip: vertical bullet charts need a tall row height to be readable (we recommend at least 60px). Set ", (0, jsx_runtime_1.jsx)("code", { children: "rowHeight" }), " on ", (0, jsx_runtime_1.jsx)("code", { children: " gridOptions " }), " or use", ' ', (0, jsx_runtime_1.jsx)("code", { children: "getRowHeight" }), "."] }) })), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Bar Colour:", children: (0, jsx_runtime_1.jsx)(ColorPicker_1.ColorPicker, { disabled: disabled, api: api, value: bullet.Bar?.Color, onChange: (c) => updateBar({ Color: c }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: bullet.Orientation === 'Vertical' ? 'Bar Width (px):' : 'Bar Height (px):', children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[100px]", children: (0, jsx_runtime_1.jsx)(AdaptableInput_1.default, { type: "number", min: 1, value: bullet.Bar?.Height ?? '', onChange: (e) => updateBar({
|
|
394
|
+
Height: e.target.value === '' ? undefined : Number(e.target.value),
|
|
376
395
|
}), placeholder: "8" }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Origin:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: typeof bullet.Origin === 'number' ? 'Number' : (bullet.Origin ?? 'Auto'), onValueChange: (v) => {
|
|
377
396
|
if (v === 'Auto' || v === 'Zero') {
|
|
378
397
|
update({ Origin: v });
|
|
@@ -383,11 +402,7 @@ const StyledColumnWizardBulletSection = (props) => {
|
|
|
383
402
|
}, items: [
|
|
384
403
|
{ value: 'Auto', label: 'Auto' },
|
|
385
404
|
{ value: 'Zero', label: 'Zero' },
|
|
386
|
-
] }) }) })] }) })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", 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 Text" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "
|
|
387
|
-
{ value: 'Above', label: 'Above Bar' },
|
|
388
|
-
{ value: 'Below', label: 'Below Bar' },
|
|
389
|
-
{ value: 'Merged', label: 'Merged' },
|
|
390
|
-
] }) }) })] }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: `twa:mt-3 twa:pt-3 twa:border-t twa:border-foreground/15 ${cellTextDisabled ? 'twa:opacity-50' : ''}`, children: (0, jsx_runtime_1.jsx)(StyledColumnSliceStyleEditors_1.StyledColumnFontStyleEditor, { api: api, disabled: cellTextDisabled, value: bullet.Font, onChange: (next) => {
|
|
405
|
+
] }) }) })] }) })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", 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 Text" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Pick which values to display and where each one sits around the bar" })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card.Body, { children: [(0, jsx_runtime_1.jsx)(FormLayout_1.default, { sizes: [...BULLET_STYLE_FORM_SIZES], children: (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Cell Text Layout:", children: (0, jsx_runtime_1.jsx)(BarChartCellTextLayoutEditor_1.BarChartCellTextLayoutEditor, { disabled: disabled, cellTextProperties: cellTextProperties, onToggle: toggleCellText, onPlacementChange: onCellTextPlacementChange }) }) }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: `twa:mt-3 twa:pt-3 twa:border-t twa:border-foreground/15 ${cellTextDisabled ? 'twa:opacity-50' : ''}`, children: (0, jsx_runtime_1.jsx)(StyledColumnSliceStyleEditors_1.StyledColumnFontStyleEditor, { api: api, disabled: cellTextDisabled, value: bullet.Font, onChange: (next) => {
|
|
391
406
|
if (next) {
|
|
392
407
|
update({ Font: next });
|
|
393
408
|
}
|
|
@@ -82,8 +82,9 @@ const getStyledColumnIconMappingsViewValues = (data) => {
|
|
|
82
82
|
if (ic.MatchMode && ic.MatchMode !== 'Exact') {
|
|
83
83
|
items.push(`Match Mode: ${ic.MatchMode}`);
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
const fallbackMode = ic.FallbackProperties?.Mode;
|
|
86
|
+
if (fallbackMode && fallbackMode !== 'Hide') {
|
|
87
|
+
items.push(`Fallback: ${fallbackMode}`);
|
|
87
88
|
}
|
|
88
89
|
return items;
|
|
89
90
|
};
|
|
@@ -96,9 +97,10 @@ const buildStyledColumnIconStyleSummaryStrings = (ic, options) => {
|
|
|
96
97
|
if (ic.Gap != null) {
|
|
97
98
|
items.push(`Gap: ${ic.Gap}px`);
|
|
98
99
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
items.push(`Cell Text
|
|
100
|
+
const ctp = ic.CellTextProperties;
|
|
101
|
+
if (ctp?.CellText?.length) {
|
|
102
|
+
items.push(`Cell Text: ${formatIconCellTextSummary(ctp.CellText)}`);
|
|
103
|
+
items.push(`Cell Text Position: ${ctp.CellTextPosition ?? 'After'}`);
|
|
102
104
|
}
|
|
103
105
|
else if (options.includeEmptyCellText) {
|
|
104
106
|
items.push('Cell Text: None');
|
|
@@ -264,12 +266,35 @@ const StyledColumnWizardIconSection = (props) => {
|
|
|
264
266
|
// -----------------------------------------------------------------------
|
|
265
267
|
// CellText helpers
|
|
266
268
|
// -----------------------------------------------------------------------
|
|
269
|
+
const updateCellTextProperties = (patch) => {
|
|
270
|
+
const merged = {
|
|
271
|
+
...iconStyle.CellTextProperties,
|
|
272
|
+
...patch,
|
|
273
|
+
};
|
|
274
|
+
// Strip the wrapper when both inner properties are unset, so empty state
|
|
275
|
+
// serialises cleanly.
|
|
276
|
+
const isEmpty = !merged.CellText?.length && merged.CellTextPosition == undefined;
|
|
277
|
+
update({ CellTextProperties: isEmpty ? undefined : merged });
|
|
278
|
+
};
|
|
267
279
|
const toggleCellText = (token, checked) => {
|
|
268
|
-
const current = iconStyle.CellText ?? [];
|
|
280
|
+
const current = iconStyle.CellTextProperties?.CellText ?? [];
|
|
269
281
|
const next = checked
|
|
270
282
|
? Array.from(new Set([...current, token]))
|
|
271
283
|
: current.filter((t) => t !== token);
|
|
272
|
-
|
|
284
|
+
updateCellTextProperties({ CellText: next });
|
|
285
|
+
};
|
|
286
|
+
// -----------------------------------------------------------------------
|
|
287
|
+
// Fallback helpers
|
|
288
|
+
// -----------------------------------------------------------------------
|
|
289
|
+
const updateFallbackProperties = (patch) => {
|
|
290
|
+
const merged = {
|
|
291
|
+
...iconStyle.FallbackProperties,
|
|
292
|
+
...patch,
|
|
293
|
+
};
|
|
294
|
+
// Strip the wrapper when there's nothing to remember; the renderer
|
|
295
|
+
// already defaults to `Mode: 'Hide'` when `FallbackProperties` is unset.
|
|
296
|
+
const isEmpty = (merged.Mode == undefined || merged.Mode === 'Hide') && merged.Icon == undefined;
|
|
297
|
+
update({ FallbackProperties: isEmpty ? undefined : merged });
|
|
273
298
|
};
|
|
274
299
|
const toggleToolTipText = (token, checked) => {
|
|
275
300
|
const current = iconStyle.ToolTipText ?? [];
|
|
@@ -298,14 +323,14 @@ const StyledColumnWizardIconSection = (props) => {
|
|
|
298
323
|
}), placeholder: "Tooltip label (optional)" }) }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:w-8 twa:shrink-0 twa:flex twa:justify-center", children: (0, jsx_runtime_1.jsx)(SimpleButton_1.default, { icon: "delete", variant: "text", tooltip: "Remove mapping", onClick: () => removeMapping(i) }) })] }, i)))] })), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:mt-2", children: (0, jsx_runtime_1.jsx)(ButtonNew_1.ButtonNew, { onClick: addMapping, children: "Add Mapping" }) })] })] }), (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: "Matching" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "How keys are compared to cell values, and what to render when no mapping matches" })] }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsxs)(FormLayout_1.default, { children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Match Mode:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[200px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: iconStyle.MatchMode ?? 'Exact', onValueChange: (v) => update({ MatchMode: v }), items: [
|
|
299
324
|
{ value: 'Exact', label: 'Exact Match Required' },
|
|
300
325
|
{ value: 'CaseInsensitive', label: 'Case-insensitive (strings)' },
|
|
301
|
-
] }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Fallback:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[200px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: iconStyle.
|
|
326
|
+
] }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Fallback:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[200px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: iconStyle.FallbackProperties?.Mode ?? 'Hide', onValueChange: (v) => updateFallbackProperties({ Mode: v }), items: [
|
|
302
327
|
{ value: 'Hide', label: 'Show No Value' },
|
|
303
328
|
{ value: 'ShowText', label: 'Show Raw Value' },
|
|
304
329
|
{ value: 'Icon', label: 'Show Fallback Icon' },
|
|
305
|
-
] }) }) }), iconStyle.
|
|
330
|
+
] }) }) }), iconStyle.FallbackProperties?.Mode === 'Icon' && ((0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Fallback Icon:", children: (0, jsx_runtime_1.jsx)(IconPickerButton, { value: iconStyle.FallbackProperties?.Icon, onChange: (next) => updateFallbackProperties({ Icon: next }) }) }))] }) })] })] }));
|
|
306
331
|
}
|
|
307
332
|
// ----- Style variant (wizard step title: "Style") ------------------------
|
|
308
|
-
const cellText = iconStyle.CellText ?? [];
|
|
333
|
+
const cellText = iconStyle.CellTextProperties?.CellText ?? [];
|
|
309
334
|
const toolTipText = iconStyle.ToolTipText ?? [];
|
|
310
335
|
const cellTextDisabled = cellText.length === 0;
|
|
311
336
|
return ((0, jsx_runtime_1.jsxs)(Flex_1.Box, { children: [(0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", children: [(0, jsx_runtime_1.jsx)(Card_1.Card.Title, { children: "Sizing" }), (0, jsx_runtime_1.jsx)(Card_1.Card.Body, { children: (0, jsx_runtime_1.jsxs)(FormLayout_1.default, { sizes: [...STYLE_FORM_SIZES], children: [(0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Icon Size (px):", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[100px]", children: (0, jsx_runtime_1.jsx)(Input_1.default, { type: "number", min: 8, step: 1, value: iconStyle.Size ?? '', placeholder: "18", className: "twa:w-full", onChange: (event) => {
|
|
@@ -318,7 +343,9 @@ const StyledColumnWizardIconSection = (props) => {
|
|
|
318
343
|
update({
|
|
319
344
|
Size: Number.isFinite(parsed) && parsed >= 8 ? parsed : undefined,
|
|
320
345
|
});
|
|
321
|
-
} }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Gap (px):", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[100px]", children: (0, jsx_runtime_1.jsx)(NumberInput_1.NumberInput, { value: iconStyle.Gap ?? '', placeholder: "4", min: 0, step: 1, onChange: (value) => update({ Gap: typeof value === 'number' ? value : undefined }) }) }) })] }) })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", 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 Text" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optionally show the raw value or the matched description alongside the icon (e.g. flag plus label)." })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card.Body, { children: [(0, jsx_runtime_1.jsxs)(FormLayout_1.default, { sizes: [...STYLE_FORM_SIZES], children: [(0, jsx_runtime_1.jsxs)(FormLayout_1.FormRow, { label: "Cell Display:", children: [(0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { checked: cellText.includes('CellValue'), onChange: (checked) => toggleCellText('CellValue', checked), children: "Cell Value" }), ' ', (0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: "twa:ml-3", checked: cellText.includes('IconDescription'), onChange: (checked) => toggleCellText('IconDescription', checked), children: "Description" })] }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Position:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: iconStyle.CellTextPosition ?? 'After', onValueChange: (v) =>
|
|
346
|
+
} }) }) }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Gap (px):", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[100px]", children: (0, jsx_runtime_1.jsx)(NumberInput_1.NumberInput, { value: iconStyle.Gap ?? '', placeholder: "4", min: 0, step: 1, onChange: (value) => update({ Gap: typeof value === 'number' ? value : undefined }) }) }) })] }) })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card, { shadow: false, className: "twa:mb-3", 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 Text" }), (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:text-xs twa:opacity-70 twa:font-normal twa:max-w-[520px]", children: "Optionally show the raw value or the matched description alongside the icon (e.g. flag plus label)." })] }), (0, jsx_runtime_1.jsxs)(Card_1.Card.Body, { children: [(0, jsx_runtime_1.jsxs)(FormLayout_1.default, { sizes: [...STYLE_FORM_SIZES], children: [(0, jsx_runtime_1.jsxs)(FormLayout_1.FormRow, { label: "Cell Display:", children: [(0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { checked: cellText.includes('CellValue'), onChange: (checked) => toggleCellText('CellValue', checked), children: "Cell Value" }), ' ', (0, jsx_runtime_1.jsx)(CheckBox_1.CheckBox, { className: "twa:ml-3", checked: cellText.includes('IconDescription'), onChange: (checked) => toggleCellText('IconDescription', checked), children: "Description" })] }), (0, jsx_runtime_1.jsx)(FormLayout_1.FormRow, { label: "Position:", children: (0, jsx_runtime_1.jsx)(Flex_1.Box, { className: "twa:max-w-[160px]", children: (0, jsx_runtime_1.jsx)(NewSelect_1.SingleSelect, { className: "twa:w-full", value: iconStyle.CellTextProperties?.CellTextPosition ?? 'After', onValueChange: (v) => updateCellTextProperties({
|
|
347
|
+
CellTextPosition: v,
|
|
348
|
+
}), items: [
|
|
322
349
|
{ value: 'Before', label: 'Before' },
|
|
323
350
|
{ value: 'After', label: 'After' },
|
|
324
351
|
{ value: 'Above', label: 'Above' },
|