antd-mobile
Version:
基于 React 的移动设计规范实现
111 lines (92 loc) • 3.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _react = require('react');
var React = _interopRequireWildcard(_react);
var _reactDom = require('react-dom');
var ReactDOM = _interopRequireWildcard(_reactDom);
var _rcDialog = require('rc-dialog');
var _rcDialog2 = _interopRequireDefault(_rcDialog);
var _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function create(instanceId, config, content) {
var afterClose = arguments.length <= 3 || arguments[3] === undefined ? function (x) {} : arguments[3];
var props = (0, _objectAssign2["default"])({}, {
prefixCls: 'am-popup',
animationType: 'slide-down'
}, config);
var prefixCls = props.prefixCls;
var transitionName = props.transitionName;
var maskTransitionName = props.maskTransitionName;
var _props$maskClosable = props.maskClosable;
var maskClosable = _props$maskClosable === undefined ? true : _props$maskClosable;
var animationType = props.animationType;
var div = document.createElement('div');
document.body.appendChild(div);
function close() {
if (div) {
ReactDOM.unmountComponentAtNode(div);
div.parentNode.removeChild(div);
div = null;
}
afterClose(instanceId);
}
var transName = 'am-slide-down';
if (animationType === 'slide-up') {
transName = 'am-slide-up';
}
ReactDOM.render(React.createElement(
_rcDialog2["default"],
{ prefixCls: prefixCls, visible: true, title: '', footer: '', className: prefixCls + '-' + animationType, transitionName: transitionName || transName, maskTransitionName: maskTransitionName || 'am-fade', onClose: close, maskClosable: maskClosable },
content
), div);
return {
instanceId: instanceId,
close: close
};
}
var ins = {
defaultInstance: null,
instances: []
};
var instanceId = 1;
var Popup = function Popup() {
(0, _classCallCheck3["default"])(this, Popup);
};
exports["default"] = Popup;
Popup.newInstance = function () {
var j = void 0;
return {
show: function show(content, config) {
j = create(instanceId++, config, content, function (iId) {
for (var i = 0; i < ins.instances.length; i++) {
if (ins.instances[i].instanceId === iId) {
ins.instances.splice(i, 1);
return;
}
}
});
ins.instances.push(j);
},
hide: function hide() {
j.close();
}
};
};
Popup.show = function (content, config) {
ins.defaultInstance = create('0', config, content, function (iId) {
if (iId === '0') {
ins.defaultInstance = null;
}
});
};
Popup.hide = function () {
ins.defaultInstance.close();
};
module.exports = exports['default'];
;