@@ -1089,39 +1089,34 @@ function createHoverText(hoverData, opts, gd) {
1089
1089
1090
1090
var legendContainer = container . select ( 'g.legend' ) ;
1091
1091
var tbb = legendContainer . node ( ) . getBoundingClientRect ( ) ;
1092
- var txWidth = tbb . width + 2 * HOVERTEXTPAD ;
1093
- var txHeight = tbb . height + 2 * HOVERTEXTPAD ;
1092
+ var tWidth = tbb . width ;
1093
+ var tHeight = tbb . height ;
1094
1094
1095
1095
var xOffset = xa . _offset ;
1096
1096
var yOffset = ya . _offset ;
1097
- lxRight += xOffset ;
1098
- lxLeft += xOffset ;
1099
- lyTop += yOffset ;
1100
- lyBottom += yOffset ;
1101
-
1102
- var lx = lxRight ;
1103
- var ly = lyTop ;
1104
-
1105
- // Change horizontal alignment to end up on screen
1106
- var anchorRightOK = lxRight + txWidth <= outerWidth ;
1107
- var anchorLeftOK = lxLeft - txWidth >= 0 ;
1108
- if ( ! anchorRightOK && anchorLeftOK ) {
1097
+ lyBottom += yOffset + HOVERTEXTPAD ;
1098
+ lxRight += xOffset + HOVERTEXTPAD ;
1099
+ lxLeft += xOffset - tWidth - HOVERTEXTPAD ;
1100
+ lyTop += yOffset - tHeight - HOVERTEXTPAD ;
1101
+
1102
+ var lx , ly ;
1103
+
1104
+ // horizontal alignment to end up on screen
1105
+ if ( lxRight + tWidth + HOVERTEXTPAD <= outerWidth && lxRight - HOVERTEXTPAD >= 0 ) {
1106
+ lx = lxRight ;
1107
+ } else if ( lxLeft + HOVERTEXTPAD <= outerWidth && lxLeft - HOVERTEXTPAD >= 0 ) {
1109
1108
lx = lxLeft ;
1110
- lx -= txWidth ;
1111
1109
} else {
1112
- lx = lxRight ;
1113
- lx += 2 * HOVERTEXTPAD ;
1110
+ lx = xOffset ;
1114
1111
}
1115
1112
1116
- // Change vertical alignement to end up on screen
1117
- var anchorBottomOK = lyBottom + txHeight <= outerHeight ;
1118
- var anchorTopOK = lyTop - txHeight >= 0 ;
1119
- if ( ! anchorTopOK && anchorBottomOK ) {
1113
+ // vertical alignement to end up on screen
1114
+ if ( lyBottom + tHeight + HOVERTEXTPAD <= outerHeight && lyBottom - HOVERTEXTPAD >= 0 ) {
1120
1115
ly = lyBottom ;
1121
- ly += 2 * HOVERTEXTPAD ;
1122
- } else {
1116
+ } else if ( lyTop + HOVERTEXTPAD <= outerHeight && lyTop - HOVERTEXTPAD >= 0 ) {
1123
1117
ly = lyTop ;
1124
- ly -= txHeight ;
1118
+ } else {
1119
+ ly = yOffset ;
1125
1120
}
1126
1121
1127
1122
legendContainer . attr ( 'transform' , strTranslate ( lx , ly ) ) ;
0 commit comments