UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

91 lines (71 loc) 1.74 kB
import _extends from "@babel/runtime/helpers/extends"; /** * @ignore - do not document. */ import React from 'react'; import ReactDOM from 'react-dom'; import Modal from './ModalBase'; import ConfirmDialog from './Confirm'; function confirm(config) { const div = document.createElement('div'); document.body.appendChild(div); function onClose(...args) { destroy(...args); } function destroy(...args) { const unmountResult = ReactDOM.unmountComponentAtNode(div); if (unmountResult && div.parentNode) { div.parentNode.removeChild(div); } const triggerCancel = args && args.length && args.some(param => param && param.triggerCancel); if (config.onCancel && triggerCancel) { config.onCancel(...args); } } function render(props) { ReactDOM.render(React.createElement(ConfirmDialog, props), div); } render(_extends({}, config, { open: true, onClose })); return { destroy: onClose }; } Modal.info = function (props) { const config = _extends({ type: 'info', okCancel: false }, props); return confirm(config); }; Modal.success = function (props) { const config = _extends({ type: 'done', okCancel: false }, props); return confirm(config); }; Modal.error = function (props) { const config = _extends({ type: 'cancel', okCancel: false }, props); return confirm(config); }; Modal.warning = Modal.warn = function (props) { const config = _extends({ type: 'error', okCancel: false }, props); return confirm(config); }; Modal.confirm = function (props) { const config = _extends({ type: 'contact_support', okCancel: true }, props); return confirm(config); }; export default Modal;