UNPKG

drip-ui

Version:

Lightweight Mobile UI Components built on Vue

89 lines (71 loc) 1.98 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _vue = _interopRequireDefault(require("vue")); var _toast = _interopRequireDefault(require("./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["default"].extend(_toast["default"]); 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 = (0, _extends2["default"])({}, defaultOptions, options); (0, _extends2["default"])(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((0, _extends2["default"])({ 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; }; var _default = Toast; exports["default"] = _default;