Merged in feat/SW-1055-Accordion-for-summary-bar-in-mobile-on-Select-Rate (pull request #1283)

Feat/SW-1055 Accordion for summary bar in mobile on Select Rate

* feat(SW-1055) created mobile summary for select rate

* feat(SW-1055) Added summary for mobile (accordion)


Approved-by: Tobias Johansson
This commit is contained in:
Pontus Dreij
2025-02-10 15:11:31 +00:00
parent 5a0edc9187
commit c863294919
20 changed files with 405 additions and 89 deletions

View File

@@ -7,6 +7,7 @@ import type {
RoomPackages,
} from "@/types/components/hotelReservation/selectRate/roomFilter"
import type {
Child,
Rate,
RateCode,
} from "@/types/components/hotelReservation/selectRate/selectRate"
@@ -22,6 +23,9 @@ export interface RateSummaryParams {
interface RateSelectionState {
selectedRates: (RateCode | undefined)[]
rateSummary: (Rate | null)[]
isPriceDetailsModalOpen: boolean
isSummaryOpen: boolean
guestsInRooms: { adults: number; children?: Child[] }[]
modifyRate: (index: number) => void
selectRate: (index: number, rate: RateCode | undefined) => void
initializeRates: (count: number) => void
@@ -31,11 +35,17 @@ interface RateSelectionState {
roomCategories,
}: RateSummaryParams) => void
getSelectedRateSummary: () => Rate[]
togglePriceDetailsModalOpen: () => void
toggleSummaryOpen: () => void
setGuestsInRooms: (index: number, adults: number, children?: Child[]) => void
}
export const useRateSelectionStore = create<RateSelectionState>((set, get) => ({
selectedRates: [],
rateSummary: [],
isPriceDetailsModalOpen: false,
isSummaryOpen: false,
guestsInRooms: [{ adults: 1 }],
modifyRate: (index) =>
set((state) => {
const newRates = [...state.selectedRates]
@@ -69,4 +79,24 @@ export const useRateSelectionStore = create<RateSelectionState>((set, get) => ({
const { rateSummary } = get()
return rateSummary.filter((summary): summary is Rate => summary !== null)
},
togglePriceDetailsModalOpen: () => {
set((state) => ({
isPriceDetailsModalOpen: !state.isPriceDetailsModalOpen,
}))
},
toggleSummaryOpen: () => {
set((state) => ({
isSummaryOpen: !state.isSummaryOpen,
}))
},
setGuestsInRooms: (index, adults, children) => {
set((state) => ({
guestsInRooms: [
...state.guestsInRooms.slice(0, index),
{ adults, children },
...state.guestsInRooms.slice(index + 1),
],
}))
},
}))