index.js 1.15 KB
Newer Older
xuzhenghua committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
import React from 'react'
import ReactDOM from 'react-dom'
import './index.scss'
import classnames from 'classnames'

function ClosablePopup({
                         title, content, className, closable = true, close = function () {
  }
                       } = {}) {

  function unmountComponent() {
    ReactDOM.unmountComponentAtNode(div)
    if (div && div.parentNode) {
      div.parentNode.removeChild(div)
    }
  }

  function _close() {
    let _c = close()
    if (_c && _c.then) {
      _c.then(() => {
        unmountComponent()
      })
    } else {
      unmountComponent()
    }
  }


  const closablePopup = (
    <div className={'closable-popup-mask'}>
      <div className={classnames(['popup-container', className])}>
        <div className="title">{title}</div>
        <div className="content">
          {content}
        </div>
        {
          closable && <i className={'close iconfont iconiconfront-2'} onClick={_close}/>
        }
      </div>
    </div>
  )
  const div = document.createElement('div')
  document.body.appendChild(div)


  ReactDOM.render(closablePopup, div)

  return {
    close: _close
  }
}

export default ClosablePopup