drip-ui
Version:
Lightweight Mobile UI Components built on Vue
89 lines (71 loc) • 1.98 kB
JavaScript
;
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;