UNPKG

drip-ui

Version:

Lightweight Mobile UI Components built on Vue

79 lines (66 loc) 1.64 kB
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;