Merged in fix/SW-3026-prod---users-are-not-focused-on- (pull request #2379)

fix: SW-3026 Fixed scroll issue

* fix: SW-3026 Fixed scroll issue

* fix: SW-3026 Moved to global solution for scroll to top after page navigation


Approved-by: Tobias Johansson
Approved-by: Linus Flood
This commit is contained in:
Hrishikesh Vaipurkar
2025-06-18 12:27:58 +00:00
parent 846fd904a6
commit 64a56b7050
6 changed files with 16 additions and 11 deletions

View File

@@ -17,11 +17,11 @@ import Footer from "@/components/Footer"
import Header from "@/components/Header" import Header from "@/components/Header"
import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner" import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner"
import { RACRouterProvider } from "@/components/RACRouterProvider" import { RACRouterProvider } from "@/components/RACRouterProvider"
import RouteChange from "@/components/RouteChange"
import SitewideAlert from "@/components/SitewideAlert" import SitewideAlert from "@/components/SitewideAlert"
import { ToastHandler } from "@/components/TempDesignSystem/Toasts" import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript" import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript"
import GTMScript from "@/components/TrackingSDK/GTMScript" import GTMScript from "@/components/TrackingSDK/GTMScript"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { FontPreload } from "@/fonts/font-preloading" import { FontPreload } from "@/fonts/font-preloading"
import { getMessages } from "@/i18n" import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider" import ClientIntlProvider from "@/i18n/Provider"
@@ -74,7 +74,7 @@ export default async function RootLayout(
> >
<TrpcProvider> <TrpcProvider>
<RACRouterProvider> <RACRouterProvider>
<RouterTracking /> <RouteChange />
<SitewideAlert /> <SitewideAlert />
<Header /> <Header />
{bookingwidget} {bookingwidget}

View File

@@ -14,8 +14,8 @@ import CookieBotConsent from "@/components/CookieBot"
import AdobeScript from "@/components/Current/AdobeScript" import AdobeScript from "@/components/Current/AdobeScript"
import Footer from "@/components/Current/Footer" import Footer from "@/components/Current/Footer"
import LangPopup from "@/components/Current/LangPopup" import LangPopup from "@/components/Current/LangPopup"
import RouteChange from "@/components/RouteChange"
import SkipToMainContent from "@/components/SkipToMainContent" import SkipToMainContent from "@/components/SkipToMainContent"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { getMessages } from "@/i18n" import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider" import ClientIntlProvider from "@/i18n/Provider"
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
@@ -70,7 +70,7 @@ export default async function RootLayout(
locale={params.lang} locale={params.lang}
messages={messages} messages={messages}
> >
<RouterTracking /> <RouteChange />
{header} {header}
{children} {children}
<Footer /> <Footer />

View File

@@ -14,10 +14,10 @@ import TrpcProvider from "@/lib/trpc/Provider"
import { SessionRefresher } from "@/components/Auth/TokenRefresher" import { SessionRefresher } from "@/components/Auth/TokenRefresher"
import CookieBotConsent from "@/components/CookieBot" import CookieBotConsent from "@/components/CookieBot"
import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner" import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner"
import RouteChange from "@/components/RouteChange"
import { ToastHandler } from "@/components/TempDesignSystem/Toasts" import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript" import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript"
import GTMScript from "@/components/TrackingSDK/GTMScript" import GTMScript from "@/components/TrackingSDK/GTMScript"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { getMessages } from "@/i18n" import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider" import ClientIntlProvider from "@/i18n/Provider"
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
@@ -61,7 +61,7 @@ export default async function RootLayout(
messages={messages} messages={messages}
> >
<TrpcProvider> <TrpcProvider>
<RouterTracking /> <RouteChange />
{children} {children}
<ToastHandler /> <ToastHandler />
<SessionRefresher /> <SessionRefresher />

View File

@@ -14,10 +14,10 @@ import TrpcProvider from "@/lib/trpc/Provider"
import TokenRefresher from "@/components/Auth/TokenRefresher" import TokenRefresher from "@/components/Auth/TokenRefresher"
import CookieBotConsent from "@/components/CookieBot" import CookieBotConsent from "@/components/CookieBot"
import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner" import StorageCleaner from "@/components/HotelReservation/EnterDetails/StorageCleaner"
import RouteChange from "@/components/RouteChange"
import { ToastHandler } from "@/components/TempDesignSystem/Toasts" import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript" import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript"
import GTMScript from "@/components/TrackingSDK/GTMScript" import GTMScript from "@/components/TrackingSDK/GTMScript"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { FontPreload } from "@/fonts/font-preloading" import { FontPreload } from "@/fonts/font-preloading"
import { getMessages } from "@/i18n" import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider" import ClientIntlProvider from "@/i18n/Provider"
@@ -66,7 +66,7 @@ export default async function RootLayout(
messages={messages} messages={messages}
> >
<TrpcProvider> <TrpcProvider>
<RouterTracking /> <RouteChange />
{children} {children}
<ToastHandler /> <ToastHandler />
<TokenRefresher /> <TokenRefresher />

View File

@@ -9,10 +9,10 @@ import { Lang } from "@scandic-hotels/common/constants/language"
import TrpcProvider from "@/lib/trpc/Provider" import TrpcProvider from "@/lib/trpc/Provider"
import RouteChange from "@/components/RouteChange"
import { ToastHandler } from "@/components/TempDesignSystem/Toasts" import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript" import AdobeSDKScript from "@/components/TrackingSDK/AdobeSDKScript"
import GTMScript from "@/components/TrackingSDK/GTMScript" import GTMScript from "@/components/TrackingSDK/GTMScript"
import RouterTracking from "@/components/TrackingSDK/RouterTracking"
import { FontPreload } from "@/fonts/font-preloading" import { FontPreload } from "@/fonts/font-preloading"
import { getMessages } from "@/i18n" import { getMessages } from "@/i18n"
import ClientIntlProvider from "@/i18n/Provider" import ClientIntlProvider from "@/i18n/Provider"
@@ -57,7 +57,7 @@ export default async function RootLayout(
messages={messages} messages={messages}
> >
<TrpcProvider> <TrpcProvider>
<RouterTracking /> <RouteChange />
{children} {children}
<ToastHandler /> <ToastHandler />
</TrpcProvider> </TrpcProvider>

View File

@@ -9,7 +9,7 @@ import useTrackingStore from "@/stores/tracking"
import useLang from "@/hooks/useLang" import useLang from "@/hooks/useLang"
import { trackPageViewStart } from "@/utils/tracking" import { trackPageViewStart } from "@/utils/tracking"
export default function RouterTracking() { export default function RouteChange() {
const pathName = usePathname() const pathName = usePathname()
const searchParams = useSearchParams() const searchParams = useSearchParams()
const currentLang = useLang() const currentLang = useLang()
@@ -28,6 +28,11 @@ export default function RouterTracking() {
return return
} }
if (hasPathOrLangChanged()) {
// Scroll to top on page load whenever page is navigated to new URL (page)
window.scrollTo({ top: 0, left: 0, behavior: "instant" })
}
updateRouteInfo(pathName, currentLang, searchParams) updateRouteInfo(pathName, currentLang, searchParams)
if (hasPathOrLangChanged() || hasBookingFlowParamsChanged()) { if (hasPathOrLangChanged() || hasBookingFlowParamsChanged()) {
setInitialPageLoadTime(Date.now()) setInitialPageLoadTime(Date.now())