UNPKG

2.25 kBJavaScriptView Raw
1import React from 'react';
2import ReactDOM from 'react-dom';
3import closest from '../_util/closest';
4import Modal from './Modal';
5export default function alert(title, message) {
6 var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [{ text: '确定' }];
7 var platform = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'ios';
8
9 var closed = false;
10 if (!title && !message) {
11 // console.log('Must specify either an alert title, or message, or both');
12 return {
13 close: function close() {}
14 };
15 }
16 var div = document.createElement('div');
17 document.body.appendChild(div);
18 function close() {
19 ReactDOM.unmountComponentAtNode(div);
20 if (div && div.parentNode) {
21 div.parentNode.removeChild(div);
22 }
23 }
24 var footer = actions.map(function (button) {
25 // tslint:disable-next-line:only-arrow-functions
26 var orginPress = button.onPress || function () {};
27 button.onPress = function () {
28 if (closed) {
29 return;
30 }
31 var res = orginPress();
32 if (res && res.then) {
33 res.then(function () {
34 closed = true;
35 close();
36 })['catch'](function () {});
37 } else {
38 closed = true;
39 close();
40 }
41 };
42 return button;
43 });
44 var prefixCls = 'am-modal';
45 function onWrapTouchStart(e) {
46 if (!/iPhone|iPod|iPad/i.test(navigator.userAgent)) {
47 return;
48 }
49 var pNode = closest(e.currentTarget, '.' + prefixCls + '-footer');
50 if (!pNode) {
51 e.preventDefault();
52 }
53 }
54 ReactDOM.render(React.createElement(
55 Modal,
56 { visible: true, transparent: true, title: title, transitionName: 'am-zoom', closable: false, maskClosable: false, footer: footer, maskTransitionName: 'am-fade', platform: platform, wrapProps: { onTouchStart: onWrapTouchStart } },
57 React.createElement(
58 'div',
59 { className: prefixCls + '-alert-content' },
60 message
61 )
62 ), div);
63 return {
64 close: close
65 };
66}
\No newline at end of file