UNPKG

tdesign-mobile-vue

Version:
1 lines 5.86 kB
{"version":3,"file":"plugin.mjs","sources":["../../src/toast/plugin.ts"],"sourcesContent":["import { createApp, App, DefineComponent } from 'vue';\nimport isObject from 'lodash/isObject';\nimport vueToast from './toast';\nimport { ToastOptions } from './type';\nimport { WithInstallType, isBrowser } from '../shared';\nimport { getAttach } from '../shared/dom';\n\nexport type ToastProps = ToastOptions;\n\nlet instance: any = null;\nlet app: App<Element>;\n\n/** 展示提示 */\nfunction Toast(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 if (instance) {\n instance.clear();\n }\n\n instance = vueToast;\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\nToast.clear = () => {\n if (instance) {\n instance.clear();\n }\n};\n\n(['loading', 'success', 'error'] as ToastOptions['theme'][]).forEach((type): void => {\n if (!type) {\n return;\n }\n Toast[type] = (options: ToastOptions | string) => {\n let props = { message: '', theme: type } as unknown as ToastOptions;\n\n if (typeof options === 'string') {\n props.message = options;\n } else {\n props = { ...props, ...options };\n }\n\n return Toast(props);\n };\n});\n\nfunction parseOptions(message?: Partial<ToastOptions> | string) {\n if (typeof message === 'string') {\n return { message };\n }\n return message;\n}\n\nToast.install = (app: App) => {\n // 添加插件入口\n // eslint-disable-next-line no-param-reassign\n app.config.globalProperties.$toast = Toast as any;\n};\n\ntype ToastApi = {\n /** 展示提示 */\n (options?: Partial<ToastOptions> | string): void;\n /** 展示加载提示 */\n loading: (options?: Partial<ToastOptions> | string) => void;\n /** 展示成功提示 */\n success: (options?: Partial<ToastOptions> | string) => void;\n /** 展示失败提示 */\n error: (options?: Partial<ToastOptions> | string) => void;\n /** 关闭提示 */\n clear: () => void;\n};\n\nexport const ToastPlugin: WithInstallType<typeof vueToast> & ToastApi = Toast as any;\nexport default ToastPlugin;\n\ndeclare module '@vue/runtime-core' {\n // Bind to `this` keyword\n export interface ComponentCustomProperties {\n $toast: ToastApi;\n }\n}\n"],"names":["instance","app","Toast","props","isBrowser","root","document","createElement","container","getAttach","isObject","attach","appendChild","console","error","propsObject","_objectSpread","duration","parseOptions","clear","vueToast","clearTimeout","timer","unmount","remove","onClose","setTimeout","onDestroy","createApp","mount","forEach","type","options","message","theme","install","config","globalProperties","$toast","ToastPlugin"],"mappings":"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"}