toast.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
  2. import { isObj } from '../common/utils';
  3. var defaultOptions = {
  4. type: 'text',
  5. mask: false,
  6. message: '',
  7. show: true,
  8. zIndex: 1000,
  9. duration: 3000,
  10. position: 'middle',
  11. forbidClick: false,
  12. loadingType: 'circular',
  13. selector: '#van-toast'
  14. };
  15. var queue = [];
  16. var currentOptions = _extends({}, defaultOptions);
  17. function parseOptions(message) {
  18. return isObj(message) ? message : {
  19. message: message
  20. };
  21. }
  22. function getContext() {
  23. var pages = getCurrentPages();
  24. return pages[pages.length - 1];
  25. }
  26. var Toast = function Toast(options) {
  27. if (options === void 0) {
  28. options = {};
  29. }
  30. options = _extends({}, currentOptions, parseOptions(options));
  31. var context = options.context || getContext();
  32. var toast = context.selectComponent(options.selector);
  33. if (!toast) {
  34. console.warn('未找到 van-toast 节点,请确认 selector 及 context 是否正确');
  35. return;
  36. }
  37. delete options.context;
  38. delete options.selector;
  39. queue.push(toast);
  40. toast.set(options);
  41. clearTimeout(toast.timer);
  42. if (options.duration > 0) {
  43. toast.timer = setTimeout(function () {
  44. toast.clear();
  45. queue = queue.filter(function (item) {
  46. return item !== toast;
  47. });
  48. }, options.duration);
  49. }
  50. return toast;
  51. };
  52. var createMethod = function createMethod(type) {
  53. return function (options) {
  54. return Toast(_extends({
  55. type: type
  56. }, parseOptions(options)));
  57. };
  58. };
  59. ['loading', 'success', 'fail'].forEach(function (method) {
  60. Toast[method] = createMethod(method);
  61. });
  62. Toast.clear = function () {
  63. queue.forEach(function (toast) {
  64. toast.clear();
  65. });
  66. queue = [];
  67. };
  68. Toast.setDefaultOptions = function (options) {
  69. Object.assign(currentOptions, options);
  70. };
  71. Toast.resetDefaultOptions = function () {
  72. currentOptions = _extends({}, defaultOptions);
  73. };
  74. export default Toast;