react-cqtoolbox
Version:
[![Travis][build-badge]][build] [![npm package][npm-badge]][npm] [![Coveralls][coveralls-badge]][coveralls]
176 lines (147 loc) • 4.42 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.confirmFactory = undefined;
var _jsxFileName = '/Users/chenyutian0510/Documents/dev-js/chuangqi/react-cqtoolbox/components/dialog/confirm.js';
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _index = require('./index.js');
var _index2 = _interopRequireDefault(_index);
var _font_icon = require('../font_icon');
var _font_icon2 = _interopRequireDefault(_font_icon);
var _button = require('../button');
var _button2 = _interopRequireDefault(_button);
var _theme = require('./theme.css');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var defaults = {
confirmText: '确定',
cancelText: '取消',
showCancel: false,
showConfirm: true,
className: ''
};
var factory = function factory(options) {
function confirm(config) {
var props = Object.assign({}, defaults, options, config);
var div = document.createElement('div');
document.body.appendChild(div);
var unMount = function unMount() {
var unmountResult = _reactDom2.default.unmountComponentAtNode(div);
if (unmountResult && div.parentNode) {
div.parentNode.removeChild(div);
}
};
var handleClose = function handleClose() {
unMount();
if (props.onCancel) {
props.onCancel();
}
};
var handleConfirm = function handleConfirm() {
unMount();
if (props.onConfirm) {
props.onConfirm();
}
};
var body = _react2.default.createElement(
'div',
{
__source: {
fileName: _jsxFileName,
lineNumber: 47
},
__self: this
},
_react2.default.createElement(_font_icon2.default, { className: _theme2.default.icon, value: props.iconType, __source: {
fileName: _jsxFileName,
lineNumber: 48
},
__self: this
}),
props.title && _react2.default.createElement(
'h6',
{ className: _theme2.default.title, __source: {
fileName: _jsxFileName,
lineNumber: 49
},
__self: this
},
props.title
),
props.content && _react2.default.createElement(
'p',
{ className: _theme2.default.content, __source: {
fileName: _jsxFileName,
lineNumber: 50
},
__self: this
},
props.content
)
);
var footer = _react2.default.createElement(
'div',
{ className: _theme2.default.navigation, __source: {
fileName: _jsxFileName,
lineNumber: 55
},
__self: this
},
props.showConfirm && _react2.default.createElement(_button2.default, {
raised: true,
primary: true,
onClick: handleConfirm,
className: (0, _classnames2.default)(_theme2.default.button, _theme2.default.confirmButton),
label: props.confirmText, __source: {
fileName: _jsxFileName,
lineNumber: 57
},
__self: this
}),
props.showCancel && _react2.default.createElement(_button2.default, {
onClick: handleClose,
className: (0, _classnames2.default)(_theme2.default.button),
label: props.cancelText, __source: {
fileName: _jsxFileName,
lineNumber: 65
},
__self: this
})
);
var classes = (0, _classnames2.default)(_theme2.default[props.type], props.className);
_reactDom2.default.render(_react2.default.createElement(
_index2.default,
{
className: classes,
active: true,
onEscKeyDown: handleClose,
onOverlayClick: handleClose, __source: {
fileName: _jsxFileName,
lineNumber: 75
},
__self: this
},
_react2.default.createElement(
'div',
{
__source: {
fileName: _jsxFileName,
lineNumber: 80
},
__self: this
},
body,
' ',
footer
)
), div);
}
return confirm;
};
exports.confirmFactory = factory;