Skip to content

Commit 531fe79

Browse files
committed
unified hover: honor hoverlabel.bordercolor, then legend.bordercolor
1 parent 76a0488 commit 531fe79

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/components/fx/hover.js

+1
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,7 @@ function createHoverText(hoverData, opts, gd) {
992992
title: {text: t0, font: fullLayout.hoverlabel.font},
993993
font: fullLayout.hoverlabel.font,
994994
bgcolor: fullLayout.hoverlabel.bgcolor || fullLayout.paper_bgcolor,
995+
bordercolor: fullLayout.hoverlabel.bordercolor,
995996
borderwidth: 1,
996997
tracegroupgap: 7,
997998
traceorder: fullLayout.legend ? fullLayout.legend.traceorder : undefined,

src/components/fx/hoverlabel_defaults.js

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts
1717
// In unified hover, inherit from legend if available
1818
if(contIn && isUnifiedHover(contIn.hovermode)) {
1919
if(!opts.bgcolor && contIn.legend) opts.bgcolor = contIn.legend.bgcolor;
20+
if(!opts.bordercolor && contIn.legend) opts.bordercolor = contIn.legend.bordercolor;
2021
// Merge in decreasing order of importance layout.font, layout.legend.font and hoverlabel.font
2122
opts.font = Lib.extendFlat({}, contIn.font, contIn.legend ? contIn.legend.font : {}, opts.font);
2223
}

test/jasmine/tests/hover_label_test.js

+17-12
Original file line numberDiff line numberDiff line change
@@ -4014,10 +4014,11 @@ describe('hovermode: (x|y)unified', function() {
40144014
});
40154015
}
40164016

4017-
function assertBgcolor(color) {
4017+
function assertRectColor(color, bordercolor) {
40184018
var hover = getHoverLabel();
40194019
var bg = hover.select('rect.bg');
4020-
expect(bg.node().style.fill).toBe(color);
4020+
if(color) expect(bg.node().style.fill).toBe(color);
4021+
if(bordercolor) expect(bg.node().style.stroke).toBe(bordercolor);
40214022
}
40224023

40234024
function assertSymbol(exp) {
@@ -4329,7 +4330,7 @@ describe('hovermode: (x|y)unified', function() {
43294330
.then(done);
43304331
});
43314332

4332-
it('label should have color of hoverlabel.bgcolor or legend.bgcolor or paper_bgcolor', function(done) {
4333+
it('label should have bgcolor/bordercolor from hoverlabel or legend or paper_bgcolor', function(done) {
43334334
var mockCopy = Lib.extendDeep({}, mock);
43344335
var bgcolor = [
43354336
'rgb(10, 10, 10)',
@@ -4342,49 +4343,53 @@ describe('hovermode: (x|y)unified', function() {
43424343
.then(function(gd) {
43434344
_hover(gd, { xval: 3 });
43444345

4345-
assertBgcolor('rgb(255, 255, 255)');
4346+
assertRectColor('rgb(255, 255, 255)', 'rgb(68, 68, 68)');
43464347

43474348
// Set paper_bgcolor
43484349
return Plotly.relayout(gd, 'paper_bgcolor', bgcolor[0]);
43494350
})
43504351
.then(function(gd) {
43514352
_hover(gd, { xval: 3 });
43524353

4353-
assertBgcolor(bgcolor[0]);
4354+
assertRectColor(bgcolor[0]);
43544355

43554356
// Set legend.bgcolor which should win over paper_bgcolor
43564357
return Plotly.relayout(gd, {
43574358
'showlegend': true,
4358-
'legend.bgcolor': bgcolor[1]
4359+
'legend.bgcolor': bgcolor[1],
4360+
'legend.bordercolor': bgcolor[1]
43594361
});
43604362
})
43614363
.then(function(gd) {
43624364
_hover(gd, { xval: 3 });
43634365

4364-
assertBgcolor(bgcolor[1]);
4366+
assertRectColor(bgcolor[1], bgcolor[1]);
43654367

43664368
// Set hoverlabel.bgcolor which should win over legend.bgcolor
4367-
return Plotly.relayout(gd, 'hoverlabel.bgcolor', bgcolor[2]);
4369+
return Plotly.relayout(gd, {
4370+
'hoverlabel.bgcolor': bgcolor[2],
4371+
'hoverlabel.bordercolor': bgcolor[2]
4372+
});
43684373
})
43694374
.then(function(gd) {
43704375
_hover(gd, { xval: 3 });
43714376

4372-
assertBgcolor(bgcolor[2]);
4377+
assertRectColor(bgcolor[2], bgcolor[2]);
43734378

43744379
// Finally, check that a hoverlabel.bgcolor defined in template wins
43754380
delete mockCopy.layout;
43764381
mockCopy.layout = {
43774382
hovermode: 'x unified',
4378-
template: { layout: { hoverlabel: { bgcolor: bgcolor[3] } } },
4379-
legend: { bgcolor: bgcolor[1] }
4383+
template: { layout: { hoverlabel: { bgcolor: bgcolor[3], bordercolor: bgcolor[3] } } },
4384+
legend: { bgcolor: bgcolor[1], bordercolor: bgcolor[1] }
43804385
};
43814386

43824387
return Plotly.newPlot(gd, mockCopy);
43834388
})
43844389
.then(function(gd) {
43854390
_hover(gd, { xval: 3 });
43864391

4387-
assertBgcolor(bgcolor[3]);
4392+
assertRectColor(bgcolor[3], bgcolor[3]);
43884393
})
43894394
.catch(failTest)
43904395
.then(done);

0 commit comments

Comments
 (0)