Skip to content

Commit 9faea16

Browse files
committed
unified hover: use hoverlabel.bgcolor or legend.bgcolor or paperbg_color
1 parent 73db02a commit 9faea16

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

src/components/fx/hover.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,7 @@ function createHoverText(hoverData, opts, gd) {
991991
legend: {
992992
title: {text: t0, font: fullLayout.font},
993993
font: fullLayout.font,
994-
bgcolor: fullLayout.paper_bgcolor,
994+
bgcolor: fullLayout.hoverlabel.bgcolor,
995995
borderwidth: 1,
996996
tracegroupgap: 7,
997997
traceorder: fullLayout.legend ? fullLayout.legend.traceorder : undefined,

src/components/fx/hoverlabel_defaults.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@
99
'use strict';
1010

1111
var Lib = require('../../lib');
12+
var isUnifiedHover = require('./helpers').isUnifiedHover;
1213

1314
module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) {
1415
opts = opts || {};
1516

17+
if(contIn && isUnifiedHover(contIn.hovermode)) {
18+
opts.bgcolor = contIn.legend ? contIn.legend.bgcolor : contIn.paper_bgcolor;
19+
}
20+
1621
coerce('hoverlabel.bgcolor', opts.bgcolor);
1722
coerce('hoverlabel.bordercolor', opts.bordercolor);
1823
coerce('hoverlabel.namelength', opts.namelength);

test/jasmine/tests/hover_label_test.js

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4316,15 +4316,56 @@ describe('hovermode: (x|y)unified', function() {
43164316
.then(done);
43174317
});
43184318

4319-
it('label should have color of paper_bgcolor', function(done) {
4319+
it('label should have color of hoverlabel.bgcolor or legend.bgcolor or paper_bgcolor', function(done) {
43204320
var mockCopy = Lib.extendDeep({}, mock);
4321-
var bgcolor = 'rgb(15, 200, 85)';
4322-
mockCopy.layout.paper_bgcolor = bgcolor;
4321+
var bgcolor = [
4322+
'rgb(10, 10, 10)',
4323+
'rgb(20, 20, 20)',
4324+
'rgb(30, 30, 30)',
4325+
'rgb(40, 40, 40)'
4326+
];
4327+
4328+
// Set paper_bgcolor
4329+
mockCopy.layout.paper_bgcolor = bgcolor[0];
43234330
Plotly.newPlot(gd, mockCopy)
43244331
.then(function(gd) {
43254332
_hover(gd, { xval: 3 });
43264333

4327-
assertBgcolor(bgcolor);
4334+
assertBgcolor(bgcolor[0]);
4335+
4336+
// Set legend.bgcolor which should win over paper_bgcolor
4337+
return Plotly.relayout(gd, {
4338+
'showlegend': true,
4339+
'legend.bgcolor': bgcolor[1]
4340+
});
4341+
})
4342+
.then(function(gd) {
4343+
_hover(gd, { xval: 3 });
4344+
4345+
assertBgcolor(bgcolor[1]);
4346+
4347+
// Set hoverlabel.bgcolor which should win over legend.bgcolor
4348+
return Plotly.relayout(gd, 'hoverlabel.bgcolor', bgcolor[2]);
4349+
})
4350+
.then(function(gd) {
4351+
_hover(gd, { xval: 3 });
4352+
4353+
assertBgcolor(bgcolor[2]);
4354+
4355+
// Finally, check that a hoverlabel.bgcolor defined in template wins
4356+
delete mockCopy.layout;
4357+
mockCopy.layout = {
4358+
hovermode: 'x unified',
4359+
template: { layout: { hoverlabel: { bgcolor: bgcolor[3] } } },
4360+
legend: { bgcolor: bgcolor[1] }
4361+
};
4362+
4363+
return Plotly.newPlot(gd, mockCopy);
4364+
})
4365+
.then(function(gd) {
4366+
_hover(gd, { xval: 3 });
4367+
4368+
assertBgcolor(bgcolor[3]);
43284369
})
43294370
.catch(failTest)
43304371
.then(done);

0 commit comments

Comments
 (0)