@@ -53,6 +53,7 @@ class ReactTooltip extends React.Component {
5353 getContent : PropTypes . any ,
5454 afterShow : PropTypes . func ,
5555 afterHide : PropTypes . func ,
56+ overridePosition : PropTypes . func ,
5657 disable : PropTypes . bool ,
5758 scrollHide : PropTypes . bool ,
5859 resizeHide : PropTypes . bool ,
@@ -309,6 +310,10 @@ class ReactTooltip extends React.Component {
309310 let effect = switchToSolid && 'solid' || this . getEffect ( e . currentTarget )
310311 let offset = e . currentTarget . getAttribute ( 'data-offset' ) || this . props . offset || { }
311312 let result = getPosition ( e , e . currentTarget , this . tooltipRef , desiredPlace , desiredPlace , effect , offset )
313+ if ( result . position && this . props . overridePosition ) {
314+ result . position = this . props . overridePosition ( result . position , e . currentTarget , this . tooltipRef , desiredPlace , desiredPlace , effect , offset )
315+ }
316+
312317 let place = result . isNewState ? result . newState . place : desiredPlace
313318
314319 // To prevent previously created timers from triggering
@@ -480,7 +485,10 @@ class ReactTooltip extends React.Component {
480485 updatePosition ( ) {
481486 const { currentEvent, currentTarget, place, desiredPlace, effect, offset} = this . state
482487 const node = this . tooltipRef
483- const result = getPosition ( currentEvent , currentTarget , node , place , desiredPlace , effect , offset )
488+ let result = getPosition ( currentEvent , currentTarget , node , place , desiredPlace , effect , offset )
489+ if ( result . position && this . props . overridePosition ) {
490+ result . position = this . props . overridePosition ( result . position , currentEvent , currentTarget , node , place , desiredPlace , effect , offset )
491+ }
484492
485493 if ( result . isNewState ) {
486494 // Switch to reverse placement
0 commit comments