diff --git a/src/core/core.layoutService.js b/src/core/core.layoutService.js index 5649f113dc2..df28f974eb1 100644 --- a/src/core/core.layoutService.js +++ b/src/core/core.layoutService.js @@ -194,7 +194,7 @@ module.exports = function(Chart) { minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); maxChartAreaHeight -= minSize.height; } else { - minSize = box.update(verticalBoxWidth, chartAreaHeight); + minSize = box.update(verticalBoxWidth, maxChartAreaHeight); maxChartAreaWidth -= minSize.width; } diff --git a/test/specs/core.layoutService.tests.js b/test/specs/core.layoutService.tests.js index b3d57642666..a8673971b06 100644 --- a/test/specs/core.layoutService.tests.js +++ b/test/specs/core.layoutService.tests.js @@ -550,4 +550,34 @@ describe('Test the layout service', function() { expect(isOrderCorrect).toBe(true); }); }); + + describe('box sizing', function() { + it('should correctly compute y-axis width to fit labels', function() { + var chart = window.acquireChart({ + type: 'bar', + data: { + labels: ['tick 1', 'tick 2', 'tick 3', 'tick 4', 'tick 5'], + datasets: [{ + data: [0, 2.25, 1.5, 1.25, 2.5] + }], + }, + options: { + legend: { + display: false, + }, + }, + }, { + canvas: { + height: 256, + width: 256 + } + }); + var yAxis = chart.scales['y-axis-0']; + + // issue #4441: y-axis labels partially hidden. + // minimum horizontal space required to fit labels + expect(yAxis.width).toBeCloseToPixel(33); + expect(yAxis.ticks).toEqual(['2.5', '2.0', '1.5', '1.0', '0.5', '0']); + }); + }); });