highcharts-rails 6.0.2 → 6.0.3

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/CCBYNC-LICENSE +103 -0
  3. data/CHANGELOG.markdown +31 -0
  4. data/Highsoft-LICENSE +1 -0
  5. data/{LICENSE → MIT-LICENSE} +0 -0
  6. data/README.markdown +6 -6
  7. data/app/assets/javascripts/highcharts.js +1635 -498
  8. data/app/assets/javascripts/highcharts/highcharts-3d.js +1 -1
  9. data/app/assets/javascripts/highcharts/highcharts-more.js +2 -2
  10. data/app/assets/javascripts/highcharts/modules/accessibility.js +1072 -824
  11. data/app/assets/javascripts/highcharts/modules/annotations.js +1 -1
  12. data/app/assets/javascripts/highcharts/modules/boost-canvas.js +3 -13
  13. data/app/assets/javascripts/highcharts/modules/boost.js +29 -13
  14. data/app/assets/javascripts/highcharts/modules/broken-axis.js +1 -1
  15. data/app/assets/javascripts/highcharts/modules/bullet.js +1 -1
  16. data/app/assets/javascripts/highcharts/modules/data.js +6 -6
  17. data/app/assets/javascripts/highcharts/modules/drag-panes.js +1 -1
  18. data/app/assets/javascripts/highcharts/modules/drilldown.js +1 -1
  19. data/app/assets/javascripts/highcharts/modules/export-data.js +10 -12
  20. data/app/assets/javascripts/highcharts/modules/exporting.js +1 -1
  21. data/app/assets/javascripts/highcharts/modules/funnel.js +1 -1
  22. data/app/assets/javascripts/highcharts/modules/gantt.js +26 -78
  23. data/app/assets/javascripts/highcharts/modules/grid-axis.js +1 -1
  24. data/app/assets/javascripts/highcharts/modules/heatmap.js +1 -1
  25. data/app/assets/javascripts/highcharts/modules/histogram-bellcurve.js +1 -1
  26. data/app/assets/javascripts/highcharts/modules/item-series.js +1 -1
  27. data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +6 -15
  28. data/app/assets/javascripts/highcharts/modules/offline-exporting.js +2 -2
  29. data/app/assets/javascripts/highcharts/modules/oldie.js +2 -2
  30. data/app/assets/javascripts/highcharts/modules/overlapping-datalabels.js +41 -47
  31. data/app/assets/javascripts/highcharts/modules/parallel-coordinates.js +10 -6
  32. data/app/assets/javascripts/highcharts/modules/pareto.js +9 -1
  33. data/app/assets/javascripts/highcharts/modules/sankey.js +1 -1
  34. data/app/assets/javascripts/highcharts/modules/series-label.js +1 -1
  35. data/app/assets/javascripts/highcharts/modules/solid-gauge.js +1 -1
  36. data/app/assets/javascripts/highcharts/modules/static-scale.js +2 -6
  37. data/app/assets/javascripts/highcharts/modules/stock.js +96 -30
  38. data/app/assets/javascripts/highcharts/modules/streamgraph.js +1 -1
  39. data/app/assets/javascripts/highcharts/modules/sunburst.js +82 -50
  40. data/app/assets/javascripts/highcharts/modules/tilemap.js +1 -1
  41. data/app/assets/javascripts/highcharts/modules/treemap.js +10 -2
  42. data/app/assets/javascripts/highcharts/modules/variable-pie.js +1 -1
  43. data/app/assets/javascripts/highcharts/modules/variwide.js +1 -1
  44. data/app/assets/javascripts/highcharts/modules/vector.js +1 -1
  45. data/app/assets/javascripts/highcharts/modules/windbarb.js +1 -1
  46. data/app/assets/javascripts/highcharts/modules/wordcloud.js +7 -3
  47. data/app/assets/javascripts/highcharts/modules/xrange.js +24 -76
  48. data/app/assets/javascripts/highcharts/themes/avocado.js +1 -1
  49. data/app/assets/javascripts/highcharts/themes/dark-blue.js +1 -1
  50. data/app/assets/javascripts/highcharts/themes/dark-green.js +1 -1
  51. data/app/assets/javascripts/highcharts/themes/dark-unica.js +1 -1
  52. data/app/assets/javascripts/highcharts/themes/gray.js +1 -1
  53. data/app/assets/javascripts/highcharts/themes/grid-light.js +1 -1
  54. data/app/assets/javascripts/highcharts/themes/grid.js +1 -1
  55. data/app/assets/javascripts/highcharts/themes/sand-signika.js +1 -1
  56. data/app/assets/javascripts/highcharts/themes/skies.js +1 -1
  57. data/app/assets/javascripts/highcharts/themes/sunset.js +1 -1
  58. data/highcharts-rails.gemspec +1 -0
  59. data/lib/highcharts/version.rb +1 -1
  60. metadata +9 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Client side exporting module
