@@ -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}
0 commit comments