feat: keep inventory of bedselections

This commit is contained in:
Simon Emanuelsson
2025-05-16 16:58:53 +02:00
committed by Michael Zetterberg
parent 39b89c5d51
commit 5ca30d02a0
12 changed files with 153 additions and 47 deletions

View File

@@ -9,6 +9,7 @@ import {
type BedTypeEnum,
type ExtraBedTypeEnum,
} from "@/constants/booking"
import { useEnterDetailsStore } from "@/stores/enter-details"
import RadioCard from "@/components/TempDesignSystem/Form/RadioCard"
import { useRoomContext } from "@/contexts/Details/Room"
@@ -23,6 +24,7 @@ import type { IconProps } from "@scandic-hotels/design-system/Icons"
import type { BedTypeFormSchema } from "@/types/components/hotelReservation/enterDetails/bedType"
export default function BedType() {
const availableBeds = useEnterDetailsStore((state) => state.availableBeds)
const {
actions: { updateBedType },
room: { bedType, bedTypes },
@@ -79,6 +81,11 @@ export default function BedType() {
roomType.size.max === roomType.size.min
? `${roomType.size.min} cm`
: `${roomType.size.min} cm - ${roomType.size.max} cm`
const bedAvailable = availableBeds[roomType.value]
// This is needed since otherwise, picking the last room would make
// the card disabled
const isSameBedAsSelected = bedType?.roomTypeCode === roomType.value
return (
<RadioCard
key={roomType.value}
@@ -89,6 +96,7 @@ export default function BedType() {
props={props}
/>
)}
disabled={!bedAvailable && !isSameBedAsSelected}
id={roomType.value}
name="bedType"
subtitle={width}

View File

@@ -20,10 +20,9 @@ import { StepEnum } from "@/types/enums/step"
export default function Multiroom() {
const intl = useIntl()
const { room, roomNr } = useRoomContext()
const { breakfastPackages } = useEnterDetailsStore((state) => ({
breakfastPackages: state.breakfastPackages,
rooms: state.rooms,
}))
const breakfastPackages = useEnterDetailsStore(
(state) => state.breakfastPackages
)
const showBreakfastStep =
!room.breakfastIncluded && !!breakfastPackages.length
@@ -55,7 +54,7 @@ export default function Multiroom() {
<SelectedRoom />
{room.bedTypes ? (
{room.bedTypes.length ? (
<Section
header={intl.formatMessage({ defaultMessage: "Bed preference" })}
label={intl.formatMessage({ defaultMessage: "Preferred bed type" })}