40 lines
851 B
Vue
40 lines
851 B
Vue
<script setup lang="ts">
|
|
import { useDialog, useLoadingBar, useMessage, useNotification } from 'naive-ui'
|
|
import { createTextVNode, defineComponent } from 'vue'
|
|
|
|
defineOptions({
|
|
name: 'AppProvider',
|
|
})
|
|
|
|
const ContextHolder = defineComponent({
|
|
name: 'ContextHolder',
|
|
setup() {
|
|
function register() {
|
|
window.$loadingBar = useLoadingBar()
|
|
window.$dialog = useDialog()
|
|
window.$message = useMessage()
|
|
window.$notification = useNotification()
|
|
}
|
|
|
|
register()
|
|
|
|
return () => createTextVNode()
|
|
},
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<NLoadingBarProvider>
|
|
<NDialogProvider>
|
|
<NNotificationProvider>
|
|
<NMessageProvider>
|
|
<ContextHolder />
|
|
<slot />
|
|
</NMessageProvider>
|
|
</NNotificationProvider>
|
|
</NDialogProvider>
|
|
</NLoadingBarProvider>
|
|
</template>
|
|
|
|
<style scoped></style>
|