UNPKG

ych-pumpkin

Version:
87 lines (85 loc) 2.38 kB
import React, { Component } from 'react'; /* eslint-disable */ import ReactDOM from 'react-dom'; /* eslint-disable */ import TemplateOne from './templates/templateOne'; import TemplateTwo from './templates/templateTwo'; import './index.less'; // modal 弹窗组件 export default class Modal extends Component { constructor(props) { super(props); this.state = { }; } // 操作modal方法集合 static modalFun = () => { const div = document.createElement('div'); div.className = 'pandora-modal-page'; // 打开modal function open(parameter) { const { customDom, zzcClick, cancelFun, title, confirmFun, templateType, cancelName, confirmName, } = parameter; document.body.appendChild(div); ReactDOM.render(<Modal customDom={customDom} zzcClick={zzcClick} title={title || '默认标题'} templateType={templateType || 1} cancelFun={cancelFun || Modal.modalFun().close} confirmFun={confirmFun || Modal.modalFun().close} cancelName={cancelName || '取消'} confirmName={confirmName || '确定'} />, div); } // 删除modal function close() { const pandoraModalPage = document.getElementsByClassName('pandora-modal-page'); const pandoraModal = document.getElementsByClassName('pandora-modal'); pandoraModal[0].className = 'pandora-modal fade-out'; setTimeout(() => { pandoraModalPage[0].remove(); }, 300); } return { open, close }; } // close close=() => { if (this.props.zzcClick) { Modal.modalFun().close(); } } templateFun=() => { const { customDom, templateType, title, cancelFun, confirmFun, cancelName, confirmName, } = this.props; if (customDom) { return customDom; } if (templateType === 1) { return (<TemplateOne title={title} cancelFun={cancelFun} confirmFun={confirmFun} cancelName={cancelName} confirmName={confirmName} />); } return (<TemplateTwo title={title} confirmFun={confirmFun} confirmName={confirmName} />); } render() { return ( <div className="pandora-modal"> <div className="zzc" onClick={this.close} /> <div className="content"> { this.templateFun()} </div> </div> ); } }