zent
Version:
一套前端设计语言和基于React的实现
74 lines (50 loc) • 2.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports['default'] = openDialog;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _noop = require('zent-utils/lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _isBrowser = require('zent-utils/isBrowser');
var _isBrowser2 = _interopRequireDefault(_isBrowser);
var _Dialog = require('./Dialog');
var _Dialog2 = _interopRequireDefault(_Dialog);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
打开一个dialog,返回值是一个用来关闭dialog的函数。
**/
function openDialog() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (!_isBrowser2['default']) return _noop2['default'];
var oldOnClose = options.onClose,
ref = options.ref;
var container = document.createElement('div');
// 确保多次调用closeDialog不会报错
var closeDialog = function closeDialog(evt) {
if (!container) {
return;
}
if (evt !== false && oldOnClose) {
oldOnClose(evt);
}
_reactDom2['default'].unmountComponentAtNode(container);
container = undefined;
};
var props = _extends({}, options, {
visible: true,
onClose: closeDialog
});
// 只支持函数形式的ref
if (ref && typeof ref !== 'function') {
delete props.ref;
}
// 不要依赖render的返回值,以后可能行为会改变
_reactDom2['default'].render(_react2['default'].createElement(_Dialog2['default'], props), container);
return closeDialog;
}
module.exports = exports['default'];
;