From 307113bc6b6ef9c28ed25f91c6e02f1764e8505e Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 18 Jan 2018 09:41:38 +0800 Subject: [PATCH] [Improvement] Toast: add setDefaultOptions method (#541) --- docs/markdown/en-US/dialog.md | 7 ++++--- docs/markdown/en-US/toast.md | 2 ++ docs/markdown/zh-CN/dialog.md | 7 ++++--- docs/markdown/zh-CN/toast.md | 2 ++ packages/toast/index.js | 20 +++++++++++++++++++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/docs/markdown/en-US/dialog.md b/docs/markdown/en-US/dialog.md index 350783cbb..9dd8b16fd 100644 --- a/docs/markdown/en-US/dialog.md +++ b/docs/markdown/en-US/dialog.md @@ -57,9 +57,10 @@ export default { | Name | Attribute | Return value | Description | |-----------|-----------|-----------|-------------| -| Dialog.alert | options | `Promise` | Show alert dialog | -| Dialog.confirm | options | `Promise` | Show confim dialog | -| Dialog.setDefaultOptions | options | `void` | Set default options of all dialogs | +| Dialog | `options` | `Promise` | Show dialog | +| Dialog.alert | `options` | `Promise` | Show alert dialog | +| Dialog.confirm | `options` | `Promise` | Show confim dialog | +| Dialog.setDefaultOptions | `options` | `void` | Set default options of all dialogs | | Dialog.resetDefaultOptions | - | `void` | Reset default options of all dialogs | | Dialog.close | - | `void` | Close dialog | diff --git a/docs/markdown/en-US/toast.md b/docs/markdown/en-US/toast.md index f6653c430..9a2136e50 100644 --- a/docs/markdown/en-US/toast.md +++ b/docs/markdown/en-US/toast.md @@ -70,6 +70,8 @@ export default { | Toast.loading | `options | message` | toast instance | Show loading toast | | Toast.success | `options | message` | toast instance | Show success toast | | Toast.fail | `options | message` | toast instance | Show fail toast | +| Toast.setDefaultOptions | `options` | `void` | Set default options of all toasts | +| Toast.resetDefaultOptions | - | `void` | Reset default options of all toasts | | Toast.clear | - | `void` | Close | ### Options diff --git a/docs/markdown/zh-CN/dialog.md b/docs/markdown/zh-CN/dialog.md index 4260f3b70..ce3f2b49d 100644 --- a/docs/markdown/zh-CN/dialog.md +++ b/docs/markdown/zh-CN/dialog.md @@ -57,9 +57,10 @@ export default { | 方法名 | 参数 | 返回值 | 介绍 | |-----------|-----------|-----------|-------------| -| Dialog.alert | options | `Promise` | 展示消息提示弹窗 | -| Dialog.confirm | options | `Promise` | 展示消息确认弹窗 | -| Dialog.setDefaultOptions | options | `void` | 修改默认配置,对所有 Dialog 生效 | +| Dialog | `options` | `Promise` | 展示弹窗 | +| Dialog.alert | `options` | `Promise` | 展示消息提示弹窗 | +| Dialog.confirm | `options` | `Promise` | 展示消息确认弹窗 | +| Dialog.setDefaultOptions | `options` | `void` | 修改默认配置,对所有 Dialog 生效 | | Dialog.resetDefaultOptions | - | `void` | 重置默认配置,对所有 Dialog 生效 | | Dialog.close | - | `void` | 关闭弹窗 | diff --git a/docs/markdown/zh-CN/toast.md b/docs/markdown/zh-CN/toast.md index bb07fb0e5..0134cc215 100644 --- a/docs/markdown/zh-CN/toast.md +++ b/docs/markdown/zh-CN/toast.md @@ -72,6 +72,8 @@ export default { | Toast.loading | `options | message` | toast 实例 | 展示加载提示 | | Toast.success | `options | message` | toast 实例 | 展示成功提示 | | Toast.fail | `options | message` | toast 实例 | 展示失败提示 | +| Toast.setDefaultOptions | `options` | `void` | 修改默认配置,对所有 Toast 生效 | +| Toast.resetDefaultOptions | - | `void` | 重置默认配置,对所有 Toast 生效 | | Toast.clear | - | `void` | 关闭提示 | ### Options diff --git a/packages/toast/index.js b/packages/toast/index.js index 800b021a1..6637429b4 100644 --- a/packages/toast/index.js +++ b/packages/toast/index.js @@ -15,6 +15,10 @@ const defaultOptions = { } }; +let currentDefaultOptions = { + ...defaultOptions +}; + const createInstance = () => { if (!instance) { const ToastConstructor = Vue.extend(VueToast); @@ -29,7 +33,7 @@ const Toast = (options = {}) => { createInstance(); options = typeof options === 'object' ? options : { message: options }; - options = { ...defaultOptions, ...options }; + options = { ...currentDefaultOptions, ...options }; Object.assign(instance, options); clearTimeout(instance.timer); @@ -52,10 +56,24 @@ const createMethod = type => (options = {}) => Toast({ Toast.loading = createMethod('loading'); Toast.success = createMethod('success'); Toast.fail = createMethod('fail'); + Toast.clear = () => { instance && instance.clear(); }; +Toast.setDefaultOptions = (options = {}) => { + currentDefaultOptions = { + ...currentDefaultOptions, + ...options + }; +}; + +Toast.resetDefaultOptions = () => { + currentDefaultOptions = { + ...defaultOptions + }; +}; + Vue.prototype.$toast = Toast; export default Toast;