From 3d34b68fbd25b724b6f89c01642788d325f6e909 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Fri, 11 Sep 2020 11:33:41 -0400 Subject: [PATCH] feat(vue): add hook to access Ionic Vue router (#22072) --- .../vue/src/{hardware-back-button.ts => hooks.ts} | 13 +++++++++++++ packages/vue/src/index.ts | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) rename packages/vue/src/{hardware-back-button.ts => hooks.ts} (64%) 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