From 8c5de23609d58932a9cf8ee9222dceafe2b3914b Mon Sep 17 00:00:00 2001 From: gomezshui Date: Tue, 8 Mar 2022 20:10:49 +0800 Subject: [PATCH] fix: fix(toast): resolve issue #232 fix #232 --- example/pages/dialog/dialog.ts | 30 ++++++++++++++++++++++++++++++ src/dialog/index.ts | 25 +++++++++++++++++++++---- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/example/pages/dialog/dialog.ts b/example/pages/dialog/dialog.ts index 4c11dbb64..6058de3ba 100644 --- a/example/pages/dialog/dialog.ts +++ b/example/pages/dialog/dialog.ts @@ -94,6 +94,19 @@ Page({ }, ], }, + { + title: '命令调用', + btns: [ + { + type: 'commandWithCancel', + text: '带取消按钮', + }, + { + type: 'command', + text: '无取消按钮', + }, + ], + }, ], }, @@ -205,6 +218,23 @@ Page({ }); return; } + case 'commandWithCancel': { + Dialog.confirm({ + title: '弹窗标题', + content: '告知当前状态、信息和解决方法等内容。', + confirmBtn: '确认按钮', + cancelBtn: '取消按钮', + }); + return; + } + case 'command': { + Dialog.confirm({ + title: '弹窗标题', + content: '告知当前状态、信息和解决方法等内容。', + confirmBtn: '确认按钮', + }); + return; + } default: { Dialog.alert({ title: `未知key: ${key}`, diff --git a/src/dialog/index.ts b/src/dialog/index.ts index aab2e081f..1dbeba364 100644 --- a/src/dialog/index.ts +++ b/src/dialog/index.ts @@ -1,3 +1,5 @@ +import props from './props'; + type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance; interface DialogAlertOptionsType { @@ -9,6 +11,8 @@ interface DialogAlertOptionsType { asyncClose?: boolean; confirmButtonText?: string; textAlign?: string; + cancelBtn?: string | object; + confirmBtn?: string | object; } interface DialogComfirmOptionsType extends DialogAlertOptionsType { @@ -32,6 +36,19 @@ interface DialogActionOptionsType { buttonLayout?: 'vertical' | 'horizontal'; // 多按钮排列方式,可选值:horizontal/vertical。 } +const defaultOptions = { + actions: false, + buttonLayout: props.buttonLayout.value, + cancelBtn: props.cancelBtn.value, + closeOnOverlayClick: props.closeOnOverlayClick.value, + confirmBtn: props.confirmBtn.value, + content: '', + preventScrollThrough: props.preventScrollThrough.value, + showOverlay: props.showOverlay.value, + title: '', + visible: props.visible.value, +}; + const getDialogInstance = function (context?: Context, selector = '#t-dialog') { if (!context) { const pages = getCurrentPages(); @@ -48,7 +65,7 @@ const getDialogInstance = function (context?: Context, selector = '#t-dialog') { export default { alert(options: DialogAlertOptionsType) { - const { context, selector, ...otherOptions } = options; + const { context, selector, ...otherOptions } = { ...defaultOptions, ...options }; const instance = getDialogInstance(context, selector); if (!instance) return Promise.reject(); @@ -62,7 +79,7 @@ export default { }); }, confirm(options: DialogComfirmOptionsType) { - const { context, selector, ...otherOptions } = options; + const { context, selector, ...otherOptions } = { ...defaultOptions, ...options }; const instance = getDialogInstance(context, selector); if (!instance) return Promise.reject(); @@ -84,10 +101,10 @@ export default { return Promise.reject(); }, action(options: DialogActionOptionsType): Promise<{ index: number }> { - const { context, selector, actions, ...otherOptions } = options; + const { context, selector, actions, ...otherOptions } = { ...defaultOptions, ...options }; const instance = getDialogInstance(context, selector); if (!instance) return Promise.reject(); - if (!actions || actions.length === 0 || actions.length > 7) { + if (!actions || (typeof actions === 'object' && (actions.length === 0 || actions.length > 7))) { console.warn('action 数量建议控制在1至7个'); }