feat(SW-1259): Enter details multiroom * refactor: remove per-step URLs * WIP: map multiroom data * fix: lint errors in details page * fix: made useEnterDetailsStore tests pass * fix: WIP refactor enter details store * fix: WIP enter details store update * fix: added room index to select correct room * fix: added logic for navigating between steps and rooms * fix: update summary to work with store changes * fix: added room and total price calculation * fix: removed unused code and added test for breakfast included * refactor: move store selectors into helpers * refactor: session storage state for multiroom booking * feat: update enter details accordion navigation * fix: added room index to each form component so they select correct room * fix: added unique id to input to handle case when multiple inputs have same name * fix: update payment step with store changes * fix: rebase issues * fix: now you should only be able to go to a step if previous room is completed * refactor: cleanup * fix: if no availability just skip that room for now * fix: add select-rate Summary and adjust typings Approved-by: Arvid Norlin
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
"use client"
|
|
|
|
import { useEnterDetailsStore } from "@/stores/enter-details"
|
|
|
|
import SignupPromoMobile from "@/components/HotelReservation/SignupPromo/Mobile"
|
|
|
|
import SummaryUI from "../UI"
|
|
import SummaryBottomSheet from "./BottomSheet"
|
|
|
|
import styles from "./mobile.module.css"
|
|
|
|
import type { SummaryProps } from "@/types/components/hotelReservation/summary"
|
|
|
|
export default function MobileSummary(props: SummaryProps) {
|
|
const {
|
|
booking,
|
|
actions: { toggleSummaryOpen, togglePriceDetailsModalOpen },
|
|
totalPrice,
|
|
vat,
|
|
} = useEnterDetailsStore((state) => state)
|
|
|
|
const rooms = useEnterDetailsStore((state) => state.rooms)
|
|
|
|
const showPromo =
|
|
!props.isMember &&
|
|
rooms.length === 1 &&
|
|
!rooms[0].guest.join &&
|
|
!rooms[0].guest.membershipNo
|
|
|
|
return (
|
|
<div className={styles.mobileSummary}>
|
|
{showPromo ? <SignupPromoMobile /> : null}
|
|
<SummaryBottomSheet>
|
|
<div className={styles.wrapper}>
|
|
<SummaryUI
|
|
booking={booking}
|
|
rooms={rooms}
|
|
isMember={props.isMember}
|
|
breakfastIncluded={props.breakfastIncluded}
|
|
totalPrice={totalPrice}
|
|
vat={vat}
|
|
toggleSummaryOpen={toggleSummaryOpen}
|
|
togglePriceDetailsModalOpen={togglePriceDetailsModalOpen}
|
|
/>
|
|
</div>
|
|
</SummaryBottomSheet>
|
|
</div>
|
|
)
|
|
}
|