diff --git a/packages/vue/src/hardware-back-button.ts b/packages/vue/src/hooks.ts similarity index 64% rename from packages/vue/src/hardware-back-button.ts rename to packages/vue/src/hooks.ts index 8a1ec6a5dd..388f07f7b5 100644 --- a/packages/vue/src/hardware-back-button.ts +++ b/packages/vue/src/hooks.ts @@ -1,7 +1,12 @@ import { BackButtonEvent } from '@ionic/core'; +import { inject } from 'vue'; type Handler = (processNextHandler: () => void) => Promise | void | null; +export interface IonRouter { + canGoBack: (deep: number) => boolean; +} + export const useHardwareBackButton = (priority: number, handler: Handler) => { const callback = (ev: BackButtonEvent) => ev.detail.register(priority, handler); const unregister = () => document.removeEventListener('ionBackButton', callback); @@ -10,3 +15,11 @@ export const useHardwareBackButton = (priority: number, handler: Handler) => { return { unregister }; } + +export const useIonRouter = (): IonRouter => { + const { canGoBack } = inject('navManager') as any; + + return { + canGoBack + } as IonRouter +} diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 2d54547ac4..e4104a8b06 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -11,7 +11,7 @@ export { IonTabButton } from './components/IonTabButton'; export { IonTabs } from './components/IonTabs'; export { IonTabBar } from './components/IonTabBar'; -export { useHardwareBackButton } from './hardware-back-button'; +export { IonRouter, useHardwareBackButton, useIonRouter } from './hooks'; export { // Overlay Controllers