[Improvement] Toast: add setDefaultOptions method (#541)

This commit is contained in:
neverland
2018-01-18 09:41:38 +08:00
committed by GitHub
parent b7282356ee
commit 307113bc6b
5 changed files with 31 additions and 7 deletions
+19 -1
View File
@@ -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;