nprogress.ts 1014 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { nextTick, unref } from 'vue'
  2. import type { NProgressOptions } from 'nprogress'
  3. import NProgress from 'nprogress'
  4. import 'nprogress/nprogress.css'
  5. import { useCssVar } from '@vueuse/core'
  6. const primaryColor = useCssVar('--el-color-primary', document.documentElement)
  7. export const useNProgress = () => {
  8. NProgress.configure({
  9. // 动画方式
  10. easing: 'ease',
  11. // 递增进度条的速度
  12. speed: 500,
  13. // 是否显示加载ico
  14. showSpinner: false,
  15. // 自动递增间隔
  16. trickleSpeed: 200,
  17. // 初始化时的最小百分比
  18. minimum: 0.3
  19. } as NProgressOptions)
  20. const initColor = async () => {
  21. await nextTick()
  22. const bar = document.getElementById('nprogress')?.getElementsByClassName('bar')[0] as ElRef
  23. if (bar && primaryColor.value) {
  24. bar.style.background = unref(primaryColor.value)
  25. }
  26. }
  27. initColor()
  28. const start = () => {
  29. NProgress.start()
  30. }
  31. const done = () => {
  32. NProgress.done()
  33. }
  34. return {
  35. start,
  36. done
  37. }
  38. }