@meve/ui
Version:
Argon design system components library
134 lines (114 loc) • 2.91 kB
JavaScript
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;