UNPKG

tdesign-mobile-vue

Version:
1 lines 8.43 kB
{"version":3,"file":"index.mjs","sources":["../../src/message/index.ts"],"sourcesContent":["import { createApp, defineComponent, ref, Ref, h, VNode, App, nextTick } from 'vue';\nimport Message from './message';\nimport { WithInstallType, isBrowser } from '../shared';\nimport { TdMessageProps, MessageThemeList } from './type';\n\nimport './style';\n\ninterface MessageActionOptionsType extends TdMessageProps {\n context?: Element;\n}\n\nconst instanceMap: Map<\n Element,\n {\n context: Element;\n visible: Ref<boolean>;\n }\n> = new Map();\n\nfunction destroy(context: Element, root: Element) {\n if (context.contains(root)) {\n context.removeChild(root);\n if (instanceMap.has(root)) {\n instanceMap.delete(root);\n }\n }\n}\n\nfunction create(props: MessageActionOptionsType): void {\n if (!isBrowser) return;\n\n const { context, ...otherOptions } = props;\n\n if (!context) {\n console.error('未找到组件, 请确认 context 是否正确');\n return;\n }\n\n const root = document.createElement('div');\n context.appendChild(root);\n const visible = ref(false);\n\n const component = defineComponent({\n render: (): VNode =>\n // @ts-ignore\n h(Message, {\n ...otherOptions,\n visible: visible.value,\n onDurationEnd: () => {\n otherOptions.onDurationEnd?.();\n visible.value = false;\n },\n onCloseBtnClick: (context: { e: MouseEvent }) => {\n otherOptions.onCloseBtnClick?.(context);\n visible.value = false;\n },\n onAfterLeave: () => {\n destroy(context, root);\n },\n }),\n });\n\n createApp(component).mount(root);\n\n instanceMap.set(root, {\n context,\n visible,\n });\n\n nextTick(() => {\n visible.value = true;\n });\n}\n\nconst defaultProps: MessageActionOptionsType = {\n align: 'left',\n closeBtn: false,\n content: '',\n duration: 3000,\n theme: 'info',\n visible: false,\n zIndex: 5000,\n context: isBrowser ? document.body : null,\n onDurationEnd: () => {},\n onCloseBtnClick: () => {},\n};\n\n(['info', 'success', 'warning', 'error'] as MessageThemeList[]).forEach((theme: MessageThemeList): void => {\n Message[theme] = (options: MessageActionOptionsType | string) => {\n let props: MessageActionOptionsType = {\n ...defaultProps,\n theme,\n };\n\n if (typeof options === 'string') {\n props.content = options;\n } else {\n props = { ...props, ...options };\n }\n\n create(props);\n };\n});\n\nMessage.closeAll = () => {\n if (instanceMap instanceof Map) {\n for (const [key, value] of instanceMap) {\n const { context, visible } = value;\n destroy(context as Element, key);\n visible.value = false;\n }\n }\n};\n\nMessage.install = (app: App, name = '') => {\n app.component(name || Message.name, Message);\n\n // 添加插件入口\n // eslint-disable-next-line no-param-reassign\n app.config.globalProperties.$message = Message as any;\n};\n\ntype MessageApi = {\n /** 展示普通消息 */\n info: (options?: MessageActionOptionsType | string) => void;\n /** 展示成功消息 */\n success: (options?: MessageActionOptionsType | string) => void;\n /** 展示警示消息 */\n warning: (options?: MessageActionOptionsType | string) => void;\n /** 展示错误消息 */\n error: (options?: MessageActionOptionsType | string) => void;\n /** 关闭全部 */\n closeAll: () => void;\n};\n\nexport const MessagePlugin: WithInstallType<typeof Message> & MessageApi = Message as any;\nexport default MessagePlugin;\n\ndeclare module 'vue' {\n // Bind to `this` keyword\n export interface ComponentCustomProperties {\n $message: MessageApi;\n }\n}\n"],"names":["instanceMap","Map","destroy","context","root","contains","removeChild","has","delete","create","props","isBrowser","otherOptions","_objectWithoutProperties","_excluded","console","error","document","createElement","appendChild","visible","ref","component","defineComponent","render","h","Message","_objectSpread","value","onDurationEnd","_otherOptions$onDurat","call","onCloseBtnClick","_otherOptions$onClose","onAfterLeave","createApp","mount","set","nextTick","defaultProps","align","closeBtn","content","duration","theme","zIndex","body","forEach","options","closeAll","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","_slicedToArray","key","err","e","f","install","app","name","arguments","length","undefined","config","globalProperties","$message","MessagePlugin"],"mappings":"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"}