feat(SW-2262): Added functionality to support browsers back functionality to close SidePeek
Approved-by: Linus Flood
This commit is contained in:
@@ -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}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user