Skip to content

Commit 2eca2a6

Browse files
authored
Merge pull request #5654 from plotly/v2-modebar
Hide hover and spike modebar buttons in plotly.js v2 by default and add config options to bring them back in
2 parents 327fa92 + f4e6120 commit 2eca2a6

File tree

4 files changed

+90
-67
lines changed

4 files changed

+90
-67
lines changed

src/components/modebar/manage.js

+33-2
Original file line numberDiff line numberDiff line change
@@ -170,19 +170,50 @@ function getButtonGroups(gd) {
170170
dragModeGroup.push('select2d', 'lasso2d');
171171
}
172172

173-
// accept pre-defined buttons as string
173+
var enabledHoverGroup = [];
174+
var enableHover = function(a) {
175+
// return if already added
176+
if(enabledHoverGroup.indexOf(a) !== -1) return;
177+
// should be in hoverGroup
178+
if(hoverGroup.indexOf(a) !== -1) {
179+
enabledHoverGroup.push(a);
180+
}
181+
};
174182
if(Array.isArray(buttonsToAdd)) {
175183
var newList = [];
176184
for(var i = 0; i < buttonsToAdd.length; i++) {
177185
var b = buttonsToAdd[i];
178186
if(typeof b === 'string') {
187+
b = b.toLowerCase();
188+
179189
if(DRAW_MODES.indexOf(b) !== -1) {
190+
// accept pre-defined drag modes i.e. shape drawing features as string
180191
if(
181192
fullLayout._has('mapbox') || // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch)
182193
fullLayout._has('cartesian') // draw shapes in data coordinate
183194
) {
184195
dragModeGroup.push(b);
185196
}
197+
} else if(b === 'togglespikelines') {
198+
enableHover('toggleSpikelines');
199+
} else if(b === 'togglehover') {
200+
enableHover('toggleHover');
201+
} else if(b === 'hovercompare') {
202+
enableHover('hoverCompareCartesian');
203+
} else if(b === 'hoverclosest') {
204+
enableHover('hoverClosestCartesian');
205+
enableHover('hoverClosestGeo');
206+
enableHover('hoverClosest3d');
207+
enableHover('hoverClosestGl2d');
208+
enableHover('hoverClosestPie');
209+
} else if(b === 'v1hovermode') {
210+
enableHover('toggleHover');
211+
enableHover('hoverClosestCartesian');
212+
enableHover('hoverCompareCartesian');
213+
enableHover('hoverClosestGeo');
214+
enableHover('hoverClosest3d');
215+
enableHover('hoverClosestGl2d');
216+
enableHover('hoverClosestPie');
186217
}
187218
} else newList.push(b);
188219
}
@@ -191,7 +222,7 @@ function getButtonGroups(gd) {
191222

192223
addGroup(dragModeGroup);
193224
addGroup(zoomGroup.concat(resetGroup));
194-
addGroup(hoverGroup);
225+
addGroup(enabledHoverGroup);
195226

196227
return appendButtonsToGroups(groups, buttonsToAdd);
197228
}

test/jasmine/tests/gl3d_plot_interact_test.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,9 @@ describe('Test gl3d modebar handlers - perspective case', function() {
455455
},
456456
aspectratio: { x: 3, y: 2, z: 1 }
457457
}
458+
},
459+
config: {
460+
modeBarButtonsToAdd: ['hoverclosest']
458461
}
459462
};
460463

@@ -534,7 +537,7 @@ describe('Test gl3d modebar handlers - perspective case', function() {
534537
expect(buttonOrbit.isActive()).toBe(false);
535538
});
536539

537-
it('@gl button hoverClosest3d should update the scene hovermode and spikes', function() {
540+
it('@gl button hoverClosest should update the scene hovermode and spikes', function() {
538541
var buttonHover = selectButton(modeBar, 'hoverClosest3d');
539542

540543
assertScenes(gd._fullLayout, 'hovermode', 'closest');

0 commit comments

Comments
 (0)