UNPKG

react-cqtoolbox

Version:

[![Travis][build-badge]][build] [![npm package][npm-badge]][npm] [![Coveralls][coveralls-badge]][coveralls]

176 lines (147 loc) 4.42 kB
'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;