feat(SW-2262): Added functionality to support browsers back functionality to close SidePeek

Approved-by: Linus Flood
This commit is contained in:
Erik Tiekstra
2025-05-16 11:23:58 +00:00
parent 96821c7a6f
commit 61814698ee

View File

@@ -1,5 +1,7 @@
"use client" "use client"
import { useEffect } from "react"
import { trpc } from "@/lib/trpc/client" import { trpc } from "@/lib/trpc/client"
import useSidePeekStore from "@/stores/sidepeek" import useSidePeekStore from "@/stores/sidepeek"
@@ -17,7 +19,7 @@ export default function HotelReservationSidePeek() {
showCTA: state.showCTA, showCTA: state.showCTA,
}) })
) )
const close = useSidePeekStore((state) => state.closeSidePeek) const closeFn = useSidePeekStore((state) => state.closeSidePeek)
const lang = useLang() const lang = useLang()
const { data: hotelData } = trpc.hotel.get.useQuery( const { data: hotelData } = trpc.hotel.get.useQuery(
@@ -35,6 +37,30 @@ export default function HotelReservationSidePeek() {
room.roomTypes.some((type) => type.code === roomTypeCode) room.roomTypes.some((type) => type.code === roomTypeCode)
) )
function handleCloseClick() {
window.history.back()
}
useEffect(() => {
if (activeSidePeek) {
window.history.pushState(null, "", window.location.href)
}
}, [activeSidePeek])
useEffect(() => {
function handlePopState() {
if (activeSidePeek) {
closeFn()
}
}
window.addEventListener("popstate", handlePopState)
return () => {
window.removeEventListener("popstate", handlePopState)
}
}, [activeSidePeek, closeFn])
if (activeSidePeek) { if (activeSidePeek) {
return ( return (
<> <>
@@ -45,7 +71,7 @@ export default function HotelReservationSidePeek() {
hotel={hotelData.hotel} hotel={hotelData.hotel}
restaurants={hotelData.restaurants} restaurants={hotelData.restaurants}
activeSidePeek={activeSidePeek} activeSidePeek={activeSidePeek}
close={close} close={handleCloseClick}
showCTA={showCTA} showCTA={showCTA}
/> />
<AmenitiesSidePeek <AmenitiesSidePeek
@@ -53,7 +79,7 @@ export default function HotelReservationSidePeek() {
restaurants={hotelData.restaurants} restaurants={hotelData.restaurants}
additionalHotelData={hotelData.additionalData} additionalHotelData={hotelData.additionalData}
activeSidePeek={activeSidePeek} activeSidePeek={activeSidePeek}
close={close} close={handleCloseClick}
/> />
</> </>
)} )}
@@ -61,7 +87,7 @@ export default function HotelReservationSidePeek() {
<RoomSidePeek <RoomSidePeek
room={selectedRoom} room={selectedRoom}
activeSidePeek={activeSidePeek} activeSidePeek={activeSidePeek}
close={close} close={handleCloseClick}
/> />
)} )}
</> </>