UNPKG

@meve/ui

Version:

Argon design system components library

134 lines (114 loc) 2.91 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import MessageComponent from './Message'; import { mountComponent } from '../utils/components'; import { isNumber, isString } from '../utils/shared'; var instance; var unmount; var id = 0; var visibleCount = 0; var defaultMessageOptions = { type: 'success', position: 'top', content: '', duration: 3000, closeable: true, forbidClick: false, lockScroll: false }; var typeMessageOptions = { loading: {}, info: {}, warning: {}, error: {}, success: {} }; function createMessage(options) { if (!instance) { var component = mountComponent(MessageComponent, 'body'); instance = component.instance; unmount = component.unmount; } instance.$on('remove', function (id) { if (id !== options.id) { return; } options.onClose == null ? void 0 : options.onClose(); }); instance.$on('leave', function (id) { if (id !== options.id) { return; } options.onLeave == null ? void 0 : options.onLeave(); }); instance.$on('after-leave', function (id) { if (id !== options.id) { return; } options.onAfterLeave == null ? void 0 : options.onAfterLeave(); visibleCount--; if (visibleCount === 0) { umountComponent(); } }); instance.position = options.position; instance.createMessage(options); visibleCount++; } function umountComponent() { if (instance && unmount) { unmount(); instance = null; unmount = null; visibleCount = 0; id = 0; } } var Message = function Message(options) { if (isString(options) || isNumber(options)) { options = { content: String(options) }; } options = _extends({}, defaultMessageOptions, options, { id: id++ }); createMessage(options); var clear = function clear() { var _instance; return (_instance = instance) == null ? void 0 : _instance.removeMessage(options); }; return { clear: clear }; }; var messageTypes = ['loading', 'info', 'warning', 'error', 'success']; messageTypes.forEach(function (type) { Message[type] = function (options) { if (isString(options)) { options = { content: options }; } options = _extends({}, typeMessageOptions[type], options); options = _extends({}, defaultMessageOptions, options, { id: id++, type: type }); createMessage(options); var clear = function clear() { var _instance2; return (_instance2 = instance) == null ? void 0 : _instance2.removeMessage(options); }; return { clear: clear }; }; }); Message.config = function (options) { defaultMessageOptions = _extends({}, defaultMessageOptions, options); }; Message.configType = function (type, options) { typeMessageOptions[type] = _extends({}, typeMessageOptions[type], options); }; export var _MessageComponent = {}; export default Message;