From 2d1dd2ad721d7e62d801d6788ba056444aa09bad Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Thu, 18 Jan 2024 16:59:37 +0100 Subject: [PATCH 001/193] feat: allow auto types --- packages/router/package.json | 36 +++++++++++++++++++++ packages/router/vue-router-auto-routes.d.ts | 4 +++ packages/router/vue-router-auto.d.ts | 4 +++ 3 files changed, 44 insertions(+) create mode 100644 packages/router/vue-router-auto-routes.d.ts create mode 100644 packages/router/vue-router-auto.d.ts diff --git a/packages/router/package.json b/packages/router/package.json index d0f7d3f02..635bf63b7 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -7,6 +7,40 @@ "module": "dist/vue-router.mjs", "types": "dist/vue-router.d.ts", "exports": { + "./auto-routes": { + "types": "./vue-router-auto-routes.d.ts", + "node": { + "import": { + "production": "./dist/vue-router.node.mjs", + "development": "./dist/vue-router.node.mjs", + "default": "./dist/vue-router.node.mjs" + }, + "require": { + "production": "./dist/vue-router.prod.cjs", + "development": "./dist/vue-router.cjs", + "default": "./index.js" + } + }, + "import": "./dist/vue-router.mjs", + "require": "./index.js" + }, + "./auto": { + "types": "./vue-router-auto.d.ts", + "node": { + "import": { + "production": "./dist/vue-router.node.mjs", + "development": "./dist/vue-router.node.mjs", + "default": "./dist/vue-router.node.mjs" + }, + "require": { + "production": "./dist/vue-router.prod.cjs", + "development": "./dist/vue-router.cjs", + "default": "./index.js" + } + }, + "import": "./dist/vue-router.mjs", + "require": "./index.js" + }, ".": { "types": "./dist/vue-router.d.ts", "node": { @@ -47,6 +81,8 @@ "index.js", "dist/*.{js,cjs,mjs}", "dist/vue-router.d.ts", + "vue-router-auto.d.ts", + "vue-router-auto-routes.d.ts", "vetur/tags.json", "vetur/attributes.json", "README.md" diff --git a/packages/router/vue-router-auto-routes.d.ts b/packages/router/vue-router-auto-routes.d.ts new file mode 100644 index 000000000..0740abc02 --- /dev/null +++ b/packages/router/vue-router-auto-routes.d.ts @@ -0,0 +1,4 @@ +/** + * Array of routes generated by unplugin-vue-router + */ +export const routes: any[] diff --git a/packages/router/vue-router-auto.d.ts b/packages/router/vue-router-auto.d.ts new file mode 100644 index 000000000..56e8a0979 --- /dev/null +++ b/packages/router/vue-router-auto.d.ts @@ -0,0 +1,4 @@ +/** + * Extended by unplugin-vue-router to create typed routes. + */ +export interface RouteNamedMap {} From 666c1c28c88468526ced9fcf143a2809c02d8361 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 23 Jan 2024 08:59:47 +0100 Subject: [PATCH 002/193] chore: testing out auto types --- packages/router/package.json | 2 +- packages/router/vue-router-auto-routes.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/router/package.json b/packages/router/package.json index 635bf63b7..7ff95bdc1 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "vue-router", - "version": "4.2.5", + "version": "4.3.0-alpha.1", "main": "index.js", "unpkg": "dist/vue-router.global.js", "jsdelivr": "dist/vue-router.global.js", diff --git a/packages/router/vue-router-auto-routes.d.ts b/packages/router/vue-router-auto-routes.d.ts index 0740abc02..12fcf1cf7 100644 --- a/packages/router/vue-router-auto-routes.d.ts +++ b/packages/router/vue-router-auto-routes.d.ts @@ -1,4 +1,4 @@ /** * Array of routes generated by unplugin-vue-router */ -export const routes: any[] +export declare const routes: any[] From 4d3cbf58295055ce045efda13db6a1afd144d172 Mon Sep 17 00:00:00 2001 From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Sun, 4 Feb 2024 09:58:08 +0000 Subject: [PATCH 003/193] docs: omitting parent components for nested routes (#2127) * docs: omitting parent components for nested routes * Update packages/docs/guide/essentials/nested-routes.md --------- Co-authored-by: Eduardo San Martin Morote --- packages/docs/.vitepress/theme/index.ts | 2 +- .../docs/guide/essentials/nested-routes.md | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/docs/.vitepress/theme/index.ts b/packages/docs/.vitepress/theme/index.ts index a024db948..4fd5c4eb0 100644 --- a/packages/docs/.vitepress/theme/index.ts +++ b/packages/docs/.vitepress/theme/index.ts @@ -15,7 +15,7 @@ const i18nLabels = { } const theme: Theme = { - ...DefaultTheme, + extends: DefaultTheme, Layout() { return h(DefaultTheme.Layout, null, { // 'home-features-after': () => h(HomeSponsors), diff --git a/packages/docs/guide/essentials/nested-routes.md b/packages/docs/guide/essentials/nested-routes.md index 6a8ec20f4..c48241332 100644 --- a/packages/docs/guide/essentials/nested-routes.md +++ b/packages/docs/guide/essentials/nested-routes.md @@ -128,3 +128,24 @@ const routes = [ }, ] ``` + +## Omitting parent components + +We can also take advantage of the parent-child relationship between routes without needing to nest route components. This can be useful for grouping together routes with a common path prefix, or when working with [route meta fields](../advanced/meta). + +To achieve this, we omit the `component` and `components` options from the parent route: + +```js +const routes = [ + { + path: '/admin', + children: [ + { path: '', component: AdminOverview }, + { path: 'users', component: AdminUserList }, + { path: 'users/:id', component: AdminUserDetails }, + ], + }, +] +``` + +As the parent doesn't specify a route component, the top-level `` will skip over the parent and just use the component from the relevant child instead. From 3025e826e96e439cd8e1ad5a2a4bf5b1b45b1265 Mon Sep 17 00:00:00 2001 From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Tue, 6 Feb 2024 08:13:39 +0000 Subject: [PATCH 004/193] docs: explain per-route guards on nested routes (#2130) --- .../docs/guide/advanced/navigation-guards.md | 23 ++++++++++++++++++- .../docs/guide/essentials/nested-routes.md | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/docs/guide/advanced/navigation-guards.md b/packages/docs/guide/advanced/navigation-guards.md index 1d0067f60..57884d3c7 100644 --- a/packages/docs/guide/advanced/navigation-guards.md +++ b/packages/docs/guide/advanced/navigation-guards.md @@ -197,7 +197,28 @@ const routes = [ ] ``` -Note it is possible to achieve a similar behavior by using [route meta fields](./meta.md) and global navigation guards. +When working with [nested routes](../essentials/nested-routes), both parent and child routes can use `beforeEnter`. When placed on a parent route, it won't be triggered when moving between children with that same parent. For example: + +```js +const routes = [ + { + path: '/user', + beforeEnter() { + // ... + }, + children: [ + { path: 'list', component: UserList }, + { path: 'details', component: UserDetails }, + ], + }, +] +``` + +The `beforeEnter` in the example above won't be called when moving between `/user/list` and `/user/details`, as they share the same parent. If we put the `beforeEnter` guard directly on the `details` route instead, that would be called when moving between those two routes. + +::: tip +It is possible to achieve similar behavior to per-route guards by using [route meta fields](./meta) and global navigation guards. +::: ## In-Component Guards diff --git a/packages/docs/guide/essentials/nested-routes.md b/packages/docs/guide/essentials/nested-routes.md index c48241332..fd3764b1c 100644 --- a/packages/docs/guide/essentials/nested-routes.md +++ b/packages/docs/guide/essentials/nested-routes.md @@ -131,7 +131,7 @@ const routes = [ ## Omitting parent components -We can also take advantage of the parent-child relationship between routes without needing to nest route components. This can be useful for grouping together routes with a common path prefix, or when working with [route meta fields](../advanced/meta). +We can also take advantage of the parent-child relationship between routes without needing to nest route components. This can be useful for grouping together routes with a common path prefix, or when working with more advanced features, such as [per-route navigation guards](../advanced/navigation-guards#Per-Route-Guard) or [route meta fields](../advanced/meta). To achieve this, we omit the `component` and `components` options from the parent route: From ecaf2d588131eb1dde9e662675ffb579a1f728e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=B6=E8=BF=9C=E6=96=B9?= Date: Tue, 13 Feb 2024 23:50:28 +0800 Subject: [PATCH 005/193] chore: defining default values for Props using withDefaults (#1880) [skip ci] --- .../theme/components/HomeSponsorsGroup.vue | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/docs/.vitepress/theme/components/HomeSponsorsGroup.vue b/packages/docs/.vitepress/theme/components/HomeSponsorsGroup.vue index 8e876c6f6..3ec29135f 100644 --- a/packages/docs/.vitepress/theme/components/HomeSponsorsGroup.vue +++ b/packages/docs/.vitepress/theme/components/HomeSponsorsGroup.vue @@ -31,22 +31,19 @@ + - - diff --git a/packages/docs/public/vue-cert-logo.svg b/packages/docs/public/vue-cert-logo.svg new file mode 100644 index 000000000..e01247d15 --- /dev/null +++ b/packages/docs/public/vue-cert-logo.svg @@ -0,0 +1,5 @@ + From 8e5f04f1feb50a832723896aa007bd42c4e8564e Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 16 Apr 2024 17:34:57 +0200 Subject: [PATCH 035/193] docs: update aside --- .../theme/components/AsideSponsors.vue | 4 +- packages/docs/package.json | 6 +- packages/playground/package.json | 8 +- packages/router/package.json | 8 +- pnpm-lock.yaml | 1030 +++++++---------- 5 files changed, 456 insertions(+), 600 deletions(-) diff --git a/packages/docs/.vitepress/theme/components/AsideSponsors.vue b/packages/docs/.vitepress/theme/components/AsideSponsors.vue index e9277cb9b..627efb280 100644 --- a/packages/docs/.vitepress/theme/components/AsideSponsors.vue +++ b/packages/docs/.vitepress/theme/components/AsideSponsors.vue @@ -1,7 +1,7 @@