@@ -143,10 +143,17 @@ const Tooltip = ({
143143 if ( setIsOpen ) {
144144 setIsOpen ( ! isOpen )
145145 } else if ( ! setIsOpen && isOpen === undefined ) {
146- setShow ( ( currentValue ) => ! currentValue )
146+ setShow ( true )
147147 }
148148 }
149149
150+ const handleClickOutsideAnchor = ( e : MouseEvent ) => {
151+ if ( e . target === activeAnchor . current ) {
152+ return
153+ }
154+ setShow ( false )
155+ }
156+
150157 // debounce handler to prevent call twice when
151158 // mouse enter and focus events being triggered toggether
152159 const debouncedHandleShowTooltip = debounce ( handleShowTooltip , 50 )
@@ -170,6 +177,7 @@ const Tooltip = ({
170177 const enabledEvents : { event : string ; listener : ( event ?: Event ) => void } [ ] = [ ]
171178
172179 if ( events . find ( ( event : string ) => event === 'click' ) ) {
180+ window . addEventListener ( 'click' , handleClickOutsideAnchor )
173181 enabledEvents . push ( { event : 'click' , listener : handleClickTooltipAnchor } )
174182 }
175183
@@ -189,13 +197,14 @@ const Tooltip = ({
189197 } )
190198
191199 return ( ) => {
200+ window . removeEventListener ( 'click' , handleClickOutsideAnchor )
192201 enabledEvents . forEach ( ( { event, listener } ) => {
193202 elementRefs . forEach ( ( ref ) => {
194203 ref . current ?. removeEventListener ( event , listener )
195204 } )
196205 } )
197206 }
198- } , [ anchorRefs , anchorId , events , delayHide , delayShow ] )
207+ } , [ anchorRefs , activeAnchor , anchorId , events , delayHide , delayShow ] )
199208
200209 useEffect ( ( ) => {
201210 if ( position ?. x && position ?. y ) {
0 commit comments