fix(vue): custom element internal properties are no longer overridden in vue 3.1.0 (#23738)

resolves #23539
This commit is contained in:
Liam DeBeasi
2021-08-09 11:41:31 -04:00
committed by GitHub
parent 30f8508296
commit ea39c70b3e
5 changed files with 156 additions and 117 deletions

14
core/package-lock.json generated
View File

@ -19,7 +19,7 @@
"@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3", "@rollup/plugin-virtual": "^2.0.3",
"@stencil/sass": "1.3.2", "@stencil/sass": "1.3.2",
"@stencil/vue-output-target": "^0.5.0", "@stencil/vue-output-target": "^0.5.1",
"@types/jest": "^26.0.20", "@types/jest": "^26.0.20",
"@types/node": "^14.6.0", "@types/node": "^14.6.0",
"@types/puppeteer": "5.4.3", "@types/puppeteer": "5.4.3",
@ -1374,9 +1374,9 @@
"dev": true "dev": true
}, },
"node_modules/@stencil/vue-output-target": { "node_modules/@stencil/vue-output-target": {
"version": "0.5.0", "version": "0.5.1",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.5.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.5.1.tgz",
"integrity": "sha512-OuVOnlG6FpX/N8xWxwqCjTtq5LBCgvNiWt3mNQHYxb8wSEXqX46eOoTqkKjKcbG3YF/8bNyOgDtIzTl9HZmPeQ==", "integrity": "sha512-E9HeuUf4DjHO8VFd+faR6T+/JwLtU/2kIA000YTTv0ARPUXuxr/3+U3YMBRPCVFPC5n2jsFxU3E9rTmVH1MGyg==",
"dev": true, "dev": true,
"peerDependencies": { "peerDependencies": {
"@stencil/core": ">=1.8.0 || ^2.0.0" "@stencil/core": ">=1.8.0 || ^2.0.0"
@ -15017,9 +15017,9 @@
"dev": true "dev": true
}, },
"@stencil/vue-output-target": { "@stencil/vue-output-target": {
"version": "0.5.0", "version": "0.5.1",
"resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.5.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/vue-output-target/-/vue-output-target-0.5.1.tgz",
"integrity": "sha512-OuVOnlG6FpX/N8xWxwqCjTtq5LBCgvNiWt3mNQHYxb8wSEXqX46eOoTqkKjKcbG3YF/8bNyOgDtIzTl9HZmPeQ==", "integrity": "sha512-E9HeuUf4DjHO8VFd+faR6T+/JwLtU/2kIA000YTTv0ARPUXuxr/3+U3YMBRPCVFPC5n2jsFxU3E9rTmVH1MGyg==",
"dev": true "dev": true
}, },
"@stylelint/postcss-css-in-js": { "@stylelint/postcss-css-in-js": {

View File

@ -41,7 +41,7 @@
"@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-virtual": "^2.0.3", "@rollup/plugin-virtual": "^2.0.3",
"@stencil/sass": "1.3.2", "@stencil/sass": "1.3.2",
"@stencil/vue-output-target": "^0.5.0", "@stencil/vue-output-target": "^0.5.1",
"@types/jest": "^26.0.20", "@types/jest": "^26.0.20",
"@types/node": "^14.6.0", "@types/node": "^14.6.0",
"@types/puppeteer": "5.4.3", "@types/puppeteer": "5.4.3",

View File

@ -8,7 +8,19 @@ const UPDATE_VALUE_EVENT = 'update:modelValue';
const MODEL_VALUE = 'modelValue'; const MODEL_VALUE = 'modelValue';
const ROUTER_LINK_VALUE = 'routerLink'; const ROUTER_LINK_VALUE = 'routerLink';
const NAV_MANAGER = 'navManager'; const NAV_MANAGER = 'navManager';
const ROUTER_PROP_REFIX = 'router'; const ROUTER_PROP_PREFIX = 'router';
/**
* Starting in Vue 3.1.0, all properties are
* added as keys to the props object, even if
* they are not being used. In order to correctly
* account for both value props and v-model props,
* we need to check if the key exists for Vue <3.1.0
* and then check if it is not undefined for Vue >= 3.1.0.
* See https://github.com/vuejs/vue-next/issues/3889
*/
const EMPTY_PROP = Symbol();
const DEFAULT_EMPTY_PROP = { default: EMPTY_PROP };
interface NavManager<T = any> { interface NavManager<T = any> {
navigate: (options: T) => void; navigate: (options: T) => void;
@ -59,8 +71,8 @@ export const defineContainer = <Props>(
customElements.define(name, customElement); customElements.define(name, customElement);
} }
const Container = defineComponent<Props & InputProps>((props, { attrs, slots, emit }) => { const Container = defineComponent<Props & InputProps>((props: any, { attrs, slots, emit }) => {
let modelPropValue = (props as any)[modelProp]; let modelPropValue = props[modelProp];
const containerRef = ref<HTMLElement>(); const containerRef = ref<HTMLElement>();
const classes = new Set(getComponentClasses(attrs.class)); const classes = new Set(getComponentClasses(attrs.class));
const onVnodeBeforeMount = (vnode: VNode) => { const onVnodeBeforeMount = (vnode: VNode) => {
@ -92,16 +104,18 @@ export const defineContainer = <Props>(
const hasRouter = currentInstance?.appContext?.provides[NAV_MANAGER]; const hasRouter = currentInstance?.appContext?.provides[NAV_MANAGER];
const navManager: NavManager | undefined = hasRouter ? inject(NAV_MANAGER) : undefined; const navManager: NavManager | undefined = hasRouter ? inject(NAV_MANAGER) : undefined;
const handleRouterLink = (ev: Event) => { const handleRouterLink = (ev: Event) => {
const { routerLink } = props as any; const { routerLink } = props;
if (!routerLink) return; if (routerLink === EMPTY_PROP) return;
const routerProps = Object.keys(props).filter(p => p.startsWith(ROUTER_PROP_REFIX));
if (navManager !== undefined) { if (navManager !== undefined) {
let navigationPayload: any = { event: ev }; let navigationPayload: any = { event: ev };
routerProps.forEach(prop => { for (const key in props) {
navigationPayload[prop] = (props as any)[prop]; const value = props[key];
}); if (props.hasOwnProperty(key) && key.startsWith(ROUTER_PROP_PREFIX) && value !== EMPTY_PROP) {
navigationPayload[key] = value;
}
}
navManager.navigate(navigationPayload); navManager.navigate(navigationPayload);
} else { } else {
console.warn('Tried to navigate, but no router was found. Make sure you have mounted Vue Router.'); console.warn('Tried to navigate, but no router was found. Make sure you have mounted Vue Router.');
@ -109,13 +123,13 @@ export const defineContainer = <Props>(
} }
return () => { return () => {
modelPropValue = (props as any)[modelProp]; modelPropValue = props[modelProp];
getComponentClasses(attrs.class).forEach(value => { getComponentClasses(attrs.class).forEach(value => {
classes.add(value); classes.add(value);
}); });
const oldClick = (props as any).onClick; const oldClick = props.onClick;
const handleClick = (ev: Event) => { const handleClick = (ev: Event) => {
if (oldClick !== undefined) { if (oldClick !== undefined) {
oldClick(ev); oldClick(ev);
@ -125,26 +139,43 @@ export const defineContainer = <Props>(
} }
} }
let propsToAdd = { let propsToAdd: any = {
...props,
ref: containerRef, ref: containerRef,
class: getElementClasses(containerRef, classes), class: getElementClasses(containerRef, classes),
onClick: handleClick, onClick: handleClick,
onVnodeBeforeMount: (modelUpdateEvent) ? onVnodeBeforeMount : undefined onVnodeBeforeMount: (modelUpdateEvent) ? onVnodeBeforeMount : undefined
}; };
/**
* We can use Object.entries here
* to avoid the hasOwnProperty check,
* but that would require 2 iterations
* where as this only requires 1.
*/
for (const key in props) {
const value = props[key];
if (props.hasOwnProperty(key) && value !== EMPTY_PROP) {
propsToAdd[key] = value;
}
}
if (modelProp) { if (modelProp) {
/** /**
* Starting in Vue 3.1.0, all properties are * If form value property was set using v-model
* added as keys to the props object, even if * then we should use that value.
* they are not being used. In order to correctly * Otherwise, check to see if form value property
* account for both value props and v-model props, * was set as a static value (i.e. no v-model).
* we need to check if the key exists for Vue <3.1.0
* and then check if it is not undefined for Vue >= 3.1.0.
*/ */
propsToAdd = { if (props[MODEL_VALUE] !== EMPTY_PROP) {
...propsToAdd, propsToAdd = {
[modelProp]: props.hasOwnProperty(MODEL_VALUE) && props[MODEL_VALUE] !== undefined ? props.modelValue : modelPropValue ...propsToAdd,
[modelProp]: props[MODEL_VALUE]
}
} else if (modelPropValue !== EMPTY_PROP) {
propsToAdd = {
...propsToAdd,
[modelProp]: modelPropValue
}
} }
} }
@ -153,9 +184,17 @@ export const defineContainer = <Props>(
}); });
Container.displayName = name; Container.displayName = name;
Container.props = [...componentProps, ROUTER_LINK_VALUE];
Container.props = {
[ROUTER_LINK_VALUE]: DEFAULT_EMPTY_PROP
};
componentProps.forEach(componentProp => {
Container.props[componentProp] = DEFAULT_EMPTY_PROP;
});
if (modelProp) { if (modelProp) {
Container.props.push(MODEL_VALUE); Container.props[MODEL_VALUE] = DEFAULT_EMPTY_PROP;
Container.emits = [UPDATE_VALUE_EVENT, externalModelUpdateEvent]; Container.emits = [UPDATE_VALUE_EVENT, externalModelUpdateEvent];
} }

View File

@ -9,7 +9,7 @@
"dependencies": { "dependencies": {
"@ionic/vue": "5.6.3", "@ionic/vue": "5.6.3",
"@ionic/vue-router": "5.6.3", "@ionic/vue-router": "5.6.3",
"vue": "^3.0.11", "vue": "^3.1.5",
"vue-router": "^4.0.0-rc.4" "vue-router": "^4.0.0-rc.4"
}, },
"devDependencies": { "devDependencies": {
@ -4609,46 +4609,46 @@
} }
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
"integrity": "sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==", "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
"dependencies": { "dependencies": {
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
} }
}, },
"node_modules/@vue/reactivity/node_modules/@vue/shared": { "node_modules/@vue/reactivity/node_modules/@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.5.tgz",
"integrity": "sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==", "integrity": "sha512-YQbG5cBktN1RowQDKA22itmvQ+b40f0WgQ6CXK4VYoYICAiAfu6Cc14777ve8zp1rJRGtk5oIeS149TOculrTg==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.0.11", "@vue/reactivity": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
} }
}, },
"node_modules/@vue/runtime-core/node_modules/@vue/shared": { "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.5.tgz",
"integrity": "sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==", "integrity": "sha512-tNcf3JhVR0RfW0kw1p8xZgv30nvX8Y9rsz7eiQ0dHe273sfoCngAG0y4GvMaY4Xd8FsjUwFedd4suQ8Lu8meXg==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.0.11", "@vue/runtime-core": "3.1.5",
"@vue/shared": "3.0.11", "@vue/shared": "3.1.5",
"csstype": "^2.6.8" "csstype": "^2.6.8"
} }
}, },
"node_modules/@vue/runtime-dom/node_modules/@vue/shared": { "node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.0.2", "version": "3.0.2",
@ -20738,13 +20738,13 @@
"dev": true "dev": true
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.0.11.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.5.tgz",
"integrity": "sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==", "integrity": "sha512-Ho7HNb1nfDoO+HVb6qYZgeaobt1XbY6KXFe4HGs1b9X6RhkWG/113n4/SrtM1LUclM6OrP/Se5aPHHvAPG1iVQ==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.0.11", "@vue/compiler-dom": "3.1.5",
"@vue/runtime-dom": "3.0.11", "@vue/runtime-dom": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
} }
}, },
"node_modules/vue-eslint-parser": { "node_modules/vue-eslint-parser": {
@ -20928,30 +20928,30 @@
"dev": true "dev": true
}, },
"node_modules/vue/node_modules/@vue/compiler-core": { "node_modules/vue/node_modules/@vue/compiler-core": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.5.tgz",
"integrity": "sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==", "integrity": "sha512-TXBhFinoBaXKDykJzY26UEuQU1K07FOp/0Ie+OXySqqk0bS0ZO7Xvl7UmiTUPYcLrWbxWBR7Bs/y55AI0MNc2Q==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.12.0", "@babel/parser": "^7.12.0",
"@babel/types": "^7.12.0", "@babel/types": "^7.12.0",
"@vue/shared": "3.0.11", "@vue/shared": "3.1.5",
"estree-walker": "^2.0.1", "estree-walker": "^2.0.1",
"source-map": "^0.6.1" "source-map": "^0.6.1"
} }
}, },
"node_modules/vue/node_modules/@vue/compiler-dom": { "node_modules/vue/node_modules/@vue/compiler-dom": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.5.tgz",
"integrity": "sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==", "integrity": "sha512-ZsL3jqJ52OjGU/YiT/9XiuZAmWClKInZM2aFJh9gnsAPqOrj2JIELMbkIFpVKR/CrVO/f2VxfPiiQdQTr65jcQ==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.0.11", "@vue/compiler-core": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
} }
}, },
"node_modules/vue/node_modules/@vue/shared": { "node_modules/vue/node_modules/@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
}, },
"node_modules/vue/node_modules/source-map": { "node_modules/vue/node_modules/source-map": {
"version": "0.6.1", "version": "0.6.1",
@ -26581,50 +26581,50 @@
"dev": true "dev": true
}, },
"@vue/reactivity": { "@vue/reactivity": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
"integrity": "sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==", "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
"requires": { "requires": {
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
}, },
"dependencies": { "dependencies": {
"@vue/shared": { "@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
} }
} }
}, },
"@vue/runtime-core": { "@vue/runtime-core": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.5.tgz",
"integrity": "sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==", "integrity": "sha512-YQbG5cBktN1RowQDKA22itmvQ+b40f0WgQ6CXK4VYoYICAiAfu6Cc14777ve8zp1rJRGtk5oIeS149TOculrTg==",
"requires": { "requires": {
"@vue/reactivity": "3.0.11", "@vue/reactivity": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
}, },
"dependencies": { "dependencies": {
"@vue/shared": { "@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
} }
} }
}, },
"@vue/runtime-dom": { "@vue/runtime-dom": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.5.tgz",
"integrity": "sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==", "integrity": "sha512-tNcf3JhVR0RfW0kw1p8xZgv30nvX8Y9rsz7eiQ0dHe273sfoCngAG0y4GvMaY4Xd8FsjUwFedd4suQ8Lu8meXg==",
"requires": { "requires": {
"@vue/runtime-core": "3.0.11", "@vue/runtime-core": "3.1.5",
"@vue/shared": "3.0.11", "@vue/shared": "3.1.5",
"csstype": "^2.6.8" "csstype": "^2.6.8"
}, },
"dependencies": { "dependencies": {
"@vue/shared": { "@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
} }
} }
}, },
@ -40033,40 +40033,40 @@
"dev": true "dev": true
}, },
"vue": { "vue": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.0.11.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.5.tgz",
"integrity": "sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==", "integrity": "sha512-Ho7HNb1nfDoO+HVb6qYZgeaobt1XbY6KXFe4HGs1b9X6RhkWG/113n4/SrtM1LUclM6OrP/Se5aPHHvAPG1iVQ==",
"requires": { "requires": {
"@vue/compiler-dom": "3.0.11", "@vue/compiler-dom": "3.1.5",
"@vue/runtime-dom": "3.0.11", "@vue/runtime-dom": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
}, },
"dependencies": { "dependencies": {
"@vue/compiler-core": { "@vue/compiler-core": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.5.tgz",
"integrity": "sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==", "integrity": "sha512-TXBhFinoBaXKDykJzY26UEuQU1K07FOp/0Ie+OXySqqk0bS0ZO7Xvl7UmiTUPYcLrWbxWBR7Bs/y55AI0MNc2Q==",
"requires": { "requires": {
"@babel/parser": "^7.12.0", "@babel/parser": "^7.12.0",
"@babel/types": "^7.12.0", "@babel/types": "^7.12.0",
"@vue/shared": "3.0.11", "@vue/shared": "3.1.5",
"estree-walker": "^2.0.1", "estree-walker": "^2.0.1",
"source-map": "^0.6.1" "source-map": "^0.6.1"
} }
}, },
"@vue/compiler-dom": { "@vue/compiler-dom": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.5.tgz",
"integrity": "sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==", "integrity": "sha512-ZsL3jqJ52OjGU/YiT/9XiuZAmWClKInZM2aFJh9gnsAPqOrj2JIELMbkIFpVKR/CrVO/f2VxfPiiQdQTr65jcQ==",
"requires": { "requires": {
"@vue/compiler-core": "3.0.11", "@vue/compiler-core": "3.1.5",
"@vue/shared": "3.0.11" "@vue/shared": "3.1.5"
} }
}, },
"@vue/shared": { "@vue/shared": {
"version": "3.0.11", "version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.0.11.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==" "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
}, },
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",

View File

@ -14,7 +14,7 @@
"dependencies": { "dependencies": {
"@ionic/vue": "5.6.3", "@ionic/vue": "5.6.3",
"@ionic/vue-router": "5.6.3", "@ionic/vue-router": "5.6.3",
"vue": "^3.0.11", "vue": "^3.1.5",
"vue-router": "^4.0.0-rc.4" "vue-router": "^4.0.0-rc.4"
}, },
"devDependencies": { "devDependencies": {