diff --git a/packages/vue-router/src/router.ts b/packages/vue-router/src/router.ts
index 1445bb4417..edae1b90eb 100644
--- a/packages/vue-router/src/router.ts
+++ b/packages/vue-router/src/router.ts
@@ -219,13 +219,13 @@ export const createIonRouter = (opts: IonicVueRouterOptions, router: Router) =>
const changeTab = (tab: string, path: string) => {
const routeInfo = locationHistory.getCurrentRouteInfoForTab(tab);
- // TODO search
const [pathname] = path.split('?');
if (routeInfo) {
incomingRouteParams = Object.assign(Object.assign({}, routeInfo), { routerAction: 'push', routerDirection: 'none' });
- router.push(routeInfo.pathname + (routeInfo.search || ''));
+ const search = (routeInfo.search) ? `?${routeInfo.search}` : '';
+ router.push(routeInfo.pathname + search);
}
else {
handleNavigate(pathname, 'push', 'none', undefined, tab);
diff --git a/packages/vue/src/components/IonRouterOutlet.ts b/packages/vue/src/components/IonRouterOutlet.ts
index cea80cc3d1..bd16d33c1c 100644
--- a/packages/vue/src/components/IonRouterOutlet.ts
+++ b/packages/vue/src/components/IonRouterOutlet.ts
@@ -153,6 +153,8 @@ export const IonRouterOutlet = defineComponent({
const enteringViewItem = viewStacks.findViewItemByRouteInfo(routeInfo, id);
const leavingViewItem = viewStacks.findLeavingViewItemByRouteInfo(routeInfo, id);
+ if (enteringViewItem === leavingViewItem) return;
+
fireLifecycle(enteringViewItem.vueComponent, LIFECYCLE_WILL_ENTER);
if (leavingViewItem) {
diff --git a/packages/vue/test-app/cypress.json b/packages/vue/test-app/cypress.json
index 256174e33f..8ef00134d0 100644
--- a/packages/vue/test-app/cypress.json
+++ b/packages/vue/test-app/cypress.json
@@ -1,5 +1,6 @@
{
"pluginsFile": "tests/e2e/plugins/index.js",
"includeShadowDom": true,
- "video": false
+ "video": false,
+ "screenshotOnRunFailure": false
}
diff --git a/packages/vue/test-app/package-lock.json b/packages/vue/test-app/package-lock.json
index 386597a391..fe7d7b07c5 100644
--- a/packages/vue/test-app/package-lock.json
+++ b/packages/vue/test-app/package-lock.json
@@ -1306,27 +1306,27 @@
}
},
"@ionic/core": {
- "version": "0.6.0-dev.202009301514.ea201ea",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.6.0-dev.202009301514.ea201ea.tgz",
- "integrity": "sha512-9nfu74LNxQ2b/Jg+kkXkD1OW+emDpLCqj/IvgPC+54jxjGDoiBbCiO7+dNhLFGUqMbU2Y1tkTR8etpLMV8CUEQ==",
+ "version": "0.6.0-dev.202010051922.f5d657c",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.6.0-dev.202010051922.f5d657c.tgz",
+ "integrity": "sha512-sIwN9lV4Fep+vTYfeso+D4BL6APKiYuQ6J2H5+0pV0Azep59TwOompR/SB9U3AYsHKMD+MQj9i2cxYFXIPtd3Q==",
"requires": {
"ionicons": "^5.1.2",
"tslib": "^1.10.0"
}
},
"@ionic/vue": {
- "version": "0.6.0-dev.202009301514.ea201ea",
- "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-0.6.0-dev.202009301514.ea201ea.tgz",
- "integrity": "sha512-RrOE0tlXONA1jbnVyqk42G6K04DuuXs8oCjo1FlCSJoBMj2lijENVnkbGp8ji/TcpxYSxFCqwYSIALu6DH1kpw==",
+ "version": "0.6.0-dev.202010051922.f5d657c",
+ "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-0.6.0-dev.202010051922.f5d657c.tgz",
+ "integrity": "sha512-HuMk3JUqt8DkVbgJYWgmmB+G5kALUoABl8n6fSFwFk8+vzqF0mJMoHcyspbL2hCGviTjHKQ9R2/WAbdq0Q/fNQ==",
"requires": {
- "@ionic/core": "0.6.0-dev.202009301514.ea201ea",
+ "@ionic/core": "0.6.0-dev.202010051922.f5d657c",
"ionicons": "^5.1.2"
}
},
"@ionic/vue-router": {
- "version": "0.6.0-dev.202009301514.ea201ea",
- "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-0.6.0-dev.202009301514.ea201ea.tgz",
- "integrity": "sha512-lt1RHiKRVr/2e35cJoaOKix92MKnNhQGXRZ4i/9DY7IXWPz+KwMFY2qba4wg5OmhWzZg3K7weStsv8LQH0/y1g=="
+ "version": "0.6.0-dev.202010051922.f5d657c",
+ "resolved": "https://registry.npmjs.org/@ionic/vue-router/-/vue-router-0.6.0-dev.202010051922.f5d657c.tgz",
+ "integrity": "sha512-524eNmjFuEJh3OpuLBZXd1+k3R4/jruNxLt53Ro/Ux8SsI4FgPgm/Igv8SRjd1knvx9LFN+nlA8JTdHNB58SrA=="
},
"@jest/console": {
"version": "24.9.0",
@@ -7643,21 +7643,6 @@
"integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==",
"dev": true
},
- "event-stream": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
- "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
- "dev": true,
- "requires": {
- "duplexer": "~0.1.1",
- "from": "~0",
- "map-stream": "~0.1.0",
- "pause-stream": "0.0.11",
- "split": "0.3",
- "stream-combiner": "~0.0.4",
- "through": "~2.3.1"
- }
- },
"eventemitter2": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz",
@@ -8362,12 +8347,6 @@
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
"dev": true
},
- "from": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
- "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
- "dev": true
- },
"from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
@@ -11232,12 +11211,6 @@
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
- "map-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
- "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
- "dev": true
- },
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
@@ -12412,15 +12385,6 @@
}
}
},
- "pause-stream": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
- "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
- "dev": true,
- "requires": {
- "through": "~2.3"
- }
- },
"pbkdf2": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
@@ -13304,15 +13268,6 @@
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
- "ps-tree": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz",
- "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==",
- "dev": true,
- "requires": {
- "event-stream": "=3.3.4"
- }
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -14604,15 +14559,6 @@
}
}
},
- "split": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
- "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
"split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -14672,127 +14618,6 @@
"integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==",
"dev": true
},
- "start-server-and-test": {
- "version": "1.11.5",
- "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.11.5.tgz",
- "integrity": "sha512-XUGifPzbJcgD6tqWMFvbxnra1KByRuiw6Oc9FHR3tPm7UxB70a4iFDIuXfOAFtMJLvOJuwB3gnMUZxko8gtLow==",
- "dev": true,
- "requires": {
- "bluebird": "3.7.2",
- "check-more-types": "2.24.0",
- "debug": "4.2.0",
- "execa": "3.4.0",
- "lazy-ass": "1.6.0",
- "ps-tree": "1.2.0",
- "wait-on": "5.2.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "execa": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz",
- "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "p-finally": "^2.0.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "p-finally": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
- "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
"static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@@ -14836,15 +14661,6 @@
"readable-stream": "^2.0.2"
}
},
- "stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
- "dev": true,
- "requires": {
- "duplexer": "~0.1.1"
- }
- },
"stream-each": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
diff --git a/packages/vue/test-app/package.json b/packages/vue/test-app/package.json
index 894be4d7c2..71238b729c 100644
--- a/packages/vue/test-app/package.json
+++ b/packages/vue/test-app/package.json
@@ -11,8 +11,8 @@
"cypress": "node_modules/.bin/cypress run --headless --browser chrome"
},
"dependencies": {
- "@ionic/vue": "^0.6.0-dev.202009301514.ea201ea",
- "@ionic/vue-router": "^0.6.0-dev.202009301514.ea201ea",
+ "@ionic/vue": "0.6.0-dev.202010051922.f5d657c",
+ "@ionic/vue-router": "0.6.0-dev.202010051922.f5d657c",
"core-js": "^3.6.5",
"vue": "^3.0.0-0",
"vue-router": "^4.0.0-0"
diff --git a/packages/vue/test-app/src/views/Navigation.vue b/packages/vue/test-app/src/views/Navigation.vue
index 96d53a39ba..3ff1677b1e 100644
--- a/packages/vue/test-app/src/views/Navigation.vue
+++ b/packages/vue/test-app/src/views/Navigation.vue
@@ -3,7 +3,7 @@