Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. import React, { Component } from 'react';
  2.  
  3. class Popup extends Component {
  4.  
  5. constructor(props) {
  6. super(props);
  7.  
  8. this.state = {
  9. isOpened: false
  10. };
  11.  
  12. this.setWrapperRef = this.setWrapperRef.bind(this);
  13. this.handleClickOutside = this.handleClickOutside.bind(this);
  14. this.toggleButton = this.toggleButton.bind(this);
  15. }
  16.  
  17. componentDidMount() {
  18. document.addEventListener('mousedown', this.handleClickOutside);
  19. }
  20.  
  21. componentWillUnmount() {
  22. document.removeEventListener('mousedown', this.handleClickOutside);
  23. }
  24.  
  25. toggleButton() {
  26. this.setState({isOpened: !this.state.isOpened});
  27. }
  28.  
  29. setWrapperRef(node) {
  30. this.wrapperRef = node;
  31. }
  32.  
  33. handleClickOutside(event) {
  34. if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {
  35. this.setState({isOpened: false});
  36. }
  37. }
  38.  
  39. render() {
  40. const isOpened = this.state.isOpened ? '' : 'hide';
  41.  
  42. return (
  43. <div ref={this.setWrapperRef}>
  44. <button onClick={this.toggleButton}>Toggle modal</button>
  45. <div className={'modal ' + isOpened}>
  46. <h2>Opened class based modal</h2>
  47. </div>
  48. </div>
  49. );
  50. }
  51.  
  52. }
  53.  
  54. export default Popup;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement