feat: merge stores, fix auto navigation, split summary

This commit is contained in:
Simon Emanuelsson
2024-11-12 15:30:59 +01:00
parent a69d14ff61
commit ccb15593ea
82 changed files with 2149 additions and 1842 deletions
-39
View File
@@ -1,39 +0,0 @@
import type { BedTypeSchema } from "@/types/components/hotelReservation/enterDetails/bedType"
import type { BookingData } from "@/types/components/hotelReservation/enterDetails/bookingData"
import type { BreakfastPackage } from "@/types/components/hotelReservation/enterDetails/breakfast"
import type { DetailsSchema } from "@/types/components/hotelReservation/enterDetails/details"
import { StepEnum } from "@/types/enums/step"
export interface DetailsState {
actions: {
setIsSubmittingDisabled: (isSubmittingDisabled: boolean) => void
setTotalPrice: (totalPrice: TotalPrice) => void
toggleSummaryOpen: () => void
updateBedType: (data: BedTypeSchema) => void
updateBreakfast: (data: BreakfastPackage | false) => void
updateDetails: (data: DetailsSchema) => void
}
data: DetailsSchema & {
bedType: BedTypeSchema | undefined
breakfast: BreakfastPackage | false | undefined
booking: BookingData
}
isSubmittingDisabled: boolean
isSummaryOpen: boolean
isValid: Record<StepEnum, boolean>
totalPrice: TotalPrice
}
export interface InitialState extends Partial<DetailsState> {
booking: BookingData
}
interface Price {
currency: string
amount: number
}
export interface TotalPrice {
euro: Price | undefined
local: Price
}
+68
View File
@@ -0,0 +1,68 @@
import type { BedTypeSchema } from "@/types/components/hotelReservation/enterDetails/bedType"
import type { BookingData } from "@/types/components/hotelReservation/enterDetails/bookingData"
import type { BreakfastPackage } from "@/types/components/hotelReservation/enterDetails/breakfast"
import type {
DetailsSchema,
SignedInDetailsSchema,
} from "@/types/components/hotelReservation/enterDetails/details"
import { StepEnum } from "@/types/enums/step"
import type { DetailsProviderProps } from "../providers/enter-details"
import type { Packages } from "../requests/packages"
interface TPrice {
currency: string
price: number
}
export interface Price {
euro: TPrice | undefined
local: TPrice
}
export interface FormValues {
bedType: BedTypeSchema | undefined
booking: BookingData
breakfast: BreakfastPackage | false | undefined
guest: DetailsSchema | SignedInDetailsSchema
}
export interface DetailsState {
actions: {
completeStep: () => void
navigate: (step: StepEnum) => void
setIsSubmittingDisabled: (isSubmittingDisabled: boolean) => void
setStep: (step: StepEnum) => void
setTotalPrice: (totalPrice: Price) => void
toggleSummaryOpen: () => void
updateBedType: (data: BedTypeSchema) => void
updateBreakfast: (data: BreakfastPackage | false) => void
updateDetails: (data: DetailsSchema) => void
}
bedType: BedTypeSchema | undefined
booking: BookingData
breakfast: BreakfastPackage | false | undefined
currentStep: StepEnum
formValues: FormValues
guest: DetailsSchema
isSubmittingDisabled: boolean
isSummaryOpen: boolean
isValid: Record<StepEnum, boolean>
packages: Packages | null
roomRate: DetailsProviderProps["roomRate"]
roomPrice: Price
steps: StepEnum[]
totalPrice: Price
}
export type InitialState = Pick<DetailsState, "booking" | "packages"> &
Pick<DetailsProviderProps, "roomRate"> & {
bedType?: BedTypeSchema
breakfast?: false
}
export type PersistedState = Pick<
DetailsState,
"bedType" | "booking" | "breakfast" | "guest" | "totalPrice"
>
export type RoomRate = DetailsProviderProps["roomRate"]
-10
View File
@@ -1,10 +0,0 @@
import { StepEnum } from "@/types/enums/step"
export interface StepState {
completeStep: () => void
navigate: (step: StepEnum) => void
setStep: (step: StepEnum) => void
currentStep: StepEnum
steps: StepEnum[]
}