UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

92 lines (87 loc) 2.23 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var types = require('../../../utils/types.cjs'); require('song-ui-pro-icon'); var message$1 = require('./message.vue.cjs'); var instance = require('./instance.cjs'); const messageTheme = ["info", "success", "warning", "error"]; const messageDefaults = { type: "info", content: "", offset: 16, duration: 3e3, onClose: null, onUnmount: null, showClose: false }; let onlyId = 0; const initOptions = (params) => { const options = !params || types.types().isString(params) ? { message: params } : params; const config = { ...messageDefaults, ...options }; return config; }; const createMessage = (options = {}) => { const container = document.createElement("div"); const appendTo = document.body; const id = `message_${onlyId++}`; const userOnClose = options.onClose; const vnode = vue.createVNode( message$1, { ...options, id, onClose() { userOnClose?.(); closeMessage(instance); }, onUnmount() { vue.render(null, container); } } ); vue.render(vnode, container); appendTo.appendChild(container.firstElementChild); const vm = vnode.component; const instance = { id, vnode, vm, handler: { close: () => { vm.setupState.visible = false; } }, props: vm.props }; return instance; }; const closeMessage = (instance$1) => { const idx = instance.messageInstances.indexOf(instance$1); if (idx === -1) return; instance.messageInstances.splice(idx, 1); instance$1?.handler.close(); }; function closeAll() { for (const instance$1 of instance.messageInstances) { instance$1.handler.close(); } } const message = (params = {}) => { const normalized = initOptions(params); const message2 = createMessage(normalized); instance.messageInstances.push(message2); }; messageTheme.forEach((theme) => { message[theme] = (options = {}) => { const config = initOptions(options); return message({ ...config, type: theme }); }; }); message.closeAll = closeAll; exports.closeAll = closeAll; exports.default = message; //# sourceMappingURL=method.cjs.map