mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-17 10:41:13 +08:00
fix(vue): testing a routerLink-capable component no longer warns of missing router dependency (#22532)
resolves #22506
This commit is contained in:
14
core/package-lock.json
generated
14
core/package-lock.json
generated
@ -17,7 +17,7 @@
|
||||
"@rollup/plugin-virtual": "^2.0.3",
|
||||
"@stencil/core": "2.1.2",
|
||||
"@stencil/sass": "1.3.2",
|
||||
"@stencil/vue-output-target": "0.1.8",
|
||||
"@stencil/vue-output-target": "0.2.2",
|
||||
"@types/jest": "^26.0.10",
|
||||
"@types/node": "^14.6.0",
|
||||
"@types/puppeteer": "3.0.1",
|
||||
@ -1657,9 +1657,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@stencil/vue-output-target": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.1.8.tgz",
|
||||
"integrity": "sha512-ruZmJuv3T0i1ZHgpOn72k4xj0WVpaerSQvjovCEgDMQ6uZewcWxc41jI0GcxAt/dn2g/feZCsKdz8M8yB9RtfA==",
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.2.2.tgz",
|
||||
"integrity": "sha512-WBnN/8ggIVYgKbJOML1DVzjFnKv7RaQpTa+XNeY0r/EG6MbXlUjUC/4Cpkg5wQ94WNuPpphAR4oRWGsmiQDxPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@stylelint/postcss-css-in-js": {
|
||||
@ -16387,9 +16387,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@stencil/vue-output-target": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.1.8.tgz",
|
||||
"integrity": "sha512-ruZmJuv3T0i1ZHgpOn72k4xj0WVpaerSQvjovCEgDMQ6uZewcWxc41jI0GcxAt/dn2g/feZCsKdz8M8yB9RtfA==",
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.2.2.tgz",
|
||||
"integrity": "sha512-WBnN/8ggIVYgKbJOML1DVzjFnKv7RaQpTa+XNeY0r/EG6MbXlUjUC/4Cpkg5wQ94WNuPpphAR4oRWGsmiQDxPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@stylelint/postcss-css-in-js": {
|
||||
|
@ -38,7 +38,7 @@
|
||||
"@rollup/plugin-virtual": "^2.0.3",
|
||||
"@stencil/core": "2.1.2",
|
||||
"@stencil/sass": "1.3.2",
|
||||
"@stencil/vue-output-target": "0.1.8",
|
||||
"@stencil/vue-output-target": "0.2.2",
|
||||
"@types/jest": "^26.0.10",
|
||||
"@types/node": "^14.6.0",
|
||||
"@types/puppeteer": "3.0.1",
|
||||
|
@ -3,7 +3,7 @@
|
||||
/* auto-generated vue proxies */
|
||||
import { defineContainer } from './vue-component-lib/utils';
|
||||
|
||||
import { JSX } from '@ionic/core';
|
||||
import type { JSX } from '@ionic/core';
|
||||
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { VNode, defineComponent, h, inject, ref, Ref } from 'vue';
|
||||
import { VNode, defineComponent, getCurrentInstance, h, inject, ref, Ref } from 'vue';
|
||||
|
||||
export interface InputProps extends Object {
|
||||
modelValue: string | boolean;
|
||||
@ -62,16 +62,22 @@ export const defineContainer = <Props>(name: string, componentProps: string[] =
|
||||
|
||||
let handleClick: (ev: Event) => void;
|
||||
if (routerLinkComponent) {
|
||||
const navManager: NavManager = inject(NAV_MANAGER);
|
||||
const currentInstance = getCurrentInstance();
|
||||
const hasRouter = currentInstance?.appContext?.provides[NAV_MANAGER];
|
||||
const navManager: NavManager | undefined = hasRouter ? inject(NAV_MANAGER) : undefined;
|
||||
handleClick = (ev: Event) => {
|
||||
const routerProps = Object.keys(props).filter(p => p.startsWith(ROUTER_PROP_REFIX));
|
||||
if (routerProps.length === 0) return;
|
||||
|
||||
if (navManager !== undefined) {
|
||||
let navigationPayload: any = { event: ev };
|
||||
routerProps.forEach(prop => {
|
||||
navigationPayload[prop] = (props as any)[prop];
|
||||
});
|
||||
navManager.navigate(navigationPayload);
|
||||
} else {
|
||||
console.warn('Tried to navigate, but no router was found. Make sure you have mounted Vue Router.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user