UNPKG

vant

Version:

A Vue.js 2.0 Mobile UI at YouZan

122 lines (92 loc) 2.76 kB
'use strict'; exports.__esModule = true; var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _vue = require('vue'); var _vue2 = _interopRequireDefault(_vue); var _toast = require('./toast'); var _toast2 = _interopRequireDefault(_toast); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultOptions = { type: 'text', mask: false, message: '', visible: true, duration: 3000, position: 'middle', forbidClick: false }; var parseOptions = function parseOptions(message) { return (0, _utils.isObj)(message) ? message : { message: message }; }; var queue = []; var singleton = true; var currentOptions = (0, _extends3.default)({}, defaultOptions); function createInstance() { if (!queue.length || !singleton) { var toast = new (_vue2.default.extend(_toast2.default))({ el: document.createElement('div') }); document.body.appendChild(toast.$el); queue.push(toast); } return queue[queue.length - 1]; }; function Toast() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var toast = createInstance(); options = (0, _extends3.default)({}, currentOptions, parseOptions(options), { clear: function clear() { toast.visible = false; } }); (0, _assign2.default)(toast, options); clearTimeout(toast.timer); if (options.duration > 0) { toast.timer = setTimeout(function () { toast.clear(); }, options.duration); } return toast; }; var createMethod = function createMethod(type) { return function (options) { return Toast((0, _extends3.default)({ type: type }, parseOptions(options))); }; }; ['loading', 'success', 'fail'].forEach(function (method) { Toast[method] = createMethod(method); }); Toast.clear = function (all) { if (queue.length) { if (all) { queue.forEach(function (toast) { toast.clear(); }); queue = []; } else if (singleton) { queue[0].clear(); } else { queue.shift().clear(); } } }; Toast.setDefaultOptions = function (options) { (0, _assign2.default)(currentOptions, options); }; Toast.resetDefaultOptions = function () { currentOptions = (0, _extends3.default)({}, defaultOptions); }; Toast.allowMultiple = function () { var allow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; singleton = !allow; }; Toast.install = function () { _vue2.default.use(_toast2.default); }; _vue2.default.prototype.$toast = Toast; exports.default = Toast;