1 | import React from 'react';
|
2 | import ReactDOM from 'react-dom';
|
3 | import closest from '../_util/closest';
|
4 | import Modal from './Modal';
|
5 | export 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 |
|
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 |
|
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 |