mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 03:00:58 +08:00
fix(vue): correctly show ion-back-button when going back (#22260)
resolves #22217
This commit is contained in:
@ -43,16 +43,12 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
|
||||
opts.history.listen((to: any, _: any, info: any) => handleHistoryChange({ path: to }, info.type, info.direction));
|
||||
|
||||
const handleNavigateBack = (defaultHref?: string, routerAnimation?: AnimationBuilder) => {
|
||||
//console.log('--- Begin Navigate Back ---');
|
||||
// todo grab default back button href from config
|
||||
const routeInfo = locationHistory.current();
|
||||
//console.log('Route Info', routeInfo)
|
||||
if (routeInfo && routeInfo.pushedByRoute) {
|
||||
const prevInfo = locationHistory.findLastLocation(routeInfo);
|
||||
if (prevInfo) {
|
||||
//console.log('Prev Info', prevInfo)
|
||||
incomingRouteParams = { ...prevInfo, routerAction: 'pop', routerDirection: 'back', routerAnimation: routerAnimation || routeInfo.routerAnimation };
|
||||
//console.log('Set incoming route params', incomingRouteParams)
|
||||
if (routeInfo.lastPathname === routeInfo.pushedByRoute) {
|
||||
router.back();
|
||||
} else {
|
||||
@ -64,7 +60,6 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
|
||||
} else {
|
||||
handleNavigate(defaultHref, 'pop', 'back');
|
||||
}
|
||||
//console.log('--- End Navigate Back ---');
|
||||
}
|
||||
|
||||
const handleNavigate = (path: string, routerAction?: RouteAction, routerDirection?: RouteDirection, routerAnimation?: AnimationBuilder, tab?: string) => {
|
||||
@ -134,12 +129,9 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
|
||||
routerDirection: direction || 'forward',
|
||||
tab: currentTab
|
||||
}
|
||||
//console.log('No route params, setting', incomingRouteParams)
|
||||
}
|
||||
}
|
||||
|
||||
//console.log('Incoming Route Params', incomingRouteParams)
|
||||
|
||||
let routeInfo: RouteInfo;
|
||||
if (incomingRouteParams?.id) {
|
||||
routeInfo = {
|
||||
@ -148,7 +140,6 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
|
||||
}
|
||||
locationHistory.add(routeInfo);
|
||||
|
||||
//console.log('Incoming route params had id, current routeInfo', routeInfo)
|
||||
} else {
|
||||
const isPushed = incomingRouteParams.routerAction === 'push' && incomingRouteParams.routerDirection === 'forward';
|
||||
routeInfo = {
|
||||
@ -160,27 +151,21 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
|
||||
params: location.params && location.params,
|
||||
}
|
||||
|
||||
//console.log('No id on incoming route params', routeInfo)
|
||||
|
||||
if (isPushed) {
|
||||
routeInfo.tab = leavingLocationInfo.tab;
|
||||
routeInfo.pushedByRoute = leavingLocationInfo.pathname;
|
||||
//console.log('Was pushed', routeInfo);
|
||||
routeInfo.pushedByRoute = (leavingLocationInfo.pathname !== '') ? leavingLocationInfo.pathname : undefined;
|
||||
} else if (routeInfo.routerAction === 'pop') {
|
||||
const route = locationHistory.findLastLocation(routeInfo);
|
||||
routeInfo.pushedByRoute = route?.pushedByRoute;
|
||||
//console.log('action pop', routeInfo)
|
||||
} else if (routeInfo.routerAction === 'push' && routeInfo.tab !== leavingLocationInfo.tab) {
|
||||
const lastRoute = locationHistory.getCurrentRouteInfoForTab(routeInfo.tab);
|
||||
routeInfo.pushedByRoute = lastRoute?.pushedByRoute;
|
||||
//console.log('was push and switch tab', routeInfo)
|
||||
} else if (routeInfo.routerAction === 'replace') {
|
||||
const currentRouteInfo = locationHistory.current();
|
||||
routeInfo.lastPathname = currentRouteInfo?.pathname || routeInfo.lastPathname;
|
||||
routeInfo.pushedByRoute = currentRouteInfo?.pushedByRoute || routeInfo.pushedByRoute;
|
||||
routeInfo.routerDirection = currentRouteInfo?.routerDirection || routeInfo.routerDirection;
|
||||
routeInfo.routerAnimation = currentRouteInfo?.routerAnimation || routeInfo.routerAnimation;
|
||||
//console.log('was repalce',routeInfo)
|
||||
}
|
||||
|
||||
locationHistory.add(routeInfo);
|
||||
|
Reference in New Issue
Block a user