Close Collection Share dropdown when clicking outside of it
This commit is contained in:
		
							parent
							
								
									7ae02beb2d
								
							
						
					
					
						commit
						36f7be60da
					
				
					 1 changed files with 27 additions and 4 deletions
				
			
		|  | @ -1,6 +1,6 @@ | |||
| import format from 'date-fns/format'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import React from 'react'; | ||||
| import React, { useState, useRef, useEffect } from 'react'; | ||||
| import { Helmet } from 'react-helmet'; | ||||
| import InlineSVG from 'react-inlinesvg'; | ||||
| import { connect } from 'react-redux'; | ||||
|  | @ -27,11 +27,34 @@ const arrowDown = require('../../../images/sort-arrow-down.svg'); | |||
| const removeIcon = require('../../../images/close.svg'); | ||||
| 
 | ||||
| const ShareURL = ({ value }) => { | ||||
|   const [showURL, setShowURL] = React.useState(false); | ||||
|   const [showURL, setShowURL] = useState(false); | ||||
|   const node = useRef(); | ||||
| 
 | ||||
|   const handleClickOutside = (e) => { | ||||
|     if (node.current.contains(e.target)) { | ||||
|       return; | ||||
|     } | ||||
|     setShowURL(false); | ||||
|   }; | ||||
| 
 | ||||
|   useEffect(() => { | ||||
|     if (showURL) { | ||||
|       document.addEventListener('mousedown', handleClickOutside); | ||||
|     } else { | ||||
|       document.removeEventListener('mousedown', handleClickOutside); | ||||
|     } | ||||
| 
 | ||||
|     return () => { | ||||
|       document.removeEventListener('mousedown', handleClickOutside); | ||||
|     }; | ||||
|   }, [showURL]); | ||||
| 
 | ||||
|   return ( | ||||
|     <div className="collection-share"> | ||||
|       <button className="collection-share__button" onClick={() => setShowURL(!showURL)}> | ||||
|     <div className="collection-share" ref={node}> | ||||
|       <button | ||||
|         className="collection-share__button" | ||||
|         onClick={() => setShowURL(!showURL)} | ||||
|       > | ||||
|         <span>Share</span> | ||||
|         <InlineSVG className="collection-share__arrow" src={dropdownArrow} /> | ||||
|       </button> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Cassie Tarakajian
						Cassie Tarakajian