chore: split app to commons and web (squash commit)
This commit is contained in:
56
packages/hoppscotch-common/src/modules/loadingbar.ts
Normal file
56
packages/hoppscotch-common/src/modules/loadingbar.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { HoppModule } from "."
|
||||
import NProgress from "nprogress"
|
||||
|
||||
let deferedProgressHandle: ReturnType<typeof setTimeout> | null = null
|
||||
|
||||
/**
|
||||
* Starts animating the global progress bar
|
||||
* @param deferTime How much time to defer the global progress bar rendering to
|
||||
*/
|
||||
export const startPageProgress = (deferTime?: number) => {
|
||||
if (deferedProgressHandle) clearTimeout(deferedProgressHandle)
|
||||
|
||||
// If deferTime is specified, queue it
|
||||
if (deferTime !== undefined) {
|
||||
deferedProgressHandle = setTimeout(() => {
|
||||
NProgress.start()
|
||||
}, deferTime)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
NProgress.start()
|
||||
}
|
||||
|
||||
export const completePageProgress = () => {
|
||||
if (deferedProgressHandle) {
|
||||
clearTimeout(deferedProgressHandle)
|
||||
deferedProgressHandle = null
|
||||
}
|
||||
|
||||
NProgress.done()
|
||||
}
|
||||
|
||||
export const removePageProgress = () => {
|
||||
if (deferedProgressHandle) {
|
||||
clearTimeout(deferedProgressHandle)
|
||||
deferedProgressHandle = null
|
||||
}
|
||||
|
||||
NProgress.remove()
|
||||
}
|
||||
|
||||
export default <HoppModule>{
|
||||
onVueAppInit() {
|
||||
NProgress.configure({ showSpinner: false })
|
||||
},
|
||||
onBeforeRouteChange(to, from) {
|
||||
// Show progressbar on page change
|
||||
if (to.path !== from.path) {
|
||||
startPageProgress(500)
|
||||
}
|
||||
},
|
||||
onAfterRouteChange() {
|
||||
completePageProgress()
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user