UNPKG

zent

Version:

一套前端设计语言和基于React的实现

74 lines (50 loc) 2.01 kB
'use strict'; 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'];