Feat/SW-1737 design mystay multiroom * feat(SW-1737) Fixed member view of guest details * feat(SW-1737) fix merge issues * feat(SW-1737) Fixed price details * feat(SW-1737) removed unused imports * feat(SW-1737) removed true as statement * feat(SW-1737) updated store handling * feat(SW-1737) fixed bug showing double numbers * feat(SW-1737) small design fixed * feat(SW-1737) fixed rebase errors * feat(SW-1737) fixed create booking error with dates * feat(SW-1737) fixed view multiroom as singleroom * feat(SW-1737) fixes for multiroom * feat(SW-1737) fixed bookingsummary * feat(SW-1737) dont hide modify dates * feat(SW-1737) updated breakfast to handle number * feat(SW-1737) Added red color if member rate * feat(SW-1737) fix PR comments * feat(SW-1737) updated member tiers svg * feat(SW-1737) updated how to handle paymentMethodDescription * feat(SW-1737) fixes after testing mystay * feat(SW-1737) updated Room type to just use whats used * feat(SW-1737) fixed access * feat(SW-1737) refactor my stay after PR comments * feat(SW-1737) fix roomNumber translation * feat(SW-1737) removed log Approved-by: Arvid Norlin
92 lines
2.3 KiB
TypeScript
92 lines
2.3 KiB
TypeScript
"use client"
|
|
|
|
import { useIntl } from "react-intl"
|
|
|
|
import { useManageStayStore } from "@/stores/my-stay/manageStayStore"
|
|
import { useMyStayRoomDetailsStore } from "@/stores/my-stay/myStayRoomDetailsStore"
|
|
|
|
import { ChevronDownIcon } from "@/components/Icons"
|
|
import Modal from "@/components/Modal"
|
|
import Button from "@/components/TempDesignSystem/Button"
|
|
|
|
import GuaranteeLateArrival from "../GuaranteeLateArrival"
|
|
import CancelStay from "./ActionPanel/Actions/CancelStay"
|
|
import ModifyStay from "./ActionPanel/Actions/ModifyStay"
|
|
import ActionPanel from "./ActionPanel"
|
|
|
|
import type { Hotel } from "@/types/hotel"
|
|
import { type CreditCard } from "@/types/user"
|
|
|
|
interface ManageStayProps {
|
|
hotel: Hotel
|
|
savedCreditCards: CreditCard[] | null
|
|
refId: string
|
|
isLoggedIn: boolean
|
|
}
|
|
|
|
export default function ManageStay({
|
|
hotel,
|
|
savedCreditCards,
|
|
refId,
|
|
isLoggedIn,
|
|
}: ManageStayProps) {
|
|
const intl = useIntl()
|
|
const {
|
|
isOpen,
|
|
activeView,
|
|
actions: { setIsOpen, handleCloseModal },
|
|
} = useManageStayStore()
|
|
|
|
const bookedRoom = useMyStayRoomDetailsStore((state) => state.bookedRoom)
|
|
const linkedReservationRooms = useMyStayRoomDetailsStore(
|
|
(state) => state.linkedReservationRooms
|
|
)
|
|
|
|
const allRoomsCancelled =
|
|
linkedReservationRooms.every((room) => room.isCancelled) &&
|
|
bookedRoom.isCancelled
|
|
|
|
function renderContent() {
|
|
switch (activeView) {
|
|
case "cancelStay":
|
|
return <CancelStay hotel={hotel} />
|
|
case "modifyStay":
|
|
return <ModifyStay isLoggedIn={isLoggedIn} />
|
|
case "guaranteeLateArrival":
|
|
return (
|
|
<GuaranteeLateArrival
|
|
savedCreditCards={savedCreditCards}
|
|
refId={refId}
|
|
/>
|
|
)
|
|
default:
|
|
return <ActionPanel hotel={hotel} />
|
|
}
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<Button
|
|
variant="icon"
|
|
fullWidth
|
|
onClick={() => setIsOpen(true)}
|
|
size="small"
|
|
disabled={allRoomsCancelled}
|
|
>
|
|
{intl.formatMessage({ id: "Manage stay" })}
|
|
<ChevronDownIcon width={24} height={24} color="burgundy" />
|
|
</Button>
|
|
{isOpen && (
|
|
<Modal
|
|
isOpen={isOpen}
|
|
onToggle={handleCloseModal}
|
|
withActions
|
|
hideHeader
|
|
>
|
|
{renderContent()}
|
|
</Modal>
|
|
)}
|
|
</>
|
|
)
|
|
}
|