index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { createApp } from 'vue'
  2. import ToastMessage from './message.vue'
  3. import vuetify from '@/plugins/vuetify'
  4. // var timeId
  5. const toastMessage = (options) => {
  6. const rootNode = document.createElement("div")
  7. document.querySelector('.v-application').appendChild(rootNode)
  8. const app = createApp(ToastMessage, options)
  9. app.use(vuetify)
  10. app.mount(rootNode)
  11. const { timeout } = options || {}
  12. // clearTimeout(timeId)
  13. setTimeout(() => {
  14. app.unmount()
  15. rootNode.remove()
  16. }, timeout || 3000)
  17. }
  18. toastMessage.success = (message, variant, timeout) => {
  19. toastMessage({ message, color: 'success', variant, timeout })
  20. }
  21. toastMessage.error = (message, variant, timeout) => {
  22. toastMessage({ message, color: 'error', variant, timeout })
  23. }
  24. toastMessage.info = (message, variant, timeout) => {
  25. toastMessage({ message, color: 'info', variant, timeout })
  26. }
  27. toastMessage.warning = (message, variant, timeout) => {
  28. toastMessage({ message, color: 'warning', variant, timeout })
  29. }
  30. toastMessage.point = (message, variant, timeout) => {
  31. toastMessage({ message, color: 'point', variant, timeout })
  32. }
  33. // 注册插件app.use()会自动执行install函数
  34. toastMessage.install = (app) => {
  35. app.config.globalProperties.Snackbar = toastMessage
  36. }
  37. export default toastMessage