From 02912b46ab395ff245016308571271fcc19eb77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Fri, 4 Nov 2022 17:33:18 +0100 Subject: [PATCH 1/3] fix(app): detect if global transitions are activated Resolves a regression from #8463 Learn more in the comments from #8327 --- packages/nuxt/src/pages/runtime/router.options.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nuxt/src/pages/runtime/router.options.ts b/packages/nuxt/src/pages/runtime/router.options.ts index ce63f731aca..a2877aad084 100644 --- a/packages/nuxt/src/pages/runtime/router.options.ts +++ b/packages/nuxt/src/pages/runtime/router.options.ts @@ -2,6 +2,7 @@ import type { RouterConfig } from '@nuxt/schema' import type { RouterScrollBehavior, RouteLocationNormalized } from 'vue-router' import { nextTick } from 'vue' import { useNuxtApp } from '#app' +import { appPageTransition as defaultPageTransition } from '#build/nuxt.config.mjs' type ScrollPosition = Awaited> @@ -31,7 +32,7 @@ export default { } // Wait for `page:transition:finish` or `page:finish` depending on if transitions are enabled or not - const hasTransition = to.meta.pageTransition !== false && from.meta.pageTransition !== false + const hasTransition = defaultPageTransition || (to.meta.pageTransition && from.meta.pageTransition) const hookToWait = hasTransition ? 'page:transition:finish' : 'page:finish' return new Promise((resolve) => { nuxtApp.hooks.hookOnce(hookToWait, async () => { From ca5058f70c0abc1c61879cfa96e02f60866222a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Fri, 4 Nov 2022 18:02:06 +0100 Subject: [PATCH 2/3] chore: fix ts check --- packages/nuxt/src/pages/runtime/router.options.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nuxt/src/pages/runtime/router.options.ts b/packages/nuxt/src/pages/runtime/router.options.ts index a2877aad084..7f4fd43d4fb 100644 --- a/packages/nuxt/src/pages/runtime/router.options.ts +++ b/packages/nuxt/src/pages/runtime/router.options.ts @@ -2,6 +2,7 @@ import type { RouterConfig } from '@nuxt/schema' import type { RouterScrollBehavior, RouteLocationNormalized } from 'vue-router' import { nextTick } from 'vue' import { useNuxtApp } from '#app' +// @ts-ignore import { appPageTransition as defaultPageTransition } from '#build/nuxt.config.mjs' type ScrollPosition = Awaited> From ed5ef126d728517054e84a65f680496ab1370f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Fri, 4 Nov 2022 19:01:15 +0100 Subject: [PATCH 3/3] chore: refactor to check both hasTransition --- packages/nuxt/src/pages/runtime/router.options.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nuxt/src/pages/runtime/router.options.ts b/packages/nuxt/src/pages/runtime/router.options.ts index 7f4fd43d4fb..d5e8acc7e27 100644 --- a/packages/nuxt/src/pages/runtime/router.options.ts +++ b/packages/nuxt/src/pages/runtime/router.options.ts @@ -33,8 +33,8 @@ export default { } // Wait for `page:transition:finish` or `page:finish` depending on if transitions are enabled or not - const hasTransition = defaultPageTransition || (to.meta.pageTransition && from.meta.pageTransition) - const hookToWait = hasTransition ? 'page:transition:finish' : 'page:finish' + const hasTransition = (route: RouteLocationNormalized) => !!(route.meta.pageTransition ?? defaultPageTransition) + const hookToWait = (hasTransition(from) && hasTransition(to)) ? 'page:transition:finish' : 'page:finish' return new Promise((resolve) => { nuxtApp.hooks.hookOnce(hookToWait, async () => { await nextTick()