Skip to content

Commit ba14be2

Browse files
authored
Merge pull request #5913 from plotly/unified-hover-with-zero-outer-height
Handle case of div with zero dimension when positioning unified hover box
2 parents e10517a + 2c184fd commit ba14be2

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

draftlogs/5913_fix.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- Handle the case of div with zero (width or) height when positioning unified hover box
2+
(regression introduced in 2.3.0) [[#5913](https://github.com/plotly/plotly.js/pull/5913)]

src/components/fx/hover.js

+15-18
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,16 @@ exports.loneHover = function loneHover(hoverItems, opts) {
205205
};
206206
});
207207

208-
var container3 = d3.select(opts.container);
209-
var outerContainer3 = opts.outerContainer ? d3.select(opts.outerContainer) : container3;
208+
var rotateLabels = false;
210209

211-
var fullOpts = {
210+
var hoverLabel = createHoverText(pointsData, {
211+
gd: gd,
212212
hovermode: 'closest',
213-
rotateLabels: false,
213+
rotateLabels: rotateLabels,
214214
bgColor: opts.bgColor || Color.background,
215-
container: container3,
216-
outerContainer: outerContainer3
217-
};
218-
219-
var hoverLabel = createHoverText(pointsData, fullOpts, gd);
215+
container: d3.select(opts.container),
216+
outerContainer: opts.outerContainer || opts.container
217+
});
220218

221219
// Fix vertical overlap
222220
var tooltipSpacing = 5;
@@ -243,7 +241,7 @@ exports.loneHover = function loneHover(hoverItems, opts) {
243241

244242
var scaleX = gd._fullLayout._invScaleX;
245243
var scaleY = gd._fullLayout._invScaleY;
246-
alignHoverText(hoverLabel, fullOpts.rotateLabels, scaleX, scaleY);
244+
alignHoverText(hoverLabel, rotateLabels, scaleX, scaleY);
247245

248246
return multiHover ? hoverLabel : hoverLabel.node();
249247
};
@@ -657,7 +655,6 @@ function _hover(gd, evt, subplot, noHoverEvent) {
657655
var spikelineOpts = {
658656
fullLayout: fullLayout,
659657
container: fullLayout._hoverlayer,
660-
outerContainer: fullLayout._paperdiv,
661658
event: evt
662659
};
663660
var oldspikepoints = gd._spikepoints;
@@ -826,17 +823,16 @@ function _hover(gd, evt, subplot, noHoverEvent) {
826823
fullLayout.paper_bgcolor
827824
);
828825

829-
var labelOpts = {
826+
var hoverLabels = createHoverText(hoverData, {
827+
gd: gd,
830828
hovermode: hovermode,
831829
rotateLabels: rotateLabels,
832830
bgColor: bgColor,
833831
container: fullLayout._hoverlayer,
834-
outerContainer: fullLayout._paperdiv,
832+
outerContainer: fullLayout._paper.node(),
835833
commonLabelOpts: fullLayout.hoverlabel,
836834
hoverdistance: fullLayout.hoverdistance
837-
};
838-
839-
var hoverLabels = createHoverText(hoverData, labelOpts, gd);
835+
});
840836

841837
if(!helpers.isUnifiedHover(hovermode)) {
842838
hoverAvoidOverlaps(hoverLabels, rotateLabels ? 'xa' : 'ya', fullLayout);
@@ -874,7 +870,8 @@ function hoverDataKey(d) {
874870

875871
var EXTRA_STRING_REGEX = /<extra>([\s\S]*)<\/extra>/;
876872

877-
function createHoverText(hoverData, opts, gd) {
873+
function createHoverText(hoverData, opts) {
874+
var gd = opts.gd;
878875
var fullLayout = gd._fullLayout;
879876
var hovermode = opts.hovermode;
880877
var rotateLabels = opts.rotateLabels;
@@ -894,7 +891,7 @@ function createHoverText(hoverData, opts, gd) {
894891
var ya = c0.ya;
895892
var axLetter = hovermode.charAt(0);
896893
var t0 = c0[axLetter + 'Label'];
897-
var outerContainerBB = outerContainer.node().getBoundingClientRect();
894+
var outerContainerBB = outerContainer.getBoundingClientRect();
898895
var outerTop = outerContainerBB.top;
899896
var outerWidth = outerContainerBB.width;
900897
var outerHeight = outerContainerBB.height;

0 commit comments

Comments
 (0)