@6thquake/react-material
Version:
React components that implement Google's Material Design.
91 lines (71 loc) • 1.74 kB
JavaScript
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;