drip-ui
Version:
Lightweight Mobile UI Components built on Vue
79 lines (66 loc) • 1.64 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import Vue from 'vue';
import VueToast from './toast';
var instance;
var defaultOptions = {
type: 'text',
message: null,
mask: false,
visible: true,
duration: 2500,
position: 'middle',
forbidClick: false,
clear: function clear() {
instance.visible = false;
}
};
var createInstance = function createInstance() {
if (!instance) {
var ToastConstructor = Vue.extend(VueToast);
instance = new ToastConstructor({
el: document.createElement('div')
});
document.body.appendChild(instance.$el);
}
};
var Toast = function Toast(options) {
if (options === void 0) {
options = {};
}
createInstance();
options = typeof options === 'object' ? options : {
message: options
};
options = _extends({}, defaultOptions, options);
_extends(instance, options);
clearTimeout(instance.timer);
if (instance.duration !== 0) {
instance.timer = setTimeout(function () {
instance.clear();
}, options.duration);
}
return instance;
};
var createMethod = function createMethod(type) {
return function (options) {
if (options === void 0) {
options = {};
}
options = typeof options === 'object' ? options : {
message: options
};
return Toast(_extends({
type: type
}, options));
};
};
Toast.loading = createMethod('loading');
Toast.success = createMethod('success');
Toast.fail = createMethod('fail');
Toast.clear = function () {
instance && instance.clear();
};
Toast.install = function (Vue) {
Vue.Toast = Vue.prototype.$toast = Toast;
};
export default Toast;