From 6109929ad854f36dfd0ef559fa2308d5d4a646f0 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 17 Dec 2020 21:44:04 +0000 Subject: [PATCH 1/5] fix tabs matchinbg --- packages/vue-router/src/viewStacks.ts | 2 +- .../vue/src/components/IonRouterOutlet.ts | 12 ++--------- packages/vue/src/components/IonTabs.ts | 2 +- packages/vue/test-app/src/router/index.ts | 20 +++++++++---------- packages/vue/test-app/src/views/Tabs.vue | 8 +++++++- packages/vue/test-app/tests/e2e/specs/tabs.js | 19 +++++++++++++++++- .../vue/test-app/tests/unit/tab-bar.spec.ts | 4 ++-- 7 files changed, 40 insertions(+), 27 deletions(-) diff --git a/packages/vue-router/src/viewStacks.ts b/packages/vue-router/src/viewStacks.ts index 3688d193eb7..215f39bd599 100644 --- a/packages/vue-router/src/viewStacks.ts +++ b/packages/vue-router/src/viewStacks.ts @@ -54,7 +54,7 @@ export const createViewStacks = (router: Router) => { } const resolvedPath = router.resolve(path); - const findMatchedRoute = resolvedPath.matched.find((matchedRoute: RouteLocationMatched) => matchedRoute === viewItem.matchedRoute && (path === viewItem.pathname || matchedRoute.path.includes(':'))); + const findMatchedRoute = resolvedPath.matched.find((matchedRoute: RouteLocationMatched) => matchedRoute === viewItem.matchedRoute); if (findMatchedRoute) { return viewItem; diff --git a/packages/vue/src/components/IonRouterOutlet.ts b/packages/vue/src/components/IonRouterOutlet.ts index 9530f22a6a1..36627bcb7c2 100644 --- a/packages/vue/src/components/IonRouterOutlet.ts +++ b/packages/vue/src/components/IonRouterOutlet.ts @@ -17,19 +17,11 @@ import { fireLifecycle, generateId, getConfig } from '../utils'; let viewDepthKey: InjectionKey<0> = Symbol(0); export const IonRouterOutlet = defineComponent({ name: 'IonRouterOutlet', - setup(_, { attrs }) { + setup() { const injectedRoute = inject(routeLocationKey)!; const route = useRoute(); const depth = inject(viewDepthKey, 0); - const matchedRouteRef: any = computed(() => { - const matchedRoute = route.matched[depth]; - - if (matchedRoute && attrs.tabs && route.matched[depth + 1]) { - return route.matched[route.matched.length - 1]; - } - - return matchedRoute; - }); + const matchedRouteRef: any = computed(() => route.matched[depth]); provide(viewDepthKey, depth + 1) provide(matchedRouteKey, matchedRouteRef); diff --git a/packages/vue/src/components/IonTabs.ts b/packages/vue/src/components/IonTabs.ts index e292d530354..c3bf0d706bc 100644 --- a/packages/vue/src/components/IonTabs.ts +++ b/packages/vue/src/components/IonTabs.ts @@ -19,7 +19,7 @@ export const IonTabs = defineComponent({ 'contain': 'layout size style' } }, [ - h(IonRouterOutlet, { tabs: true }) + h(IonRouterOutlet) ]) ]; diff --git a/packages/vue/test-app/src/router/index.ts b/packages/vue/test-app/src/router/index.ts index 5ec99223b94..644d29ea72c 100644 --- a/packages/vue/test-app/src/router/index.ts +++ b/packages/vue/test-app/src/router/index.ts @@ -85,17 +85,15 @@ const routes: Array = [ }, { path: 'tab1', - component: () => import('@/views/Tab1.vue'), - children: [ - { - path: 'child-one', - component: () => import('@/views/Tab1ChildOne.vue') - }, - { - path: 'child-two', - component: () => import('@/views/Tab1ChildTwo.vue') - } - ] + component: () => import('@/views/Tab1.vue') + }, + { + path: 'tab1/child-one', + component: () => import('@/views/Tab1ChildOne.vue') + }, + { + path: 'tab1/child-two', + component: () => import('@/views/Tab1ChildTwo.vue') }, { path: 'tab2', diff --git a/packages/vue/test-app/src/views/Tabs.vue b/packages/vue/test-app/src/views/Tabs.vue index 5b91e6716f9..a63b3af6123 100644 --- a/packages/vue/test-app/src/views/Tabs.vue +++ b/packages/vue/test-app/src/views/Tabs.vue @@ -17,6 +17,11 @@ Tab 3 + + + + Tab 4 + @@ -25,13 +30,14 @@