koel/resources/assets/js/composables/useRouter.ts

30 lines
936 B
TypeScript
Raw Normal View History

2022-11-18 18:44:20 +00:00
import { RouterKey } from '@/symbols'
import { requireInjection } from '@/utils'
import Router from '@/router'
let router: Router
2022-11-18 18:44:20 +00:00
export const useRouter = () => {
router = router || requireInjection(RouterKey)
2022-11-18 18:44:20 +00:00
2022-11-18 18:56:21 +00:00
const getRouteParam = (name: string) => router.$currentRoute.value?.params?.[name]
const getCurrentScreen = () => router.$currentRoute.value?.screen
const isCurrentScreen = (...screens: ScreenName[]) => screens.includes(router.$currentRoute.value?.screen)
2022-11-18 18:56:21 +00:00
const onScreenActivated = (screen: ScreenName, cb: Closure) => {
2023-08-20 22:35:58 +00:00
isCurrentScreen(screen) && cb()
2022-11-18 18:56:21 +00:00
router.onRouteChanged(route => route.screen === screen && cb())
}
2022-11-18 18:44:20 +00:00
return {
2022-11-18 18:56:21 +00:00
getRouteParam,
getCurrentScreen,
isCurrentScreen,
onScreenActivated,
2024-01-18 11:13:05 +00:00
go: Router.go,
2022-11-18 18:44:20 +00:00
onRouteChanged: router.onRouteChanged.bind(router),
resolveRoute: router.resolve.bind(router),
triggerNotFound: router.triggerNotFound.bind(router),
2022-11-18 18:44:20 +00:00
}
}