NaiveProvider.vue 985 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <script setup lang="ts">
  2. import { defineComponent, h } from 'vue'
  3. import {
  4. NDialogProvider,
  5. NLoadingBarProvider,
  6. NMessageProvider,
  7. NNotificationProvider,
  8. useDialog,
  9. useLoadingBar,
  10. useMessage,
  11. useNotification
  12. } from 'naive-ui'
  13. function registerNaiveTools() {
  14. window.$loadingBar = useLoadingBar()
  15. window.$dialog = useDialog()
  16. window.$message = useMessage()
  17. window.$notification = useNotification()
  18. }
  19. const NaiveProviderContent = defineComponent({
  20. name: 'NaiveProviderContent',
  21. setup() {
  22. registerNaiveTools()
  23. },
  24. render() {
  25. return h('div')
  26. }
  27. })
  28. </script>
  29. <template>
  30. <NLoadingBarProvider>
  31. <NDialogProvider>
  32. <NNotificationProvider>
  33. <NMessageProvider>
  34. <slot />
  35. <NaiveProviderContent />
  36. </NMessageProvider>
  37. </NNotificationProvider>
  38. </NDialogProvider>
  39. </NLoadingBarProvider>
  40. </template>