tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.78 kB
Source Map (JSON)
{"version":3,"file":"plugin.mjs","sources":["../../src/toast/plugin.ts"],"sourcesContent":["import { createApp, App, DefineComponent } from 'vue';\nimport { isObject } from 'lodash-es';\nimport Toast from './toast';\nimport { ToastOptions } from './type';\nimport { isBrowser } from '../shared';\nimport { getAttach } from '../shared/dom';\n\nexport type ToastProps = ToastOptions;\n\nlet instance: any = null;\nlet app: App<Element>;\n\n/** 展示提示 */\nexport function ToastPlugin(props: string | Partial<ToastOptions>): DefineComponent<ToastOptions> {\n if (!isBrowser) return;\n const root = document.createElement('div');\n\n const container = getAttach(isObject(props) ? props.attach : 'body');\n if (container) {\n container.appendChild(root);\n } else {\n console.error('attach is not exist');\n }\n\n const propsObject = {\n duration: 2000,\n ...parseOptions(props),\n };\n\n instance?.clear();\n instance = Toast;\n\n instance.clear = () => {\n clearTimeout(instance.timer);\n app.unmount();\n root.remove();\n if (propsObject.onClose) {\n propsObject.onClose();\n }\n instance = null;\n };\n\n if (propsObject.duration && propsObject.duration > 0) {\n instance.timer = setTimeout(() => {\n instance.clear();\n if (propsObject.onDestroy) {\n propsObject.onDestroy();\n }\n }, propsObject.duration);\n }\n\n app = createApp(instance, { ...propsObject });\n app.mount(root);\n\n return instance;\n}\n\n/** 关闭提示 */\nToastPlugin.clear = () => instance?.clear();\n\n/** 展示失败提示 */\nToastPlugin.error = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'error' });\n\n/** 展示加载提示 */\nToastPlugin.loading = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'loading' });\n\n/** 展示警告提示 */\nToastPlugin.warning = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'warning' });\n\n/** 展示成功提示 */\nToastPlugin.success = (options: ToastOptions | string) => ToastPlugin({ ...parseOptions(options), theme: 'success' });\n\nfunction parseOptions(message?: Partial<ToastOptions> | string) {\n if (typeof message === 'string') {\n return { message };\n }\n return message;\n}\n\nToastPlugin.install = (app: App) => {\n app.config.globalProperties.$toast = ToastPlugin;\n};\n\nexport default ToastPlugin;\n\ndeclare module 'vue' {\n // Bind to `this` keyword\n export interface ComponentCustomProperties {\n $toast: typeof ToastPlugin;\n }\n}\n"],"names":["instance","app","ToastPlugin","props","_instance","isBrowser","root","document","createElement","container","getAttach","isObject","attach","appendChild","console","error","propsObject","_objectSpread","duration","parseOptions","clear","Toast","clearTimeout","timer","unmount","remove","onClose","setTimeout","onDestroy","createApp","mount","_instance2","options","theme","loading","warning","success","message","install","config","globalProperties","$toast"],"mappings":"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"}