Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. import React, {useState, useEffect} from 'react';
  2.  
  3. function Popup() {
  4. const [opened, setOpened] = useState(false);
  5.  
  6. let wrapperRef;
  7.  
  8. function toggleButton() {
  9. setOpened(!opened);
  10. }
  11.  
  12. function handleClickOutside(event) {
  13. if (wrapperRef && !wrapperRef.contains(event.target)) {
  14. setOpened(false);
  15. }
  16. }
  17.  
  18. function setWrapperRef(node) {
  19. wrapperRef = node;
  20. }
  21.  
  22. useEffect(
  23. () => {
  24. document.addEventListener('mousedown', handleClickOutside);
  25. return () => {
  26. document.removeEventListener('mousedown', handleClickOutside);
  27. }
  28. }
  29. );
  30.  
  31. const isOpened = opened ? '' : 'hide';
  32. return (
  33. <div ref={setWrapperRef}>
  34. <button onClick={toggleButton}>Toggle modal</button>
  35. <div className={'modal modal-hook ' + isOpened}>
  36. <h2>Opened hook based modal</h2>
  37. </div>
  38. </div>
  39. );
  40. }
  41.  
  42. export default Popup;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement