weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
71 lines (57 loc) • 1.46 kB
JSX
/** @jsx createElement */
;
import { createElement, findDOMNode, render } from 'rax';
import dom from 'nuke-dom';
import Dialog from './dialog';
const noop = () => {};
let dialogInstance = null;
let container = null;
export function show(options = {}, onConfirm, onCancel, onShow, onFail) {
onConfirm = onConfirm || noop;
onShow = onShow || noop;
onFail = onFail || noop;
onCancel = onCancel || noop;
const { duration, maskClosable, contentStyle, onMaskPress, type, locale, ...others } = options;
const attrs = {
duration,
maskClosable,
contentStyle,
onShow,
onFail,
onMaskPress,
type,
};
if (locale) {
attrs.locale = locale;
}
const dialog = <Dialog {...others} {...attrs} />;
if (options.container) {
container = findDOMNode(options.container);
}
if (!container) {
container = dom.createEle('div', { t: 'id', abc: '_nuke_wrap' });
document.body.appendChild(container);
}
render(dialog, container, function () {
dialogInstance = this;
dialogInstance.wrappedInstance.show();
});
}
export function hide() {
dialogInstance.wrappedInstance.hide();
}
export function confirm(options = {}, callback) {
show({
maskClosable: false,
...options,
showCancelButton: true,
showConfirmButton: true,
});
}
export function alert(options = {}, callback) {
show({
maskClosable: false,
...options,
showConfirmButton: true,
});
}