1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- let queue = [];
- const defaultOptions = {
- show: false,
- title: '',
- width: null,
- theme: 'default',
- message: '',
- zIndex: 100,
- overlay: true,
- selector: '#van-dialog',
- className: '',
- asyncClose: false,
- beforeClose: null,
- transition: 'scale',
- customStyle: '',
- messageAlign: '',
- overlayStyle: '',
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- showConfirmButton: true,
- showCancelButton: false,
- closeOnClickOverlay: false,
- confirmButtonOpenType: '',
- };
- let currentOptions = Object.assign({}, defaultOptions);
- function getContext() {
- const pages = getCurrentPages();
- return pages[pages.length - 1];
- }
- const Dialog = (options) => {
- options = Object.assign(Object.assign({}, currentOptions), options);
- return new Promise((resolve, reject) => {
- const context = (typeof options.context === 'function'
- ? options.context()
- : options.context) || getContext();
- const dialog = context.selectComponent(options.selector);
- delete options.context;
- delete options.selector;
- if (dialog) {
- dialog.setData(Object.assign({ callback: (action, instance) => {
- action === 'confirm' ? resolve(instance) : reject(instance);
- } }, options));
- wx.nextTick(() => {
- dialog.setData({ show: true });
- });
- queue.push(dialog);
- }
- else {
- console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确');
- }
- });
- };
- Dialog.alert = (options) => Dialog(options);
- Dialog.confirm = (options) => Dialog(Object.assign({ showCancelButton: true }, options));
- Dialog.close = () => {
- queue.forEach((dialog) => {
- dialog.close();
- });
- queue = [];
- };
- Dialog.stopLoading = () => {
- queue.forEach((dialog) => {
- dialog.stopLoading();
- });
- };
- Dialog.currentOptions = currentOptions;
- Dialog.defaultOptions = defaultOptions;
- Dialog.setDefaultOptions = (options) => {
- currentOptions = Object.assign(Object.assign({}, currentOptions), options);
- Dialog.currentOptions = currentOptions;
- };
- Dialog.resetDefaultOptions = () => {
- currentOptions = Object.assign({}, defaultOptions);
- Dialog.currentOptions = currentOptions;
- };
- Dialog.resetDefaultOptions();
- export default Dialog;
|