highcharts 12.0.2 → 12.1.0
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/bower.json +1 -1
- package/es-modules/Accessibility/Options/A11yDefaults.js +2 -0
- package/es-modules/Core/Color/Color.js +5 -12
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +1 -3
- package/es-modules/Core/Renderer/SVG/SVGElement.js +3 -1
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +8 -11
- package/es-modules/Core/Series/DataLabel.js +3 -1
- package/es-modules/Core/Series/Series.js +13 -15
- package/es-modules/Core/Templating.js +14 -10
- package/es-modules/Core/Time.js +6 -3
- package/es-modules/Core/Utilities.js +1 -1
- package/es-modules/Data/Converters/CSVConverter.js +1 -0
- package/es-modules/Data/Converters/DataConverter.js +31 -0
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +1 -0
- package/es-modules/Data/Converters/HTMLTableConverter.js +1 -0
- package/es-modules/Data/Converters/JSONConverter.js +1 -0
- package/es-modules/Extensions/Boost/BoostSeries.js +13 -7
- package/es-modules/Extensions/DragPanes/AxisResizer.js +1 -1
- package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +7 -2
- package/es-modules/Series/Bubble/BubbleSeries.js +24 -0
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +3 -1
- package/es-modules/Series/Timeline/TimelineSeriesDefaults.js +3 -1
- package/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +3 -1
- package/es-modules/Series/Treemap/TreemapPoint.js +7 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +154 -53
- package/es-modules/Series/Treemap/TreemapSeriesDefaults.js +126 -4
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +1 -0
- package/es-modules/Stock/RangeSelector/RangeSelector.js +68 -72
- package/es-modules/Stock/RangeSelector/RangeSelectorDefaults.js +10 -4
- package/es-modules/masters/indicators/indicators-all.src.js +4 -0
- package/es-modules/tsconfig.tsbuildinfo +1 -1
- package/highcharts-3d.js +2 -2
- package/highcharts-3d.src.js +1 -1
- package/highcharts-gantt.js +5 -5
- package/highcharts-gantt.src.js +140 -141
- package/highcharts-more.js +2 -2
- package/highcharts-more.src.js +25 -1
- package/highcharts.d.ts +281 -762
- package/highcharts.js +3 -3
- package/highcharts.src.d.ts +281 -762
- package/highcharts.src.js +57 -60
- package/highmaps.js +5 -5
- package/highmaps.src.js +84 -63
- package/highstock.js +5 -5
- package/highstock.src.js +140 -141
- package/indicators/acceleration-bands.js +2 -2
- package/indicators/acceleration-bands.src.js +1 -1
- package/indicators/accumulation-distribution.js +2 -2
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +2 -2
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +2 -2
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +2 -2
- package/indicators/aroon-oscillator.src.js +1 -1
- package/indicators/aroon.js +2 -2
- package/indicators/aroon.src.js +1 -1
- package/indicators/atr.js +2 -2
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +2 -2
- package/indicators/bollinger-bands.src.js +1 -1
- package/indicators/cci.js +2 -2
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +2 -2
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +2 -2
- package/indicators/cmf.src.js +1 -1
- package/indicators/cmo.js +2 -2
- package/indicators/cmo.src.js +1 -1
- package/indicators/dema.js +2 -2
- package/indicators/dema.src.js +1 -1
- package/indicators/disparity-index.js +2 -2
- package/indicators/disparity-index.src.js +1 -1
- package/indicators/dmi.js +2 -2
- package/indicators/dmi.src.js +1 -1
- package/indicators/dpo.js +2 -2
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +2 -2
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +2 -2
- package/indicators/indicators-all.src.js +6 -1
- package/indicators/indicators.js +2 -2
- package/indicators/indicators.src.js +1 -1
- package/indicators/keltner-channels.js +2 -2
- package/indicators/keltner-channels.src.js +1 -1
- package/indicators/klinger.js +2 -2
- package/indicators/klinger.src.js +1 -1
- package/indicators/macd.js +2 -2
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +2 -2
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +2 -2
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +2 -2
- package/indicators/natr.src.js +1 -1
- package/indicators/obv.js +2 -2
- package/indicators/obv.src.js +1 -1
- package/indicators/pivot-points.js +2 -2
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +2 -2
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +2 -2
- package/indicators/price-channel.src.js +1 -1
- package/indicators/price-envelopes.js +2 -2
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +2 -2
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +2 -2
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +2 -2
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +2 -2
- package/indicators/rsi.src.js +1 -1
- package/indicators/slow-stochastic.js +2 -2
- package/indicators/slow-stochastic.src.js +1 -1
- package/indicators/stochastic.js +2 -2
- package/indicators/stochastic.src.js +1 -1
- package/indicators/supertrend.js +2 -2
- package/indicators/supertrend.src.js +1 -1
- package/indicators/tema.js +2 -2
- package/indicators/tema.src.js +1 -1
- package/indicators/trendline.js +2 -2
- package/indicators/trendline.src.js +1 -1
- package/indicators/trix.js +2 -2
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +2 -2
- package/indicators/volume-by-price.src.js +2 -1
- package/indicators/vwap.js +2 -2
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +2 -2
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +2 -2
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +2 -2
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +2 -2
- package/modules/accessibility.src.js +3 -1
- package/modules/annotations-advanced.js +3 -3
- package/modules/annotations-advanced.src.js +4 -4
- package/modules/annotations.js +2 -2
- package/modules/annotations.src.js +3 -3
- package/modules/arc-diagram.js +2 -2
- package/modules/arc-diagram.src.js +1 -1
- package/modules/arrow-symbols.js +2 -2
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.src.js +14 -11
- package/modules/boost.js +2 -2
- package/modules/boost.src.js +14 -11
- package/modules/broken-axis.js +2 -2
- package/modules/broken-axis.src.js +1 -1
- package/modules/bullet.js +2 -2
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +2 -2
- package/modules/coloraxis.src.js +1 -1
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.src.js +1 -1
- package/modules/cylinder.js +2 -2
- package/modules/cylinder.src.js +1 -1
- package/modules/data-tools.js +2 -2
- package/modules/data-tools.src.js +36 -1
- package/modules/data.js +2 -2
- package/modules/data.src.js +1 -1
- package/modules/datagrouping.js +2 -2
- package/modules/datagrouping.src.js +1 -1
- package/modules/debugger.js +2 -2
- package/modules/debugger.src.js +1 -1
- package/modules/dependency-wheel.js +2 -2
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +2 -2
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +2 -2
- package/modules/drag-panes.src.js +2 -2
- package/modules/draggable-points.js +2 -2
- package/modules/draggable-points.src.js +1 -1
- package/modules/drilldown.js +2 -2
- package/modules/drilldown.src.js +1 -1
- package/modules/dumbbell.js +2 -2
- package/modules/dumbbell.src.js +1 -1
- package/modules/export-data.js +2 -2
- package/modules/export-data.src.js +1 -1
- package/modules/exporting.js +2 -2
- package/modules/exporting.src.js +1 -1
- package/modules/flowmap.js +2 -2
- package/modules/flowmap.src.js +1 -1
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.src.js +1 -1
- package/modules/funnel.js +2 -2
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +2 -2
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +6 -6
- package/modules/gantt.src.js +82 -80
- package/modules/geoheatmap.js +2 -2
- package/modules/geoheatmap.src.js +1 -1
- package/modules/grid-axis.js +2 -2
- package/modules/grid-axis.src.js +1 -1
- package/modules/heatmap.js +3 -3
- package/modules/heatmap.src.js +2 -2
- package/modules/heikinashi.js +2 -2
- package/modules/heikinashi.src.js +1 -1
- package/modules/histogram-bellcurve.js +2 -2
- package/modules/histogram-bellcurve.src.js +1 -1
- package/modules/hollowcandlestick.js +2 -2
- package/modules/hollowcandlestick.src.js +1 -1
- package/modules/item-series.js +2 -2
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +2 -2
- package/modules/lollipop.src.js +1 -1
- package/modules/map.js +4 -4
- package/modules/map.src.js +26 -2
- package/modules/marker-clusters.js +2 -2
- package/modules/marker-clusters.src.js +1 -1
- package/modules/mouse-wheel-zoom.js +2 -2
- package/modules/mouse-wheel-zoom.src.js +1 -1
- package/modules/navigator.js +2 -2
- package/modules/navigator.src.js +1 -1
- package/modules/networkgraph.js +2 -2
- package/modules/networkgraph.src.js +1 -1
- package/modules/no-data-to-display.js +2 -2
- package/modules/no-data-to-display.src.js +1 -1
- package/modules/offline-exporting.js +2 -2
- package/modules/offline-exporting.src.js +2 -2
- package/modules/organization.js +2 -2
- package/modules/organization.src.js +4 -2
- package/modules/overlapping-datalabels.js +2 -2
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +2 -2
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +2 -2
- package/modules/pareto.src.js +1 -1
- package/modules/pathfinder.js +2 -2
- package/modules/pathfinder.src.js +1 -1
- package/modules/pattern-fill.js +2 -2
- package/modules/pattern-fill.src.js +1 -1
- package/modules/pictorial.js +2 -2
- package/modules/pictorial.src.js +1 -1
- package/modules/pointandfigure.js +2 -2
- package/modules/pointandfigure.src.js +1 -1
- package/modules/price-indicator.js +2 -2
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +2 -2
- package/modules/pyramid3d.src.js +1 -1
- package/modules/renko.js +2 -2
- package/modules/renko.src.js +1 -1
- package/modules/sankey.js +2 -2
- package/modules/sankey.src.js +1 -1
- package/modules/series-label.js +2 -2
- package/modules/series-label.src.js +8 -3
- package/modules/series-on-point.js +2 -2
- package/modules/series-on-point.src.js +1 -1
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.src.js +1 -1
- package/modules/sonification.js +2 -2
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +2 -2
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +2 -2
- package/modules/stock-tools.src.js +3 -3
- package/modules/stock.js +6 -6
- package/modules/stock.src.js +82 -80
- package/modules/streamgraph.js +2 -2
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +2 -2
- package/modules/sunburst.src.js +290 -62
- package/modules/textpath.js +2 -2
- package/modules/textpath.src.js +1 -1
- package/modules/tiledwebmap.js +3 -3
- package/modules/tiledwebmap.src.js +1 -1
- package/modules/tilemap.js +2 -2
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +2 -2
- package/modules/timeline.src.js +4 -2
- package/modules/treegraph.js +2 -2
- package/modules/treegraph.src.js +4 -2
- package/modules/treegrid.js +2 -2
- package/modules/treegrid.src.js +1 -1
- package/modules/treemap.js +2 -2
- package/modules/treemap.src.js +288 -60
- package/modules/variable-pie.js +2 -2
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +2 -2
- package/modules/variwide.src.js +1 -1
- package/modules/vector.js +2 -2
- package/modules/vector.src.js +1 -1
- package/modules/venn.js +2 -2
- package/modules/venn.src.js +1 -1
- package/modules/windbarb.js +2 -2
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +2 -2
- package/modules/wordcloud.src.js +1 -1
- package/modules/xrange.js +2 -2
- package/modules/xrange.src.js +1 -1
- package/options/treegraph.d.ts +559 -70
- package/options/treegraph.src.d.ts +559 -70
- package/options/treemap.d.ts +314 -160
- package/options/treemap.src.d.ts +314 -160
- package/options/vbp.d.ts +1 -1
- package/options/vbp.src.d.ts +1 -1
- package/package.json +1 -1
- package/standalone-navigator.js +3 -3
- package/standalone-navigator.src.js +58 -61
- package/themes/avocado.js +2 -2
- package/themes/avocado.src.js +1 -1
- package/themes/brand-dark.js +2 -2
- package/themes/brand-dark.src.js +1 -1
- package/themes/brand-light.js +2 -2
- package/themes/brand-light.src.js +1 -1
- package/themes/dark-blue.js +2 -2
- package/themes/dark-blue.src.js +1 -1
- package/themes/dark-green.js +2 -2
- package/themes/dark-green.src.js +1 -1
- package/themes/dark-unica.js +2 -2
- package/themes/dark-unica.src.js +1 -1
- package/themes/gray.js +2 -2
- package/themes/gray.src.js +1 -1
- package/themes/grid-light.js +2 -2
- package/themes/grid-light.src.js +1 -1
- package/themes/grid.js +2 -2
- package/themes/grid.src.js +1 -1
- package/themes/high-contrast-dark.js +2 -2
- package/themes/high-contrast-dark.src.js +1 -1
- package/themes/high-contrast-light.js +2 -2
- package/themes/high-contrast-light.src.js +1 -1
- package/themes/sand-signika.js +2 -2
- package/themes/sand-signika.src.js +1 -1
- package/themes/skies.js +2 -2
- package/themes/skies.src.js +1 -1
- package/themes/sunset.js +2 -2
- package/themes/sunset.src.js +1 -1
|
@@ -29,6 +29,7 @@ const { addEvent, createElement, css, defined, destroyObjectProperties, diffObje
|
|
|
29
29
|
* @function preferredInputType
|
|
30
30
|
*/
|
|
31
31
|
function preferredInputType(format) {
|
|
32
|
+
const hasTimeKey = (char) => new RegExp(`%[[a-zA-Z]*${char}`).test(format);
|
|
32
33
|
const ms = isString(format) ?
|
|
33
34
|
format.indexOf('%L') !== -1 :
|
|
34
35
|
// Implemented but not typed as of 2024
|
|
@@ -38,11 +39,10 @@ function preferredInputType(format) {
|
|
|
38
39
|
}
|
|
39
40
|
const date = isString(format) ?
|
|
40
41
|
['a', 'A', 'd', 'e', 'w', 'b', 'B', 'm', 'o', 'y', 'Y']
|
|
41
|
-
.some(
|
|
42
|
+
.some(hasTimeKey) :
|
|
42
43
|
format.dateStyle || format.day || format.month || format.year;
|
|
43
44
|
const time = isString(format) ?
|
|
44
|
-
['H', 'k', 'I', 'l', 'M', 'S']
|
|
45
|
-
.some((char) => format.indexOf('%' + char) !== -1) :
|
|
45
|
+
['H', 'k', 'I', 'l', 'M', 'S'].some(hasTimeKey) :
|
|
46
46
|
format.timeStyle || format.hour || format.minute || format.second;
|
|
47
47
|
if (date && time) {
|
|
48
48
|
return 'datetime-local';
|
|
@@ -89,6 +89,16 @@ class RangeSelector {
|
|
|
89
89
|
this.isDirty = false;
|
|
90
90
|
this.buttonOptions = RangeSelector.prototype.defaultButtons;
|
|
91
91
|
this.initialButtonGroupWidth = 0;
|
|
92
|
+
this.maxButtonWidth = () => {
|
|
93
|
+
let buttonWidth = 0;
|
|
94
|
+
this.buttons.forEach((button) => {
|
|
95
|
+
const bBox = button.getBBox();
|
|
96
|
+
if (bBox.width > buttonWidth) {
|
|
97
|
+
buttonWidth = bBox.width;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return buttonWidth;
|
|
101
|
+
};
|
|
92
102
|
this.init(chart);
|
|
93
103
|
}
|
|
94
104
|
/* *
|
|
@@ -382,9 +392,15 @@ class RangeSelector {
|
|
|
382
392
|
if (selectedIndex !== null) {
|
|
383
393
|
buttonStates[selectedIndex] = 2;
|
|
384
394
|
rangeSelector.setSelected(selectedIndex);
|
|
395
|
+
if (this.dropdown) {
|
|
396
|
+
this.dropdown.selectedIndex = selectedIndex + 1;
|
|
397
|
+
}
|
|
385
398
|
}
|
|
386
399
|
else {
|
|
387
400
|
rangeSelector.setSelected();
|
|
401
|
+
if (this.dropdown) {
|
|
402
|
+
this.dropdown.selectedIndex = -1;
|
|
403
|
+
}
|
|
388
404
|
if (dropdownLabel) {
|
|
389
405
|
dropdownLabel.setState(0);
|
|
390
406
|
dropdownLabel.attr({
|
|
@@ -1003,11 +1019,11 @@ class RangeSelector {
|
|
|
1003
1019
|
const { buttonPosition, inputPosition, verticalAlign } = options;
|
|
1004
1020
|
// Get the X offset required to avoid overlapping with the exporting
|
|
1005
1021
|
// button. This is used both by the buttonGroup and the inputGroup.
|
|
1006
|
-
const getXOffsetForExportButton = (group, position) => {
|
|
1022
|
+
const getXOffsetForExportButton = (group, position, rightAligned) => {
|
|
1007
1023
|
if (navButtonOptions &&
|
|
1008
1024
|
this.titleCollision(chart) &&
|
|
1009
1025
|
verticalAlign === 'top' &&
|
|
1010
|
-
|
|
1026
|
+
rightAligned && ((position.y -
|
|
1011
1027
|
group.getBBox().height - 12) <
|
|
1012
1028
|
((navButtonOptions.y || 0) +
|
|
1013
1029
|
(navButtonOptions.height || 0) +
|
|
@@ -1036,7 +1052,8 @@ class RangeSelector {
|
|
|
1036
1052
|
}
|
|
1037
1053
|
plotLeft -= chart.spacing[3];
|
|
1038
1054
|
// Detect collision between button group and exporting
|
|
1039
|
-
const xOffsetForExportButton = getXOffsetForExportButton(buttonGroup, buttonPosition
|
|
1055
|
+
const xOffsetForExportButton = getXOffsetForExportButton(buttonGroup, buttonPosition, buttonPosition.align === 'right' ||
|
|
1056
|
+
inputPosition.align === 'right');
|
|
1040
1057
|
this.alignButtonGroup(xOffsetForExportButton);
|
|
1041
1058
|
if (this.buttonGroup?.translateY) {
|
|
1042
1059
|
this.dropdownLabel
|
|
@@ -1048,7 +1065,8 @@ class RangeSelector {
|
|
|
1048
1065
|
let xOffsetForExportButton = 0;
|
|
1049
1066
|
if (options.inputEnabled && inputGroup) {
|
|
1050
1067
|
// Detect collision between the input group and exporting button
|
|
1051
|
-
xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition
|
|
1068
|
+
xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition, buttonPosition.align === 'right' ||
|
|
1069
|
+
inputPosition.align === 'right');
|
|
1052
1070
|
if (inputPosition.align === 'left') {
|
|
1053
1071
|
translateX = plotLeft;
|
|
1054
1072
|
}
|
|
@@ -1201,16 +1219,35 @@ class RangeSelector {
|
|
|
1201
1219
|
* @param {number} [width]
|
|
1202
1220
|
*/
|
|
1203
1221
|
alignButtonGroup(xOffsetForExportButton, width) {
|
|
1204
|
-
const { chart, options, buttonGroup } = this;
|
|
1222
|
+
const { chart, options, buttonGroup, dropdown, dropdownLabel } = this;
|
|
1205
1223
|
const { buttonPosition } = options;
|
|
1206
1224
|
const plotLeft = chart.plotLeft - chart.spacing[3];
|
|
1207
1225
|
let translateX = buttonPosition.x - chart.spacing[3];
|
|
1226
|
+
let dropdownTranslateX = chart.plotLeft;
|
|
1208
1227
|
if (buttonPosition.align === 'right') {
|
|
1209
1228
|
translateX += xOffsetForExportButton - plotLeft; // #13014
|
|
1229
|
+
if (this.hasVisibleDropdown) {
|
|
1230
|
+
dropdownTranslateX = chart.chartWidth +
|
|
1231
|
+
xOffsetForExportButton -
|
|
1232
|
+
this.maxButtonWidth() - 20;
|
|
1233
|
+
}
|
|
1210
1234
|
}
|
|
1211
1235
|
else if (buttonPosition.align === 'center') {
|
|
1212
1236
|
translateX -= plotLeft / 2;
|
|
1237
|
+
if (this.hasVisibleDropdown) {
|
|
1238
|
+
dropdownTranslateX = chart.chartWidth / 2 -
|
|
1239
|
+
this.maxButtonWidth();
|
|
1240
|
+
}
|
|
1213
1241
|
}
|
|
1242
|
+
if (dropdown) {
|
|
1243
|
+
css(dropdown, {
|
|
1244
|
+
left: dropdownTranslateX + 'px',
|
|
1245
|
+
top: buttonGroup?.translateY + 'px'
|
|
1246
|
+
});
|
|
1247
|
+
}
|
|
1248
|
+
dropdownLabel?.attr({
|
|
1249
|
+
x: dropdownTranslateX
|
|
1250
|
+
});
|
|
1214
1251
|
if (buttonGroup) {
|
|
1215
1252
|
// Align button group
|
|
1216
1253
|
buttonGroup.align({
|
|
@@ -1264,36 +1301,6 @@ class RangeSelector {
|
|
|
1264
1301
|
handleCollision(xOffsetForExportButton) {
|
|
1265
1302
|
const { chart, buttonGroup, inputGroup } = this;
|
|
1266
1303
|
const { buttonPosition, dropdown, inputPosition } = this.options;
|
|
1267
|
-
const maxButtonWidth = () => {
|
|
1268
|
-
let buttonWidth = 0;
|
|
1269
|
-
this.buttons.forEach((button) => {
|
|
1270
|
-
const bBox = button.getBBox();
|
|
1271
|
-
if (bBox.width > buttonWidth) {
|
|
1272
|
-
buttonWidth = bBox.width;
|
|
1273
|
-
}
|
|
1274
|
-
});
|
|
1275
|
-
return buttonWidth;
|
|
1276
|
-
};
|
|
1277
|
-
const groupsOverlap = (buttonGroupWidth) => {
|
|
1278
|
-
if (inputGroup?.alignOptions && buttonGroup) {
|
|
1279
|
-
const inputGroupX = (inputGroup.alignAttr.translateX +
|
|
1280
|
-
inputGroup.alignOptions.x -
|
|
1281
|
-
xOffsetForExportButton +
|
|
1282
|
-
// `getBBox` for detecing left margin
|
|
1283
|
-
inputGroup.getBBox().x +
|
|
1284
|
-
// 2px padding to not overlap input and label
|
|
1285
|
-
2);
|
|
1286
|
-
const inputGroupWidth = inputGroup.alignOptions.width || 0;
|
|
1287
|
-
const buttonGroupX = buttonGroup.alignAttr.translateX +
|
|
1288
|
-
buttonGroup.getBBox().x;
|
|
1289
|
-
return (buttonGroupX + buttonGroupWidth > inputGroupX) &&
|
|
1290
|
-
(inputGroupX + inputGroupWidth > buttonGroupX) &&
|
|
1291
|
-
(buttonPosition.y <
|
|
1292
|
-
(inputPosition.y +
|
|
1293
|
-
inputGroup.getBBox().height));
|
|
1294
|
-
}
|
|
1295
|
-
return false;
|
|
1296
|
-
};
|
|
1297
1304
|
const moveInputsDown = () => {
|
|
1298
1305
|
if (inputGroup && buttonGroup) {
|
|
1299
1306
|
inputGroup.attr({
|
|
@@ -1305,47 +1312,43 @@ class RangeSelector {
|
|
|
1305
1312
|
});
|
|
1306
1313
|
}
|
|
1307
1314
|
};
|
|
1308
|
-
if (buttonGroup) {
|
|
1309
|
-
if (dropdown === 'always') {
|
|
1310
|
-
this.collapseButtons();
|
|
1311
|
-
if (groupsOverlap(maxButtonWidth())) {
|
|
1312
|
-
// Move the inputs down if there is still a collision
|
|
1313
|
-
// after collapsing the buttons
|
|
1314
|
-
moveInputsDown();
|
|
1315
|
-
}
|
|
1316
|
-
return;
|
|
1317
|
-
}
|
|
1318
|
-
if (dropdown === 'never') {
|
|
1319
|
-
this.expandButtons();
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
1315
|
// Detect collision
|
|
1323
1316
|
if (inputGroup && buttonGroup) {
|
|
1324
|
-
if (
|
|
1325
|
-
|
|
1326
|
-
|
|
1317
|
+
if (inputPosition.align === buttonPosition.align) {
|
|
1318
|
+
moveInputsDown();
|
|
1319
|
+
if (this.initialButtonGroupWidth >
|
|
1320
|
+
chart.plotWidth + xOffsetForExportButton - 20) {
|
|
1321
|
+
this.collapseButtons();
|
|
1322
|
+
}
|
|
1323
|
+
else {
|
|
1324
|
+
this.expandButtons();
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
else if (this.initialButtonGroupWidth -
|
|
1328
|
+
xOffsetForExportButton +
|
|
1329
|
+
inputGroup.getBBox().width >
|
|
1330
|
+
chart.plotWidth) {
|
|
1327
1331
|
if (dropdown === 'responsive') {
|
|
1328
1332
|
this.collapseButtons();
|
|
1329
|
-
if (groupsOverlap(maxButtonWidth())) {
|
|
1330
|
-
moveInputsDown();
|
|
1331
|
-
}
|
|
1332
1333
|
}
|
|
1333
1334
|
else {
|
|
1334
1335
|
moveInputsDown();
|
|
1335
1336
|
}
|
|
1336
1337
|
}
|
|
1337
|
-
else
|
|
1338
|
+
else {
|
|
1338
1339
|
this.expandButtons();
|
|
1339
1340
|
}
|
|
1340
1341
|
}
|
|
1341
|
-
|
|
1342
|
-
|
|
1342
|
+
// Forced states
|
|
1343
|
+
if (buttonGroup) {
|
|
1344
|
+
if (dropdown === 'always') {
|
|
1343
1345
|
this.collapseButtons();
|
|
1344
1346
|
}
|
|
1345
|
-
|
|
1347
|
+
if (dropdown === 'never') {
|
|
1346
1348
|
this.expandButtons();
|
|
1347
1349
|
}
|
|
1348
1350
|
}
|
|
1351
|
+
this.alignButtonGroup(xOffsetForExportButton);
|
|
1349
1352
|
}
|
|
1350
1353
|
/**
|
|
1351
1354
|
* Collapse the buttons and show the select element.
|
|
@@ -1388,17 +1391,10 @@ class RangeSelector {
|
|
|
1388
1391
|
* @function Highcharts.RangeSelector#showDropdown
|
|
1389
1392
|
*/
|
|
1390
1393
|
showDropdown() {
|
|
1391
|
-
const { buttonGroup,
|
|
1394
|
+
const { buttonGroup, dropdownLabel, dropdown } = this;
|
|
1392
1395
|
if (buttonGroup && dropdown) {
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
.attr({ x: left, y: top })
|
|
1396
|
-
.show();
|
|
1397
|
-
css(dropdown, {
|
|
1398
|
-
left: left + 'px',
|
|
1399
|
-
top: top + 'px',
|
|
1400
|
-
visibility: 'inherit'
|
|
1401
|
-
});
|
|
1396
|
+
dropdownLabel.show();
|
|
1397
|
+
css(dropdown, { visibility: 'inherit' });
|
|
1402
1398
|
this.hasVisibleDropdown = true;
|
|
1403
1399
|
}
|
|
1404
1400
|
}
|
|
@@ -440,8 +440,11 @@ const rangeSelector = {
|
|
|
440
440
|
* The alignment of the input box. Allowed properties are `left`,
|
|
441
441
|
* `center`, `right`.
|
|
442
442
|
*
|
|
443
|
-
* @sample {highstock} stock/rangeselector/input-button-
|
|
444
|
-
*
|
|
443
|
+
* @sample {highstock} stock/rangeselector/input-button-opposite-alignment/
|
|
444
|
+
* Opposite alignment
|
|
445
|
+
*
|
|
446
|
+
* @sample {highstock} stock/rangeselector/input-button-same-alignment/
|
|
447
|
+
* Same alignment for buttons and input
|
|
445
448
|
*
|
|
446
449
|
* @type {Highcharts.AlignValue}
|
|
447
450
|
* @since 6.0.0
|
|
@@ -481,8 +484,11 @@ const rangeSelector = {
|
|
|
481
484
|
* The alignment of the input box. Allowed properties are `left`,
|
|
482
485
|
* `center`, `right`.
|
|
483
486
|
*
|
|
484
|
-
* @sample {highstock} stock/rangeselector/input-button-
|
|
485
|
-
*
|
|
487
|
+
* @sample {highstock} stock/rangeselector/input-button-opposite-alignment/
|
|
488
|
+
* Opposite alignment
|
|
489
|
+
*
|
|
490
|
+
* @sample {highstock} stock/rangeselector/input-button-same-alignment/
|
|
491
|
+
* Same alignment for buttons and input
|
|
486
492
|
*
|
|
487
493
|
* @type {Highcharts.AlignValue}
|
|
488
494
|
* @since 6.0.0
|
|
@@ -60,4 +60,8 @@ import '../../Stock/Indicators/LinearRegressionAngle/LinearRegressionAngleIndica
|
|
|
60
60
|
import '../../Stock/Indicators/ABands/ABandsIndicator.js';
|
|
61
61
|
import '../../Stock/Indicators/TrendLine/TrendLineIndicator.js';
|
|
62
62
|
import '../../Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js';
|
|
63
|
+
import MultipleLinesComposition from '../../Stock/Indicators/MultipleLinesComposition.js';
|
|
64
|
+
const G = Highcharts;
|
|
65
|
+
G.MultipleLinesComposition =
|
|
66
|
+
G.MultipleLinesComposition || MultipleLinesComposition;
|
|
63
67
|
export default Highcharts;
|