4
4
  *
5
5
  * (c) 2015 Torstein Honsi / Oystein Moseng
@@ -637,7 +637,7 @@
637
637
 
638
638
  // Extend the default options to use the local exporter logic
639
639
  merge(true, Highcharts.getOptions().exporting, {
640
- libURL: 'https://code.highcharts.com/6.0.2/lib/',
640
+ libURL: 'https://code.highcharts.com/6.0.3/lib/',
641
641
 
642
642
  // When offline-exporting is loaded, redefine the menu item definitions
643
643
  // related to download.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Old IE (v6, v7, v8) module for Highcharts v6+.
4
4
  *
5
5
  * (c) 2010-2017 Highsoft AS
@@ -69,7 +69,7 @@
69
69
  * @since 2.3.0
70
70
  */
71
71
  H.getOptions().global.VMLRadialGradientURL =
72
- 'http://code.highcharts.com/6.0.2/gfx/vml-radial-gradient.png';
72
+ 'http://code.highcharts.com/6.0.3/gfx/vml-radial-gradient.png';
73
73
 
74
74
 
75
75
  // Utilites
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * (c) 2009-2017 Torstein Honsi
5
5
  *
@@ -32,57 +32,51 @@
32
32
  // Collect potensial overlapping data labels. Stack labels probably don't need
33
33
  // to be considered because they are usually accompanied by data labels that lie
34
34
  // inside the columns.
35
- Chart.prototype.callbacks.push(function(chart) {
36
- function collectAndHide() {
37
- var labels = [];
35
+ addEvent(Chart.prototype, 'render', function collectAndHide() {
36
+ var labels = [];
38
37
 
39
- // Consider external label collectors
40
- each(chart.labelCollectors || [], function(collector) {
41
- labels = labels.concat(collector());
42
- });
38
+ // Consider external label collectors
39
+ each(this.labelCollectors || [], function(collector) {
40
+ labels = labels.concat(collector());
41
+ });
43
42
 
44
- each(chart.yAxis || [], function(yAxis) {
45
- if (
46
- yAxis.options.stackLabels &&
47
- !yAxis.options.stackLabels.allowOverlap
48
- ) {
49
- objectEach(yAxis.stacks, function(stack) {
50
- objectEach(stack, function(stackItem) {
51
- labels.push(stackItem.label);
52
- });
43
+ each(this.yAxis || [], function(yAxis) {
44
+ if (
45
+ yAxis.options.stackLabels &&
46
+ !yAxis.options.stackLabels.allowOverlap
47
+ ) {
48
+ objectEach(yAxis.stacks, function(stack) {
49
+ objectEach(stack, function(stackItem) {
50
+ labels.push(stackItem.label);
53
51
  });
54
- }
55
- });
56
-
57
- each(chart.series || [], function(series) {
58
- var dlOptions = series.options.dataLabels,
59
- // Range series have two collections
60
- collections = series.dataLabelCollections || ['dataLabel'];
52
+ });
53
+ }
54
+ });
61
55
 
62
- if (
63
- (dlOptions.enabled || series._hasPointLabels) &&
64
- !dlOptions.allowOverlap &&
65
- series.visible
66
- ) { // #3866
67
- each(collections, function(coll) {
68
- each(series.points, function(point) {
69
- if (point[coll]) {
70
- point[coll].labelrank = pick(
71
- point.labelrank,
72
- point.shapeArgs && point.shapeArgs.height
73
- ); // #4118
74
- labels.push(point[coll]);
75
- }
76
- });
56
+ each(this.series || [], function(series) {
57
+ var dlOptions = series.options.dataLabels,
58
+ // Range series have two collections
59
+ collections = series.dataLabelCollections || ['dataLabel'];
60
+
61
+ if (
62
+ (dlOptions.enabled || series._hasPointLabels) &&
63
+ !dlOptions.allowOverlap &&
64
+ series.visible
65
+ ) { // #3866
66
+ each(collections, function(coll) {
67
+ each(series.points, function(point) {
68
+ if (point[coll]) {
69
+ point[coll].labelrank = pick(
70
+ point.labelrank,
71
+ point.shapeArgs && point.shapeArgs.height
72
+ ); // #4118
73
+ labels.push(point[coll]);
74
+ }
77
75
  });
78
- }
79
- });
80
- chart.hideOverlappingLabels(labels);
81
- }
82
-
83
- // Do it on render and after each chart redraw
84
- addEvent(chart, 'render', collectAndHide);
85
-
76
+ });
77
+ }
78
+ });
79
+ this.hideOverlappingLabels(labels);
86
80
  });
87
81
 
88
82
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * Support for parallel coordinates in Highcharts
5
5
  *
@@ -137,7 +137,7 @@
137
137
  /**
138
138
  * Initialize parallelCoordinates
139
139
  */
140
- wrap(ChartProto, 'init', function(proceed, options) {
140
+ wrap(ChartProto, 'init', function(proceed, options, callback) {
141
141
  var defaultyAxis = splat(options.yAxis || {}),
142
142
  yAxisLength = defaultyAxis.length,
143
143
  newYAxes = [];
@@ -186,7 +186,7 @@
186
186
  );
187
187
  }
188
188
 
189
- return proceed.call(this, options);
189
+ return proceed.call(this, options, callback);
190
190
  });
191
191
 
192
192
  /**
@@ -294,7 +294,7 @@
294
294
  * - using series.points instead of series.yData
295
295
  */
296
296
  wrap(AxisProto, 'getSeriesExtremes', function(proceed) {
297
- if (this.chart.hasParallelCoordinates && !this.isXAxis) {
297
+ if (this.chart && this.chart.hasParallelCoordinates && !this.isXAxis) {
298
298
  var index = this.parallelPosition,
299
299
  currentPoints = [];
300
300
  each(this.series, function(series) {
@@ -415,14 +415,18 @@
415
415
  });
416
416
 
417
417
  function addFormattedValue(proceed) {
418
- var chart = this.series.chart,
418
+ var chart = this.series && this.series.chart,
419
419
  config = proceed.apply(this, Array.prototype.slice.call(arguments, 1)),
420
420
  formattedValue,
421
421
  yAxisOptions,
422
422
  labelFormat,
423
423
  yAxis;
424
424
 
425
- if (chart.hasParallelCoordinates && !defined(config.formattedValue)) {
425
+ if (
426
+ chart &&
427
+ chart.hasParallelCoordinates &&
428
+ !defined(config.formattedValue)
429
+ ) {
426
430
  yAxis = chart.yAxis[this.x];
427
431
  yAxisOptions = yAxis.options;
428
432
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * Pareto series type for Highcharts
5
5
  *
@@ -259,6 +259,14 @@
259
259
  * @apioption series.pareto
260
260
  */
261
261
 
262
+ /**
263
+ * An integer identifying the index to use for the base series, or a string
264
+ * representing the id of the series.
265
+ *
266
+ * @type {Number|String}
267
+ * @default undefined
268
+ * @apioption series.pareto.baseSeries
269
+ */
262
270
 
263
271
  /**
264
272
  * An array of data points for the series. For the `pareto` series type,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Sankey diagram module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  *
4
4
  * (c) 2009-2017 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Solid angular gauge module
4
4
  *
5
5
  * (c) 2010-2017 Torstein Honsi
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * StaticScale
4
4
  *
5
5
  * (c) 2016 Torstein Honsi, Lars A. V. Cabrera
@@ -58,11 +58,7 @@
58
58
  });
59
59
  this.initiatedScale = true;
60
60
  };
61
- Chart.prototype.callbacks.push(function(chart) {
62
- H.addEvent(this, 'render', function() {
63
- chart.adjustHeight();
64
- });
65
- });
61
+ H.addEvent(Chart.prototype, 'render', Chart.prototype.adjustHeight);
66
62
 
67
63
  }(Highcharts));
68
64
  }));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v6.0.2 (2017-10-20)
2
+ * @license Highcharts JS v6.0.3 (2017-11-14)
3
3
  * Highstock as a plugin for Highcharts
4
4
  *
5
5
  * (c) 2017 Torstein Honsi
@@ -678,7 +678,7 @@
678
678
  if (!this.options.breaks) {
679
679
  ret = tickInterval / (ordinalSlope / this.closestPointRange);
680
680
  } else {
681
- ret = this.closestPointRange;
681
+ ret = this.closestPointRange || tickInterval; // #7275
682
682
  }
683
683
  } else {
684
684
  ret = tickInterval;
@@ -1569,7 +1569,9 @@
1569
1569
  ret.push(approximations.average(arr));
1570
1570
  });
1571
1571
 
1572
- return ret;
1572
+ // Return undefined when first elem. is undefined and let
1573
+ // sum method handle null (#7377)
1574
+ return ret[0] === undefined ? undefined : ret;
1573
1575
  },
1574
1576
  open: function(arr) {
1575
1577
  return arr.length ? arr[0] : (arr.hasNulls ? null : undefined);
@@ -1752,7 +1754,9 @@
1752
1754
  pick(dataGroupingOptions.enabled, chart.options.isStock),
1753
1755
  visible = series.visible || !chart.options.chart.ignoreHiddenSeries,
1754
1756
  hasGroupedData,
1755
- skip;
1757
+ skip,
1758
+ lastDataGrouping = this.currentDataGrouping,
1759
+ currentDataGrouping;
1756
1760
 
1757
1761
  // run base method
1758
1762
  series.forceCrop = groupingEnabled; // #334
@@ -1808,7 +1812,7 @@
1808
1812
  }
1809
1813
 
1810
1814
  // record what data grouping values were used
1811
- series.currentDataGrouping = groupPositions.info;
1815
+ currentDataGrouping = groupPositions.info;
1812
1816
  series.closestPointRange = groupPositions.info.totalRange;
1813
1817
  series.groupMap = groupedData[2];
1814
1818
 
@@ -1825,9 +1829,14 @@
1825
1829
  series.processedXData = groupedXData;
1826
1830
  series.processedYData = groupedYData;
1827
1831
  } else {
1828
- series.currentDataGrouping = series.groupMap = null;
1832
+ series.groupMap = null;
1829
1833
  }
1830
1834
  series.hasGroupedData = hasGroupedData;
1835
+ series.currentDataGrouping = currentDataGrouping;
1836
+
1837
+ series.preventGraphAnimation =
1838
+ (lastDataGrouping && lastDataGrouping.totalRange) !==
1839
+ (currentDataGrouping && currentDataGrouping.totalRange);
1831
1840
  }
1832
1841
  };
1833
1842
 
@@ -3165,10 +3174,11 @@
3165
3174
  point,
3166
3175
  graphic,
3167
3176
  stackIndex,
3168
- anchorX,
3169
3177
  anchorY,
3170
3178
  outsideRight,
3171
- yAxis = series.yAxis;
3179
+ yAxis = series.yAxis,
3180
+ boxesMap = {},
3181
+ boxes = [];
3172
3182
 
3173
3183
  i = points.length;
3174
3184
  while (i--) {
@@ -3182,7 +3192,7 @@
3182
3192
  if (plotY !== undefined) {
3183
3193
  plotY = point.plotY + optionsY - (stackIndex !== undefined && stackIndex * options.stackDistance);
3184
3194
  }
3185
- anchorX = stackIndex ? undefined : point.plotX; // skip connectors for higher level stacked points
3195
+ point.anchorX = stackIndex ? undefined : point.plotX; // skip connectors for higher level stacked points
3186
3196
  anchorY = stackIndex ? undefined : point.plotY;
3187
3197
 
3188
3198
  graphic = point.graphic;
@@ -3222,6 +3232,7 @@
3222
3232
 
3223
3233
  graphic.shadow(options.shadow);
3224
3234
 
3235
+ graphic.isNew = true;
3225
3236
  }
3226
3237
 
3227
3238
  if (plotX > 0) { // #3119
@@ -3230,13 +3241,27 @@
3230
3241
 
3231
3242
  // Plant the flag
3232
3243
  graphic.attr({
3233
- text: point.options.title || options.title || 'A',
3234
- x: plotX,
3244
+ text: point.options.title || options.title || 'A'
3245
+ })[graphic.isNew ? 'attr' : 'animate']({
3235
3246
  y: plotY,
3236
- anchorX: anchorX,
3237
3247
  anchorY: anchorY
3238
3248
  });
3239
3249
 
3250
+ // Rig for the distribute function
3251
+ if (!boxesMap[point.plotX]) {
3252
+ boxesMap[point.plotX] = {
3253
+ align: 0,
3254
+ size: graphic.width,
3255
+ target: plotX,
3256
+ anchorX: plotX
3257
+ };
3258
+ } else {
3259
+ boxesMap[point.plotX].size = Math.max(
3260
+ boxesMap[point.plotX].size,
3261
+ graphic.width
3262
+ );
3263
+ }
3264
+
3240
3265
  // Set the tooltip anchor position
3241
3266
  point.tooltipPos = chart.inverted ? [yAxis.len + yAxis.pos - chart.plotLeft - plotY, series.xAxis.len - plotX] : [plotX, plotY + yAxis.pos - chart.plotTop]; // #6327
3242
3267
 
@@ -3246,6 +3271,24 @@
3246
3271
 
3247
3272
  }
3248
3273
 
3274
+ H.objectEach(boxesMap, function(box) {
3275
+ box.plotX = box.anchorX;
3276
+ boxes.push(box);
3277
+ });
3278
+
3279
+ H.distribute(boxes, this.xAxis.len);
3280
+
3281
+ each(points, function(point) {
3282
+ var box = point.graphic && boxesMap[point.plotX];
3283
+ if (box) {
3284
+ point.graphic[point.graphic.isNew ? 'attr' : 'animate']({
3285
+ x: box.pos,
3286
+ anchorX: point.anchorX
3287
+ });
3288
+ point.graphic.isNew = false;
3289
+ }
3290
+ });
3291
+
3249
3292
  // Might be a mix of SVG and HTML and we need events for both (#6303)
3250
3293
  if (options.useHTML) {
3251
3294
  H.wrap(series.markerGroup, 'on', function(proceed) {
@@ -3307,15 +3350,17 @@
3307
3350
  var anchorX = (options && options.anchorX) || x,
3308
3351
  anchorY = (options && options.anchorY) || y;
3309
3352
 
3310
- return [
3311
- 'M', anchorX, anchorY,
3312
- 'L', x, y + h,
3313
- x, y,
3314
- x + w, y,
3315
- x + w, y + h,
3316
- x, y + h,
3317
- 'Z'
3318
- ];
3353
+ return symbols.circle(anchorX - 1, anchorY - 1, 2, 2).concat(
3354
+ [
3355
+ 'M', anchorX, anchorY,
3356
+ 'L', x, y + h,
3357
+ x, y,
3358
+ x + w, y,
3359
+ x + w, y + h,
3360
+ x, y + h,
3361
+ 'Z'
3362
+ ]
3363
+ );
3319
3364
  };
3320
3365
 
3321
3366
  // create the circlepin and squarepin icons with anchor
@@ -3339,7 +3384,17 @@
3339
3384
  // if the label is below the anchor, draw the connecting line from the top edge of the label
3340
3385
  // otherwise start drawing from the bottom edge
3341
3386
  labelTopOrBottomY = (y > anchorY) ? y : y + h;
3342
- path.push('M', anchorX, labelTopOrBottomY, 'L', anchorX, anchorY);
3387
+ path.push(
3388
+ 'M',
3389
+ shape === 'circle' ? path[1] - path[4] : path[1] + path[4] / 2,
3390
+ labelTopOrBottomY,
3391
+ 'L',
3392
+ anchorX,
3393
+ anchorY
3394
+ );
3395
+ path = path.concat(
3396
+ symbols.circle(anchorX - 1, anchorY - 1, 2, 2)
3397
+ );
3343
3398
  }
3344
3399
 
3345
3400
  return path;
@@ -5162,6 +5217,7 @@
5162
5217
  * @param {Number} pxMax Pixel value maximum
5163
5218
  */
5164
5219
  render: function(min, max, pxMin, pxMax) {
5220
+
5165
5221
  var navigator = this,
5166
5222
  chart = navigator.chart,
5167
5223
  navigatorWidth,
@@ -5194,7 +5250,7 @@
5194
5250
  // it. For example hidden series, but visible navigator (#6022).
5195
5251
  if (rendered) {
5196
5252
  pxMin = 0;
5197
- pxMax = xAxis.width;
5253
+ pxMax = pick(xAxis.width, scrollbarXAxis.width);
5198
5254
  } else {
5199
5255
  return;
5200
5256
  }
@@ -6109,14 +6165,14 @@
6109
6165
 
6110
6166
  each(baseSeries, function(base) {
6111
6167
  // Link base series show/hide to navigator series visibility
6112
- addEvent(base, 'show', function(e) {
6168
+ addEvent(base, 'show', function() {
6113
6169
  if (this.navigatorSeries) {
6114
- this.navigatorSeries.setVisible(true, e.redraw);
6170
+ this.navigatorSeries.setVisible(true, false);
6115
6171
  }
6116
6172
  });
6117
- addEvent(base, 'hide', function(e) {
6173
+ addEvent(base, 'hide', function() {
6118
6174
  if (this.navigatorSeries) {
6119
- this.navigatorSeries.setVisible(false, e.redraw);
6175
+ this.navigatorSeries.setVisible(false, false);
6120
6176
  }
6121
6177
  });
6122
6178
 
@@ -6352,8 +6408,11 @@
6352
6408
  ret = false;
6353
6409
 
6354
6410
  // For xy zooming, record the state of the zoom before zoom selection,
6355
- // then when the reset button is pressed, revert to this state
6356
- } else if (zoomType === 'xy') {
6411
+ // then when the reset button is pressed, revert to this state. This
6412
+ // should apply only if the chart is initialized with a range (#6612),
6413
+ // otherwise zoom all the way out.
6414
+ } else if (zoomType === 'xy' && this.options.range) {
6415
+
6357
6416
  previousZoom = this.previousZoom;
6358
6417
  if (defined(newMin)) {
6359
6418
  this.previousZoom = [this.min, this.max];
@@ -7295,7 +7354,7 @@
7295
7354
  textAlign: 'center',
7296
7355
  fontSize: chartStyle.fontSize,
7297
7356
  fontFamily: chartStyle.fontFamily,
7298
- left: '-9em' // #4798
7357
+ top: '-9999em' // #4798
7299
7358
  }, options.inputStyle));
7300
7359
 
7301
7360
 
@@ -8171,7 +8230,14 @@
8171
8230
  y: -2
8172
8231
  },
8173
8232
  opposite: opposite,
8233
+
8234
+ /**
8235
+ * @default {highcharts} true
8236
+ * @default {highstock} false
8237
+ * @apioption yAxis.showLastLabel
8238
+ */
8174
8239
  showLastLabel: false,
8240
+
8175
8241
  title: {
8176
8242
  text: null
8177
8243
  }