song-ui-u
Version:
vue3 + js的PC前端组件库
1 lines • 4.89 kB
Source Map (JSON)
{"version":3,"file":"method.mjs","sources":["../../../../../packages/components/message/src/method.js"],"sourcesContent":["import { createVNode, render } from 'vue'\nimport { types } from '@ui-library/utils'\nimport MessageNode from \"./message.vue\"\nimport { messageInstances } from \"./instance\"\n// 主题类型\nconst messageTheme = ['info', 'success', 'warning', 'error']\n/** 默认属性 */\nconst messageDefaults = {\n type: 'info',\n content: '',\n offset: 16,\n duration: 3000,\n onClose: null,\n onUnmount: null,\n showClose: false\n}\n/** id */\nlet onlyId = 0;\n\n/** 初始化配置 */\nconst initOptions = (params) => {\n // message类型:string,vnode\n const options = !params || types().isString(params) ? { message: params } : params\n // 配置\n const config = {\n ...messageDefaults,\n ...options\n }\n return config\n}\n\nconst createMessage = (options = {}) => {\n const container = document.createElement('div');\n const appendTo = document.body;\n // id 唯一值\n const id = `message_${onlyId++}`\n // 提供自定义关闭动作回调\n const userOnClose = options.onClose\n const vnode = createVNode(\n MessageNode, \n {\n ...options,\n id,\n onClose(){\n userOnClose?.()\n closeMessage(instance)\n },\n onUnmount(){\n render(null, container);\n }\n }\n )\n // 渲染组件到 container 上\n render(vnode, container);\n // 添加 container 到 body\n appendTo.appendChild(container.firstElementChild);\n // 获取组件对象\n const vm = vnode.component\n const instance = {\n id,\n vnode,\n vm,\n handler: {\n close: () => {\n vm.setupState.visible = false\n }\n },\n props: vm.props,\n }\n return instance\n}\n\n\nconst closeMessage = (instance) => {\n const idx = messageInstances.indexOf(instance)\n if (idx === -1) return\n messageInstances.splice(idx, 1)\n instance?.handler.close()\n}\n\n/** \n * 关闭所有\n */\nexport function closeAll() {\n for (const instance of messageInstances) {\n instance.handler.close()\n }\n}\n\nconst message = (params = {}) => {\n const normalized = initOptions(params)\n const message = createMessage(normalized)\n messageInstances.push(message)\n}\n\nmessageTheme.forEach(theme => {\n message[theme] = (options = {}) => {\n const config = initOptions(options)\n return message({...config, type: theme})\n }\n})\n\nmessage.closeAll = closeAll\n\nexport default message;"],"names":["message"],"mappings":"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"}