You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							2.2 KiB
						
					
					
				
								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 = 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;
							 |