@roomstay/frontend 2.6.43 → 2.6.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/109.bundle.js +1 -0
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/449.bundle.js +1 -1
  6. package/dist/586.bundle.js +1 -1
  7. package/dist/839.bundle.js +1 -1
  8. package/dist/873.bundle.js +1 -1
  9. package/dist/903.bundle.js +1 -1
  10. package/dist/972.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -1
  12. package/dist/984.bundle.js +1 -0
  13. package/dist/main.bundle.js +1 -1
  14. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +5 -0
  15. package/dist/src/components/generic/BookingWizard/BookingWizard.js +9 -4
  16. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  17. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.d.ts +4 -0
  18. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js +128 -0
  19. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js.map +1 -0
  20. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +6 -2
  21. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  22. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +1 -7
  23. package/dist/src/components/steps/confirmation/PaymentInformation.js +18 -66
  24. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  25. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js +1 -1
  26. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js.map +1 -1
  27. package/dist/src/components/steps/confirmation/RoomContactDetails.js +1 -1
  28. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  29. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.d.ts +1 -6
  30. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +7 -7
  31. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  32. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.d.ts +1 -3
  33. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js +4 -2
  34. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js.map +1 -1
  35. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +46 -214
  36. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  37. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +12 -2
  38. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
  39. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +231 -39
  40. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  41. package/dist/src/contexts/HotelOverridesContext.js +6 -0
  42. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  43. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +2 -1
  44. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  45. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +2 -0
  46. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  47. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +1 -0
  48. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  49. package/dist/src/handlers/payment/AdyenPaymentHandler.d.ts +2 -0
  50. package/dist/src/handlers/payment/AdyenPaymentHandler.js +66 -0
  51. package/dist/src/handlers/payment/AdyenPaymentHandler.js.map +1 -0
  52. package/dist/src/handlers/payment/PaymentHandler.d.ts +32 -0
  53. package/dist/src/handlers/payment/PaymentHandler.js +3 -0
  54. package/dist/src/handlers/payment/PaymentHandler.js.map +1 -0
  55. package/dist/src/handlers/payment/PlanpayPaymentHandler.d.ts +2 -0
  56. package/dist/src/handlers/payment/PlanpayPaymentHandler.js +82 -0
  57. package/dist/src/handlers/payment/PlanpayPaymentHandler.js.map +1 -0
  58. package/dist/src/handlers/payment/RedirectPaymentHandler.d.ts +2 -0
  59. package/dist/src/handlers/payment/RedirectPaymentHandler.js +49 -0
  60. package/dist/src/handlers/payment/RedirectPaymentHandler.js.map +1 -0
  61. package/dist/src/handlers/payment/VGSMemberPaymentHandler.d.ts +2 -0
  62. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +80 -0
  63. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -0
  64. package/dist/src/handlers/payment/VGSPaymentHandler.d.ts +2 -0
  65. package/dist/src/handlers/payment/VGSPaymentHandler.js +75 -0
  66. package/dist/src/handlers/payment/VGSPaymentHandler.js.map +1 -0
  67. package/dist/src/hooks/Planpay.d.ts +1 -1
  68. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +2 -2
  69. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  70. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  71. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  72. package/dist/src/models/Api/ReservationsDTO.d.ts +10 -0
  73. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  74. package/dist/src/models/Confirmation.d.ts +3 -6
  75. package/dist/src/models/Confirmation.js.map +1 -1
  76. package/dist/src/providers/storage/SessionProvider.d.ts +1 -1
  77. package/dist/src/providers/storage/SessionProvider.js +20 -24
  78. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  79. package/dist/src/providers/storage/StorageProvider.d.ts +1 -1
  80. package/dist/src/providers/storage/StorageProvider.js +14 -16
  81. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  82. package/dist/src/translations/Translation.d.ts +5 -0
  83. package/dist/src/translations/Translation.js +5 -0
  84. package/dist/src/translations/Translation.js.map +1 -1
  85. package/dist/src/translations/languages/en-gb.js +5 -0
  86. package/dist/src/translations/languages/en-gb.js.map +1 -1
  87. package/dist/src/util/EventsHelper.d.ts +1 -1
  88. package/dist/src/util/usePaymentHelper.d.ts +6 -0
  89. package/dist/src/util/usePaymentHelper.js +19 -0
  90. package/dist/src/util/usePaymentHelper.js.map +1 -0
  91. package/dist/test.bundle.js +1 -1
  92. package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +1 -1
  93. package/dist/vendors.bundle.js +1 -1
  94. package/package.json +4 -3
  95. package/dist/927.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO>({});\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n loadingSet(false);\n overridesSet(apiData);\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n const { showYearOnCalendar, yearDisplayOption } = useMemo(() => {\n return {\n showYearOnCalendar: !!overrides?.showYearOnCalendar,\n yearDisplayOption: !!overrides?.showYearOnCalendar ? overrides?.yearDisplayOption : '',\n };\n }, [overrides?.showYearOnCalendar, overrides?.yearDisplayOption]);\n\n const { showPromoCodeAlert, promoCodeAlertType } = useMemo(() => {\n return {\n showPromoCodeAlert: !!overrides?.showPromoCodeAlert,\n promoCodeAlertType: !!overrides?.showPromoCodeAlert ? overrides?.promoCodeAlertType : undefined,\n };\n }, [overrides?.showPromoCodeAlert, overrides?.promoCodeAlertType]);\n\n const pageTitle = useMemo(() => {\n return overrides?.pageTitle;\n }, [overrides?.pageTitle]);\n\n const showPromoCodeDescription: boolean = useMemo(() => {\n return !!overrides?.showPromoCodeDescription;\n }, [overrides?.showPromoCodeDescription]);\n\n const messages = useMemo(() => {\n if (overrides.messages?.enable) {\n return overrides.messages;\n }\n return undefined;\n }, [overrides?.messages]);\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n showYearOnCalendar,\n yearDisplayOption,\n showPromoCodeAlert,\n promoCodeAlertType,\n pageTitle,\n showPromoCodeDescription,\n messages,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n"]}
1
+ {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport i18n from 'i18next';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { Language } from '@/providers/LanguageProvider';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO>({});\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n loadingSet(false);\n overridesSet(apiData);\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n const { showYearOnCalendar, yearDisplayOption } = useMemo(() => {\n return {\n showYearOnCalendar: !!overrides?.showYearOnCalendar,\n yearDisplayOption: !!overrides?.showYearOnCalendar ? overrides?.yearDisplayOption : '',\n };\n }, [overrides?.showYearOnCalendar, overrides?.yearDisplayOption]);\n\n const { showPromoCodeAlert, promoCodeAlertType } = useMemo(() => {\n return {\n showPromoCodeAlert: !!overrides?.showPromoCodeAlert,\n promoCodeAlertType: !!overrides?.showPromoCodeAlert ? overrides?.promoCodeAlertType : undefined,\n };\n }, [overrides?.showPromoCodeAlert, overrides?.promoCodeAlertType]);\n\n const pageTitle = useMemo(() => {\n return overrides?.pageTitle;\n }, [overrides?.pageTitle]);\n\n const showPromoCodeDescription: boolean = useMemo(() => {\n return !!overrides?.showPromoCodeDescription;\n }, [overrides?.showPromoCodeDescription]);\n\n const messages = useMemo(() => {\n if (overrides.messages?.enable) {\n if (overrides.messages.pricesIncludeFeesMessage) {\n i18n.addResource(Language.en_us, 'translation', Translation.Step.Room.RoomInfo.IncludesTaxes, overrides.messages.pricesIncludeFeesMessage);\n }\n\n return overrides.messages;\n }\n return undefined;\n }, [overrides?.messages]);\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n showYearOnCalendar,\n yearDisplayOption,\n showPromoCodeAlert,\n promoCodeAlertType,\n pageTitle,\n showPromoCodeDescription,\n messages,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n"]}
@@ -82,7 +82,7 @@ const useRoomstayMemberContext = () => {
82
82
  }, [roomstayMember]);
83
83
  (0, react_1.useEffect)(() => {
84
84
  const itineraries = [];
85
- for (const booking of allBookings) {
85
+ for (const booking of allBookings !== null && allBookings !== void 0 ? allBookings : []) {
86
86
  const itineraryKeys = Object.keys(booking.itinerary);
87
87
  for (const key of itineraryKeys) {
88
88
  const bookingItem = Object.assign(Object.assign({}, booking.itinerary[key]), { bookingId: booking.itineraryId, hotel: booking.hotel, hotelId: booking.hotelId });
@@ -151,6 +151,7 @@ const useRoomstayMemberContext = () => {
151
151
  }
152
152
  else {
153
153
  roomstayMemberSet(undefined);
154
+ cardsSet([]);
154
155
  }
155
156
  }), [cognitoUser]);
156
157
  (0, react_1.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"RoomstayMemberContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContext,\n BasketContext,\n CompanyContext,\n IRoomstayMemberBookingItemWithRefAndHotelDetails,\n IRoomstayMemberContext,\n RoomstayMemberContext,\n} from '@frontend/contexts';\nimport { IBookingStatus, IRoomstayMember, IRoomstayMemberBooking, IRoomstayMemberCards } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { GetMemberDetails, UpdateMemberDetails } from '@/api/members-service/MembersServiceAPI';\n\nconst useRoomstayMemberContext = (): IRoomstayMemberContext => {\n const { loading: acLoading, cognitoUser } = useContext(AuthenticationContext);\n const { signUserIn, signUserOut } = useContext(CompanyContext);\n const { hasCheckedOut } = useContext(BasketContext);\n\n const [isFetching, isFetchingSet] = useState<boolean>(false);\n const [roomstayMember, roomstayMemberSet] = useState<IRoomstayMember | undefined>();\n const [cards, cardsSet] = useState<IRoomstayMemberCards[]>([]);\n\n const [allBookings, setAllBookings] = useState<IRoomstayMemberBooking[]>([]);\n\n const [allItineraries, setAllItineraries] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [cancelledBookings, setCancelledBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [pastBookings, setPastBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [upcomingBookings, setUpcomingBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n\n useEffect(() => {\n if (roomstayMember) {\n setAllBookings(roomstayMember.bookings);\n\n signUserIn({\n saveState: false,\n memberNumber: roomstayMember.email,\n firstName: roomstayMember.forename,\n lastName: roomstayMember.surname,\n email: roomstayMember.email,\n });\n } else {\n signUserOut();\n setAllBookings([]);\n }\n }, [roomstayMember]);\n\n useEffect(() => {\n const itineraries = [];\n for (const booking of allBookings) {\n const itineraryKeys = Object.keys(booking.itinerary);\n\n for (const key of itineraryKeys) {\n const bookingItem: IRoomstayMemberBookingItemWithRefAndHotelDetails = {\n ...booking.itinerary[key],\n bookingId: booking.itineraryId,\n hotel: booking.hotel,\n hotelId: booking.hotelId,\n };\n\n itineraries.push(bookingItem);\n }\n }\n\n itineraries.sort((a, b) => {\n return dayjs(b.checkInDate).diff(dayjs(a.checkInDate));\n });\n\n setAllItineraries(itineraries);\n }, [allBookings]);\n\n useEffect(() => {\n const bookingBrackets: { [key in 'cancelled' | 'past' | 'upcoming']: IRoomstayMemberBookingItemWithRefAndHotelDetails[] } = {\n past: [],\n upcoming: [],\n cancelled: [],\n };\n\n const sortedAllItineraries = allItineraries.sort(\n ({ checkInDate: aCheckInDateString, checkOutDate: aCheckOutDateString }, { checkInDate: bCheckInDateString, checkOutDate: bCheckOutDateString }) => {\n const aCheckInDate = dayjs(aCheckInDateString);\n const bCheckInDate = dayjs(bCheckInDateString);\n if (aCheckInDate.isSame(bCheckInDate)) {\n const aCheckOutDate = dayjs(aCheckOutDateString);\n const bCheckOutDate = dayjs(bCheckOutDateString);\n if (aCheckOutDate.isSame(bCheckOutDate)) return 0;\n else if (aCheckOutDate.isBefore(bCheckOutDate)) return -1;\n else return 1;\n } else if (aCheckInDate.isBefore(bCheckInDate)) return -1;\n else return 1;\n }\n );\n\n for (const booking of sortedAllItineraries) {\n if (booking.status === IBookingStatus.Cancelled) {\n bookingBrackets.cancelled.push(booking);\n } else if (dayjs(booking.checkOutDate).isBefore(dayjs())) {\n bookingBrackets.past.push(booking);\n } else {\n bookingBrackets.upcoming.push(booking);\n }\n }\n\n setCancelledBookings(bookingBrackets.cancelled);\n setUpcomingBookings(bookingBrackets.upcoming);\n setPastBookings(bookingBrackets.past);\n }, [allItineraries]);\n\n const loading = useMemo(() => isFetching || acLoading, [isFetching, acLoading]);\n\n const fetchRoomstayMember = useCallback(async () => {\n if (cognitoUser) {\n isFetchingSet(true);\n\n try {\n const member = await GetMemberDetails();\n roomstayMemberSet(member);\n cardsSet(member.cards ?? []);\n } catch (e) {\n // TODO deal with members that we haven't been able to fetch\n console.log(e);\n }\n\n isFetchingSet(false);\n } else {\n roomstayMemberSet(undefined);\n }\n }, [cognitoUser]);\n\n useEffect(() => {\n fetchRoomstayMember();\n }, [fetchRoomstayMember]);\n\n useEffect(() => {\n if (hasCheckedOut) {\n fetchRoomstayMember();\n }\n }, [hasCheckedOut]);\n\n const updateCardToMemberDetail = (card: IRoomstayMemberCards): void => {\n const index = roomstayMember?.cards.findIndex((item) => item.cardId === card.cardId);\n if (index && roomstayMember?.cards[index]) {\n if (index !== -1) {\n roomstayMember.cards[index] = card;\n } else {\n roomstayMember.cards.push(card);\n }\n }\n\n if (roomstayMember?.cards) cardsSet([...roomstayMember.cards]);\n roomstayMemberSet(roomstayMember);\n };\n\n const updateMemberDetails = async (newMemberDetails: IRoomstayMember) => {\n const { ...memberDetailsToSubmit } = newMemberDetails;\n isFetchingSet(true);\n try {\n const updatedMember = await UpdateMemberDetails(memberDetailsToSubmit);\n\n if (updatedMember && updatedMember.username) {\n roomstayMemberSet(updatedMember);\n }\n if (updatedMember?.cards) cardsSet([...updatedMember.cards]);\n } catch (e) {\n // TODO\n }\n\n isFetchingSet(false);\n };\n\n return {\n loading,\n roomstayMember,\n cards,\n\n allBookings,\n\n allItineraries,\n upcomingBookings,\n pastBookings,\n cancelledBookings,\n\n updateCardToMemberDetail,\n updateMemberDetails,\n fetchRoomstayMember,\n isFetchingMember: isFetching,\n };\n};\n\nexport const RoomstayMemberContextProvider: React.FC = ({ children }) => {\n return <RoomstayMemberContext.Provider value={useRoomstayMemberContext()}>{children}</RoomstayMemberContext.Provider>;\n};\n"]}
1
+ {"version":3,"file":"RoomstayMemberContextProvider.js","sourceRoot":"/","sources":["src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AuthenticationContext,\n BasketContext,\n CompanyContext,\n IRoomstayMemberBookingItemWithRefAndHotelDetails,\n IRoomstayMemberContext,\n RoomstayMemberContext,\n} from '@frontend/contexts';\nimport { IBookingStatus, IRoomstayMember, IRoomstayMemberBooking, IRoomstayMemberCards } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { GetMemberDetails, UpdateMemberDetails } from '@/api/members-service/MembersServiceAPI';\n\nconst useRoomstayMemberContext = (): IRoomstayMemberContext => {\n const { loading: acLoading, cognitoUser } = useContext(AuthenticationContext);\n const { signUserIn, signUserOut } = useContext(CompanyContext);\n const { hasCheckedOut } = useContext(BasketContext);\n\n const [isFetching, isFetchingSet] = useState<boolean>(false);\n const [roomstayMember, roomstayMemberSet] = useState<IRoomstayMember | undefined>();\n const [cards, cardsSet] = useState<IRoomstayMemberCards[]>([]);\n\n const [allBookings, setAllBookings] = useState<IRoomstayMemberBooking[]>([]);\n\n const [allItineraries, setAllItineraries] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [cancelledBookings, setCancelledBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [pastBookings, setPastBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n const [upcomingBookings, setUpcomingBookings] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[]>([]);\n\n useEffect(() => {\n if (roomstayMember) {\n setAllBookings(roomstayMember.bookings);\n\n signUserIn({\n saveState: false,\n memberNumber: roomstayMember.email,\n firstName: roomstayMember.forename,\n lastName: roomstayMember.surname,\n email: roomstayMember.email,\n });\n } else {\n signUserOut();\n setAllBookings([]);\n }\n }, [roomstayMember]);\n\n useEffect(() => {\n const itineraries = [];\n for (const booking of allBookings ?? []) {\n const itineraryKeys = Object.keys(booking.itinerary);\n\n for (const key of itineraryKeys) {\n const bookingItem: IRoomstayMemberBookingItemWithRefAndHotelDetails = {\n ...booking.itinerary[key],\n bookingId: booking.itineraryId,\n hotel: booking.hotel,\n hotelId: booking.hotelId,\n };\n\n itineraries.push(bookingItem);\n }\n }\n\n itineraries.sort((a, b) => {\n return dayjs(b.checkInDate).diff(dayjs(a.checkInDate));\n });\n\n setAllItineraries(itineraries);\n }, [allBookings]);\n\n useEffect(() => {\n const bookingBrackets: { [key in 'cancelled' | 'past' | 'upcoming']: IRoomstayMemberBookingItemWithRefAndHotelDetails[] } = {\n past: [],\n upcoming: [],\n cancelled: [],\n };\n\n const sortedAllItineraries = allItineraries.sort(\n ({ checkInDate: aCheckInDateString, checkOutDate: aCheckOutDateString }, { checkInDate: bCheckInDateString, checkOutDate: bCheckOutDateString }) => {\n const aCheckInDate = dayjs(aCheckInDateString);\n const bCheckInDate = dayjs(bCheckInDateString);\n if (aCheckInDate.isSame(bCheckInDate)) {\n const aCheckOutDate = dayjs(aCheckOutDateString);\n const bCheckOutDate = dayjs(bCheckOutDateString);\n if (aCheckOutDate.isSame(bCheckOutDate)) return 0;\n else if (aCheckOutDate.isBefore(bCheckOutDate)) return -1;\n else return 1;\n } else if (aCheckInDate.isBefore(bCheckInDate)) return -1;\n else return 1;\n }\n );\n\n for (const booking of sortedAllItineraries) {\n if (booking.status === IBookingStatus.Cancelled) {\n bookingBrackets.cancelled.push(booking);\n } else if (dayjs(booking.checkOutDate).isBefore(dayjs())) {\n bookingBrackets.past.push(booking);\n } else {\n bookingBrackets.upcoming.push(booking);\n }\n }\n\n setCancelledBookings(bookingBrackets.cancelled);\n setUpcomingBookings(bookingBrackets.upcoming);\n setPastBookings(bookingBrackets.past);\n }, [allItineraries]);\n\n const loading = useMemo(() => isFetching || acLoading, [isFetching, acLoading]);\n\n const fetchRoomstayMember = useCallback(async () => {\n if (cognitoUser) {\n isFetchingSet(true);\n\n try {\n const member = await GetMemberDetails();\n roomstayMemberSet(member);\n cardsSet(member.cards ?? []);\n } catch (e) {\n // TODO deal with members that we haven't been able to fetch\n console.log(e);\n }\n\n isFetchingSet(false);\n } else {\n roomstayMemberSet(undefined);\n cardsSet([]);\n }\n }, [cognitoUser]);\n\n useEffect(() => {\n fetchRoomstayMember();\n }, [fetchRoomstayMember]);\n\n useEffect(() => {\n if (hasCheckedOut) {\n fetchRoomstayMember();\n }\n }, [hasCheckedOut]);\n\n const updateCardToMemberDetail = (card: IRoomstayMemberCards): void => {\n const index = roomstayMember?.cards.findIndex((item) => item.cardId === card.cardId);\n if (index && roomstayMember?.cards[index]) {\n if (index !== -1) {\n roomstayMember.cards[index] = card;\n } else {\n roomstayMember.cards.push(card);\n }\n }\n\n if (roomstayMember?.cards) cardsSet([...roomstayMember.cards]);\n roomstayMemberSet(roomstayMember);\n };\n\n const updateMemberDetails = async (newMemberDetails: IRoomstayMember) => {\n const { ...memberDetailsToSubmit } = newMemberDetails;\n isFetchingSet(true);\n try {\n const updatedMember = await UpdateMemberDetails(memberDetailsToSubmit);\n\n if (updatedMember && updatedMember.username) {\n roomstayMemberSet(updatedMember);\n }\n if (updatedMember?.cards) cardsSet([...updatedMember.cards]);\n } catch (e) {\n // TODO\n }\n\n isFetchingSet(false);\n };\n\n return {\n loading,\n roomstayMember,\n cards,\n\n allBookings,\n\n allItineraries,\n upcomingBookings,\n pastBookings,\n cancelledBookings,\n\n updateCardToMemberDetail,\n updateMemberDetails,\n fetchRoomstayMember,\n isFetchingMember: isFetching,\n };\n};\n\nexport const RoomstayMemberContextProvider: React.FC = ({ children }) => {\n return <RoomstayMemberContext.Provider value={useRoomstayMemberContext()}>{children}</RoomstayMemberContext.Provider>;\n};\n"]}
@@ -3,6 +3,7 @@ import { BaseEngine, BaseEngineConfig } from '../BaseEngine';
3
3
  import { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '../../models/Api/HotelOverrideDTO';
4
4
  import type { BookingWizardProperty } from '../../models/BookingWizard/BookingWizardProperty';
5
5
  import type { TBookingWizardProperties } from '../../models/BookingWizard/BookingWizardTypes';
6
+ import { EBookingWizardOverlayDirection } from '../../components/generic/BookingWizard/BookingWizard';
6
7
  export interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {
7
8
  widgetType: 'property' | 'group';
8
9
  theme: 'specific' | 'default';
@@ -21,6 +22,7 @@ export interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnC
21
22
  hideProperty?: boolean;
22
23
  dateFormat?: string;
23
24
  hideTooltips?: boolean;
25
+ overlayDirection?: EBookingWizardOverlayDirection;
24
26
  defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & {
25
27
  checkIn?: string;
26
28
  checkout?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,qDAAyF;AACzF,yGAA+F;AAI/F,0FAAkE;AA4BlE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;AAZD,kDAYC","sourcesContent":["import type { BookingWizardContextType, BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderBookingWizard } from '@/engines/BookingWizardEngine/BookingWizardEngineElement';\nimport { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport type { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n widgetType: 'property' | 'group';\n theme: 'specific' | 'default';\n layout: 'horizontal' | 'vertical' | 'button';\n\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n\n wrapperClassname?: string;\n contentClassname?: string;\n maxOccupancy?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n dateFormat?: string;\n hideTooltips?: boolean;\n\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n\n onSubmit?: BookingWizardContextType['onSubmit'];\n}\n\nexport class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {\n public constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.BookingWizard;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderBookingWizard(RoomstayThemeEngine.createElementOrReuseExisting('div', 'booking-wizard'), this);\n }\n}\n"]}
1
+ {"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,qDAAyF;AACzF,yGAA+F;AAI/F,0FAAkE;AA8BlE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;AAZD,kDAYC","sourcesContent":["import type { BookingWizardContextType, BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderBookingWizard } from '@/engines/BookingWizardEngine/BookingWizardEngineElement';\nimport { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport type { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { EBookingWizardOverlayDirection } from '@/components/generic/BookingWizard/BookingWizard';\n\nexport interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n widgetType: 'property' | 'group';\n theme: 'specific' | 'default';\n layout: 'horizontal' | 'vertical' | 'button';\n\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n\n wrapperClassname?: string;\n contentClassname?: string;\n maxOccupancy?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n dateFormat?: string;\n hideTooltips?: boolean;\n overlayDirection?: EBookingWizardOverlayDirection;\n\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n\n onSubmit?: BookingWizardContextType['onSubmit'];\n}\n\nexport class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {\n public constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.BookingWizard;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n renderBookingWizard(RoomstayThemeEngine.createElementOrReuseExisting('div', 'booking-wizard'), this);\n }\n}\n"]}
@@ -28,6 +28,7 @@ function BookingWizardEngineElement({ engine }) {
28
28
  hideProperty: engineConfig.hideProperty,
29
29
  dateFormat: engineConfig.dateFormat,
30
30
  onSubmit: engineConfig.onSubmit,
31
+ overlayDirection: engineConfig.overlayDirection,
31
32
  };
32
33
  // TODO: This will be updated to be configurable (border sizing, padding, etc)
33
34
  // const widgetType = engineConfig.widgetType;
@@ -1 +1 @@
1
- {"version":3,"file":"BookingWizardEngineElement.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngineElement.tsx"],"names":[],"mappings":";;;;;;AAAA,iDAAiE;AACjE,kDAA0B;AAC1B,yCAAmC;AAEnC,qGAA0H;AAQ1H,SAAwB,0BAA0B,CAAC,EAAE,MAAM,EAAmC;IAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAExC,MAAM,OAAO,GAAuB;QAChC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAA4B;QAChD,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,eAAe,EAAE,YAAY,CAAC,eAAe;QAC7C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;KACZ,CAAC;IAExB,8EAA8E;IAC9E,8CAA8C;IAE9C,OAAO,CACH,8BAAC,sCAA2B,IAAC,MAAM,EAAE,MAAM;QACvC,8BAAC,uBAAa,oBAAK,OAAO,EAAI,CACJ,CACjC,CAAC;AACN,CAAC;AA/BD,6CA+BC;AAEM,MAAM,mBAAmB,GAAG,CAAC,SAAkB,EAAE,MAA2B,EAAE,EAAE;IACnF,IAAA,kBAAM,EAAC,8BAAC,0BAA0B,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","sourcesContent":["import { BookingEngineContextWrapper } from '@frontend/contexts';\nimport React from 'react';\nimport { render } from 'react-dom';\n\nimport BookingWizard, { BookingWizardProps, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\n\nimport { BookingWizardEngine } from './BookingWizardEngine';\n\nexport interface BookingWizardEngineElementProps {\n engine: BookingWizardEngine;\n}\n\nexport default function BookingWizardEngineElement({ engine }: BookingWizardEngineElementProps) {\n const engineConfig = engine.getConfig();\n\n const bwProps: BookingWizardProps = {\n layout: engineConfig.layout,\n theme: engineConfig.theme as EBookingWizardTheme,\n properties: engineConfig.properties,\n selectedProperty: engineConfig.selectedProperty,\n defaultColors: engineConfig.defaultColors,\n wrapperClassname: engineConfig.wrapperClassname,\n contentClassname: engineConfig.contentClassname,\n maxAdults: engineConfig.maxAdults,\n disableChild: engineConfig.disableChild,\n showInfants: engineConfig.showInfants,\n disableRoom: engineConfig.disableRoom,\n defaultValues: engineConfig.defaultValues,\n hideGuestSelect: engineConfig.hideGuestSelect,\n hidePromocode: engineConfig.hidePromocode,\n hideProperty: engineConfig.hideProperty,\n dateFormat: engineConfig.dateFormat,\n onSubmit: engineConfig.onSubmit,\n } as BookingWizardProps;\n\n // TODO: This will be updated to be configurable (border sizing, padding, etc)\n // const widgetType = engineConfig.widgetType;\n\n return (\n <BookingEngineContextWrapper engine={engine}>\n <BookingWizard {...bwProps} />\n </BookingEngineContextWrapper>\n );\n}\n\nexport const renderBookingWizard = (container: Element, engine: BookingWizardEngine) => {\n render(<BookingWizardEngineElement engine={engine} />, container);\n};\n"]}
1
+ {"version":3,"file":"BookingWizardEngineElement.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngineElement.tsx"],"names":[],"mappings":";;;;;;AAAA,iDAAiE;AACjE,kDAA0B;AAC1B,yCAAmC;AAEnC,qGAA0H;AAQ1H,SAAwB,0BAA0B,CAAC,EAAE,MAAM,EAAmC;IAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAExC,MAAM,OAAO,GAAuB;QAChC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAA4B;QAChD,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,eAAe,EAAE,YAAY,CAAC,eAAe;QAC7C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;KAC5B,CAAC;IAExB,8EAA8E;IAC9E,8CAA8C;IAE9C,OAAO,CACH,8BAAC,sCAA2B,IAAC,MAAM,EAAE,MAAM;QACvC,8BAAC,uBAAa,oBAAK,OAAO,EAAI,CACJ,CACjC,CAAC;AACN,CAAC;AAhCD,6CAgCC;AAEM,MAAM,mBAAmB,GAAG,CAAC,SAAkB,EAAE,MAA2B,EAAE,EAAE;IACnF,IAAA,kBAAM,EAAC,8BAAC,0BAA0B,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","sourcesContent":["import { BookingEngineContextWrapper } from '@frontend/contexts';\nimport React from 'react';\nimport { render } from 'react-dom';\n\nimport BookingWizard, { BookingWizardProps, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\n\nimport { BookingWizardEngine } from './BookingWizardEngine';\n\nexport interface BookingWizardEngineElementProps {\n engine: BookingWizardEngine;\n}\n\nexport default function BookingWizardEngineElement({ engine }: BookingWizardEngineElementProps) {\n const engineConfig = engine.getConfig();\n\n const bwProps: BookingWizardProps = {\n layout: engineConfig.layout,\n theme: engineConfig.theme as EBookingWizardTheme,\n properties: engineConfig.properties,\n selectedProperty: engineConfig.selectedProperty,\n defaultColors: engineConfig.defaultColors,\n wrapperClassname: engineConfig.wrapperClassname,\n contentClassname: engineConfig.contentClassname,\n maxAdults: engineConfig.maxAdults,\n disableChild: engineConfig.disableChild,\n showInfants: engineConfig.showInfants,\n disableRoom: engineConfig.disableRoom,\n defaultValues: engineConfig.defaultValues,\n hideGuestSelect: engineConfig.hideGuestSelect,\n hidePromocode: engineConfig.hidePromocode,\n hideProperty: engineConfig.hideProperty,\n dateFormat: engineConfig.dateFormat,\n onSubmit: engineConfig.onSubmit,\n overlayDirection: engineConfig.overlayDirection,\n } as BookingWizardProps;\n\n // TODO: This will be updated to be configurable (border sizing, padding, etc)\n // const widgetType = engineConfig.widgetType;\n\n return (\n <BookingEngineContextWrapper engine={engine}>\n <BookingWizard {...bwProps} />\n </BookingEngineContextWrapper>\n );\n}\n\nexport const renderBookingWizard = (container: Element, engine: BookingWizardEngine) => {\n render(<BookingWizardEngineElement engine={engine} />, container);\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { PaymentHandler } from './PaymentHandler';
2
+ export declare const adyenPaymentHandler: () => PaymentHandler;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.adyenPaymentHandler = void 0;
36
+ const hooks_1 = require("../../hooks/index.js");
37
+ const core_1 = require("@roomstay/core");
38
+ const react_1 = __importStar(require("react"));
39
+ const AdyenPaymentOption_1 = require("../../components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption");
40
+ const adyenPaymentHandler = () => {
41
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
42
+ const paymentRef = (0, react_1.useRef)(null);
43
+ return {
44
+ name: 'Adyen',
45
+ isAvailable: (hotel === null || hotel === void 0 ? void 0 : hotel.cardProcessor) === core_1.EHotelCardProcessor.Adyen,
46
+ isExclusive: true,
47
+ requireBookingPlaced: true,
48
+ bookingPaymentMethod: core_1.EBookingPaymentMethod.Adyen,
49
+ onConfirm: () => __awaiter(void 0, void 0, void 0, function* () {
50
+ if (paymentRef.current) {
51
+ return paymentRef.current.submitPayment();
52
+ }
53
+ return { success: false, retryPayment: false, message: 'Something has gone wrong. Failed to get payment infromation details.' };
54
+ }),
55
+ getBookingPaymentRequestObject: () => __awaiter(void 0, void 0, void 0, function* () {
56
+ return {
57
+ Method: core_1.EBookingPaymentMethod.Adyen,
58
+ };
59
+ }),
60
+ renderPaymentInput: () => {
61
+ return react_1.default.createElement(AdyenPaymentOption_1.AdyenPaymentOption, { ref: paymentRef });
62
+ },
63
+ };
64
+ };
65
+ exports.adyenPaymentHandler = adyenPaymentHandler;
66
+ //# sourceMappingURL=AdyenPaymentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdyenPaymentHandler.js","sourceRoot":"/","sources":["src/handlers/payment/AdyenPaymentHandler.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,yCAA4E;AAC5E,+CAAsC;AAEtC,8GAA2G;AAIpG,MAAM,mBAAmB,GAAG,GAAmB,EAAE;IACpD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,UAAU,GAAG,IAAA,cAAM,EAA2B,IAAI,CAAC,CAAC;IAE1D,OAAO;QACH,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,MAAK,0BAAmB,CAAC,KAAK;QAC/D,WAAW,EAAE,IAAI;QACjB,oBAAoB,EAAE,IAAI;QAC1B,oBAAoB,EAAE,4BAAqB,CAAC,KAAK;QACjD,SAAS,EAAE,GAAS,EAAE;YAClB,IAAI,UAAU,CAAC,OAAO,EAAE;gBACpB,OAAO,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;aAC7C;YAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,sEAAsE,EAAE,CAAC;QACpI,CAAC,CAAA;QACD,8BAA8B,EAAE,GAAS,EAAE;YACvC,OAAO;gBACH,MAAM,EAAE,4BAAqB,CAAC,KAAK;aACtC,CAAC;QACN,CAAC,CAAA;QACD,kBAAkB,EAAE,GAAG,EAAE;YACrB,OAAO,8BAAC,uCAAkB,IAAC,GAAG,EAAE,UAAU,GAAI,CAAC;QACnD,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AA3BW,QAAA,mBAAmB,uBA2B9B","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport React, { useRef } from 'react';\n\nimport { AdyenPaymentOption } from '@/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption';\n\nimport { PaymentHandler, PaymentHandlerElementRef } from './PaymentHandler';\n\nexport const adyenPaymentHandler = (): PaymentHandler => {\n const { hotel } = useCurrentHotel();\n\n const paymentRef = useRef<PaymentHandlerElementRef>(null);\n\n return {\n name: 'Adyen',\n isAvailable: hotel?.cardProcessor === EHotelCardProcessor.Adyen,\n isExclusive: true,\n requireBookingPlaced: true,\n bookingPaymentMethod: EBookingPaymentMethod.Adyen,\n onConfirm: async () => {\n if (paymentRef.current) {\n return paymentRef.current.submitPayment();\n }\n\n return { success: false, retryPayment: false, message: 'Something has gone wrong. Failed to get payment infromation details.' };\n },\n getBookingPaymentRequestObject: async () => {\n return {\n Method: EBookingPaymentMethod.Adyen,\n };\n },\n renderPaymentInput: () => {\n return <AdyenPaymentOption ref={paymentRef} />;\n },\n };\n};\n"]}
@@ -0,0 +1,32 @@
1
+ import { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';
2
+ import { ReactNode } from 'react';
3
+ import { IRadioButtonOption } from '../../components/generic/RadioButtonGroup/RadioButtonGroup';
4
+ export type PaymentHandler = {
5
+ name: string;
6
+ /** If the payment option should be considered. It doesn't mean it will be selectable yet */
7
+ isAvailable: boolean;
8
+ isDisabled?: boolean;
9
+ disabledReason?: string;
10
+ requireFormFilled?: boolean;
11
+ /** Payment handler will only be selectable if booking has been placed */
12
+ requireBookingPlaced: boolean;
13
+ /**
14
+ * Exclusive payment methods will be displayed separately from all others.
15
+ * Only one exclusive payment handler will execute. This depends on the order of the handlers.
16
+ */
17
+ isExclusive: boolean;
18
+ bookingPaymentMethod: EBookingPaymentMethod;
19
+ subOptions?: IRadioButtonOption[];
20
+ getBookingPaymentRequestObject: () => Promise<IBookingPayment>;
21
+ onSelect?: () => void;
22
+ renderInput?: () => JSX.Element;
23
+ renderPaymentInput?: () => ReactNode | undefined;
24
+ onConfirm: () => Promise<{
25
+ success: boolean;
26
+ message: string;
27
+ data?: Partial<IBookingPayment> | any;
28
+ }>;
29
+ };
30
+ export interface PaymentHandlerElementRef {
31
+ submitPayment: () => ReturnType<PaymentHandler['onConfirm']>;
32
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PaymentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentHandler.js","sourceRoot":"/","sources":["src/handlers/payment/PaymentHandler.ts"],"names":[],"mappings":"","sourcesContent":["import { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';\nimport { ReactNode } from 'react';\n\nimport { IRadioButtonOption } from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\n\nexport type PaymentHandler = {\n name: string;\n /** If the payment option should be considered. It doesn't mean it will be selectable yet */\n isAvailable: boolean;\n\n isDisabled?: boolean;\n disabledReason?: string;\n\n requireFormFilled?: boolean;\n /** Payment handler will only be selectable if booking has been placed */\n requireBookingPlaced: boolean;\n /**\n * Exclusive payment methods will be displayed separately from all others.\n * Only one exclusive payment handler will execute. This depends on the order of the handlers.\n */\n isExclusive: boolean;\n bookingPaymentMethod: EBookingPaymentMethod;\n\n subOptions?: IRadioButtonOption[];\n\n getBookingPaymentRequestObject: () => Promise<IBookingPayment>;\n onSelect?: () => void;\n\n renderInput?: () => JSX.Element;\n renderPaymentInput?: () => ReactNode | undefined;\n\n onConfirm: () => Promise<{ success: boolean; message: string; data?: Partial<IBookingPayment> | any }>;\n};\n\nexport interface PaymentHandlerElementRef {\n submitPayment: () => ReturnType<PaymentHandler['onConfirm']>;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { PaymentHandler } from './PaymentHandler';
2
+ export declare const planpayPaymentHandler: () => PaymentHandler;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.planpayPaymentHandler = void 0;
39
+ const contexts_1 = require("../../contexts/index.js");
40
+ const core_1 = require("@roomstay/core");
41
+ const dayjs_1 = __importDefault(require("dayjs"));
42
+ const react_1 = __importStar(require("react"));
43
+ const PlanpayLabel_1 = __importDefault(require("../../components/steps/confirmation/PlanpayLabel"));
44
+ const PlanpayPaymentMethod_1 = require("../../components/steps/confirmation/PlanpayPaymentMethod");
45
+ const ConfirmationQuery_1 = require("../../hooks/ConfirmationQuery");
46
+ const Planpay_1 = __importDefault(require("../../hooks/Planpay"));
47
+ const planpayPaymentHandler = () => {
48
+ const { queryPlanpayCheckoutId } = (0, ConfirmationQuery_1.useConfirmationQuery)();
49
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
50
+ const context = (0, contexts_1.useBookingEngine)();
51
+ const { hasPricePreview, planpayConfig } = (0, Planpay_1.default)();
52
+ return {
53
+ name: 'Planpay',
54
+ isAvailable: !!hasPricePreview && !!(planpayConfig === null || planpayConfig === void 0 ? void 0 : planpayConfig.minDaysShowPlanpay) && (0, dayjs_1.default)(basketContext.startDate).diff((0, dayjs_1.default)(), 'day') > planpayConfig.minDaysShowPlanpay,
55
+ isExclusive: false,
56
+ disabledReason: 'You must fill all the above details before proceeding with Planpay',
57
+ requireBookingPlaced: true,
58
+ requireFormFilled: true,
59
+ bookingPaymentMethod: core_1.EBookingPaymentMethod.Planpay,
60
+ onConfirm: () => __awaiter(void 0, void 0, void 0, function* () {
61
+ // No need for validation as passthrough moves all payment data to 3rd party.
62
+ return { success: true, retryPayment: false, message: 'Success' };
63
+ }),
64
+ getBookingPaymentRequestObject: () => __awaiter(void 0, void 0, void 0, function* () {
65
+ const params = new URLSearchParams(window.location.search);
66
+ params.set('roomstayId', '{{rsId}}');
67
+ params.set('session', context.sessionProvider.getCurrentSessionID().toString());
68
+ params.set('paymentMethod', core_1.EBookingPaymentMethod.Planpay);
69
+ const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;
70
+ const payment = {
71
+ Method: core_1.EBookingPaymentMethod.Planpay,
72
+ PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,
73
+ RedirectUrl: redirectURL,
74
+ };
75
+ return payment;
76
+ }),
77
+ renderInput: () => react_1.default.createElement(PlanpayLabel_1.default, null),
78
+ renderPaymentInput: () => react_1.default.createElement(PlanpayPaymentMethod_1.PlanpayPaymentMethod, null),
79
+ };
80
+ };
81
+ exports.planpayPaymentHandler = planpayPaymentHandler;
82
+ //# sourceMappingURL=PlanpayPaymentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanpayPaymentHandler.js","sourceRoot":"/","sources":["src/handlers/payment/PlanpayPaymentHandler.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAqE;AACrE,yCAAuD;AACvD,kDAA0B;AAC1B,+CAA0C;AAE1C,gGAAwE;AACxE,+FAA4F;AAC5F,iEAAiE;AACjE,8DAAyC;AAIlC,MAAM,qBAAqB,GAAG,GAAmB,EAAE;IACtD,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAA,wCAAoB,GAAE,CAAC;IAE1D,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;IAEnC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,IAAA,iBAAU,GAAE,CAAC;IAExD,OAAO;QACH,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,kBAAkB,CAAA,IAAI,IAAA,eAAK,EAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAA,eAAK,GAAE,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,kBAAkB;QAC/J,WAAW,EAAE,KAAK;QAElB,cAAc,EAAE,oEAAoE;QACpF,oBAAoB,EAAE,IAAI;QAC1B,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,4BAAqB,CAAC,OAAO;QACnD,SAAS,EAAE,GAAS,EAAE;YAClB,6EAA6E;YAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACtE,CAAC,CAAA;QACD,8BAA8B,EAAE,GAAS,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,4BAAqB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,wBAAwB,MAAM,EAAE,CAAC;YAClI,MAAM,OAAO,GAAG;gBACZ,MAAM,EAAE,4BAAqB,CAAC,OAAO;gBACrC,iBAAiB,EAAE,sBAAsB,IAAI,SAAS;gBACtD,WAAW,EAAE,WAAW;aAC3B,CAAC;YAEF,OAAO,OAAO,CAAC;QACnB,CAAC,CAAA;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,8BAAC,sBAAY,OAAG;QACnC,kBAAkB,EAAE,GAAG,EAAE,CAAC,8BAAC,2CAAoB,OAAG;KACrD,CAAC;AACN,CAAC,CAAC;AAvCW,QAAA,qBAAqB,yBAuChC","sourcesContent":["import { BasketContext, useBookingEngine } from '@frontend/contexts';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useContext } from 'react';\n\nimport PlanpayLabel from '@/components/steps/confirmation/PlanpayLabel';\nimport { PlanpayPaymentMethod } from '@/components/steps/confirmation/PlanpayPaymentMethod';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport usePlanpay from '@/hooks/Planpay';\n\nimport { PaymentHandler } from './PaymentHandler';\n\nexport const planpayPaymentHandler = (): PaymentHandler => {\n const { queryPlanpayCheckoutId } = useConfirmationQuery();\n\n const basketContext = useContext(BasketContext);\n const context = useBookingEngine();\n\n const { hasPricePreview, planpayConfig } = usePlanpay();\n\n return {\n name: 'Planpay',\n isAvailable: !!hasPricePreview && !!planpayConfig?.minDaysShowPlanpay && dayjs(basketContext.startDate).diff(dayjs(), 'day') > planpayConfig.minDaysShowPlanpay,\n isExclusive: false,\n\n disabledReason: 'You must fill all the above details before proceeding with Planpay',\n requireBookingPlaced: true,\n requireFormFilled: true,\n bookingPaymentMethod: EBookingPaymentMethod.Planpay,\n onConfirm: async () => {\n // No need for validation as passthrough moves all payment data to 3rd party.\n\n return { success: true, retryPayment: false, message: 'Success' };\n },\n getBookingPaymentRequestObject: async () => {\n const params = new URLSearchParams(window.location.search);\n params.set('roomstayId', '{{rsId}}');\n params.set('session', context.sessionProvider.getCurrentSessionID().toString());\n params.set('paymentMethod', EBookingPaymentMethod.Planpay);\n const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;\n const payment = {\n Method: EBookingPaymentMethod.Planpay,\n PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,\n RedirectUrl: redirectURL,\n };\n\n return payment;\n },\n renderInput: () => <PlanpayLabel />,\n renderPaymentInput: () => <PlanpayPaymentMethod />,\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { PaymentHandler } from './PaymentHandler';
2
+ export declare const redirectPaymentHandler: () => PaymentHandler;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.redirectPaymentHandler = void 0;
16
+ const hooks_1 = require("../../hooks/index.js");
17
+ const core_1 = require("@roomstay/core");
18
+ const react_1 = __importDefault(require("react"));
19
+ const react_i18next_1 = require("react-i18next");
20
+ const InlinePaymentOption_1 = __importDefault(require("../../components/generic/PaymentCard/InlinePaymentOption"));
21
+ const Translation_1 = require("../../translations/Translation");
22
+ const redirectPaymentHandler = () => {
23
+ var _a;
24
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
25
+ const { t } = (0, react_i18next_1.useTranslation)();
26
+ // Because Payment card of type Card can apply to Till, or Windcave, or VGS we use the Card Procesor field to identify who will action cards
27
+ // Here we'll check if the payment method includes card, and if it's specifically not Passthrough.
28
+ const isExternalPaymentGateway = (hotel === null || hotel === void 0 ? void 0 : hotel.cardProcessor) ? hotel.cardProcessor !== core_1.EHotelCardProcessor.Passthrough : false;
29
+ return {
30
+ name: 'Redirect',
31
+ isAvailable: isExternalPaymentGateway && !!((_a = hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods) === null || _a === void 0 ? void 0 : _a.includes(core_1.EBookingPaymentMethod.Card)),
32
+ isExclusive: false,
33
+ requireBookingPlaced: false,
34
+ bookingPaymentMethod: core_1.EBookingPaymentMethod.Card,
35
+ onConfirm: () => __awaiter(void 0, void 0, void 0, function* () {
36
+ // No need for validation as passthrough moves all payment data to 3rd party.
37
+ return { success: true, retryPayment: false, message: 'Redirecting to payment gateway' };
38
+ }),
39
+ getBookingPaymentRequestObject: () => __awaiter(void 0, void 0, void 0, function* () {
40
+ return {
41
+ Method: core_1.EBookingPaymentMethod.Card,
42
+ };
43
+ }),
44
+ renderInput: () => react_1.default.createElement(InlinePaymentOption_1.default, { active: true, overrideSubLabel: t(Translation_1.Translation.Step.Confirmation.CardThirdPartyLabel) }),
45
+ renderPaymentInput: undefined,
46
+ };
47
+ };
48
+ exports.redirectPaymentHandler = redirectPaymentHandler;
49
+ //# sourceMappingURL=RedirectPaymentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedirectPaymentHandler.js","sourceRoot":"/","sources":["src/handlers/payment/RedirectPaymentHandler.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,yCAA4E;AAC5E,kDAA0B;AAC1B,iDAA+C;AAE/C,+GAAuF;AACvF,4DAAyD;AAIlD,MAAM,sBAAsB,GAAG,GAAmB,EAAE;;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,4IAA4I;IAC5I,kGAAkG;IAClG,MAAM,wBAAwB,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,EAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,0BAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IAExH,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wBAAwB,IAAI,CAAC,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,0CAAE,QAAQ,CAAC,4BAAqB,CAAC,IAAI,CAAC,CAAA;QACtG,WAAW,EAAE,KAAK;QAClB,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,4BAAqB,CAAC,IAAI;QAChD,SAAS,EAAE,GAAS,EAAE;YAClB,6EAA6E;YAE7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;QAC7F,CAAC,CAAA;QACD,8BAA8B,EAAE,GAAS,EAAE;YACvC,OAAO;gBACH,MAAM,EAAE,4BAAqB,CAAC,IAAI;aACrC,CAAC;QACN,CAAC,CAAA;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,8BAAC,6BAAmB,IAAC,MAAM,QAAC,gBAAgB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAI;QACzH,kBAAkB,EAAE,SAAS;KAChC,CAAC;AACN,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport InlinePaymentOption from '@/components/generic/PaymentCard/InlinePaymentOption';\nimport { Translation } from '@/translations/Translation';\n\nimport { PaymentHandler } from './PaymentHandler';\n\nexport const redirectPaymentHandler = (): PaymentHandler => {\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n // Because Payment card of type Card can apply to Till, or Windcave, or VGS we use the Card Procesor field to identify who will action cards\n // Here we'll check if the payment method includes card, and if it's specifically not Passthrough.\n const isExternalPaymentGateway = hotel?.cardProcessor ? hotel.cardProcessor !== EHotelCardProcessor.Passthrough : false;\n\n return {\n name: 'Redirect',\n isAvailable: isExternalPaymentGateway && !!hotel?.paymentMethods?.includes(EBookingPaymentMethod.Card),\n isExclusive: false,\n requireBookingPlaced: false,\n bookingPaymentMethod: EBookingPaymentMethod.Card,\n onConfirm: async () => {\n // No need for validation as passthrough moves all payment data to 3rd party.\n\n return { success: true, retryPayment: false, message: 'Redirecting to payment gateway' };\n },\n getBookingPaymentRequestObject: async () => {\n return {\n Method: EBookingPaymentMethod.Card,\n };\n },\n renderInput: () => <InlinePaymentOption active overrideSubLabel={t(Translation.Step.Confirmation.CardThirdPartyLabel)} />,\n renderPaymentInput: undefined,\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { PaymentHandler } from './PaymentHandler';
2
+ export declare const vgsMemberPaymentHandler: () => PaymentHandler;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.vgsMemberPaymentHandler = void 0;
39
+ const contexts_1 = require("../../contexts/index.js");
40
+ const hooks_1 = require("../../hooks/index.js");
41
+ const core_1 = require("@roomstay/core");
42
+ const react_1 = __importStar(require("react"));
43
+ const InlinePaymentOption_1 = __importDefault(require("../../components/generic/PaymentCard/InlinePaymentOption"));
44
+ const vgsMemberPaymentHandler = () => {
45
+ var _a;
46
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
47
+ const { cards } = (0, contexts_1.useMemberContext)();
48
+ const paymentRef = (0, react_1.useRef)(null);
49
+ // In this instance Passthrough means that the card details are forwarded via VGS.
50
+ const isPassthrough = (hotel === null || hotel === void 0 ? void 0 : hotel.cardProcessor) ? hotel.cardProcessor === core_1.EHotelCardProcessor.Passthrough : true;
51
+ return {
52
+ name: 'VGSMember',
53
+ isAvailable: isPassthrough && !!((_a = hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods) === null || _a === void 0 ? void 0 : _a.includes(core_1.EBookingPaymentMethod.Card)) && !!(cards === null || cards === void 0 ? void 0 : cards.length),
54
+ isExclusive: false,
55
+ requireBookingPlaced: false,
56
+ bookingPaymentMethod: core_1.EBookingPaymentMethod.Card,
57
+ subOptions: cards === null || cards === void 0 ? void 0 : cards.map((card) => ({
58
+ label: react_1.default.createElement(InlinePaymentOption_1.default, { card: card }),
59
+ value: card.cardId,
60
+ })),
61
+ onConfirm: () => __awaiter(void 0, void 0, void 0, function* () {
62
+ var _b;
63
+ // No need for validation as passthrough moves all payment data to 3rd party.
64
+ const response = yield ((_b = paymentRef.current) === null || _b === void 0 ? void 0 : _b.submitPayment());
65
+ if (response) {
66
+ return response;
67
+ }
68
+ return { success: false, retryPayment: false, message: 'Something has gone wrong. Failed to get payment infromation details.' };
69
+ }),
70
+ getBookingPaymentRequestObject: () => __awaiter(void 0, void 0, void 0, function* () {
71
+ return {
72
+ Method: core_1.EBookingPaymentMethod.Card,
73
+ };
74
+ }),
75
+ renderInput: () => react_1.default.createElement(InlinePaymentOption_1.default, { card: cards === null || cards === void 0 ? void 0 : cards[0] }),
76
+ renderPaymentInput: undefined,
77
+ };
78
+ };
79
+ exports.vgsMemberPaymentHandler = vgsMemberPaymentHandler;
80
+ //# sourceMappingURL=VGSMemberPaymentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VGSMemberPaymentHandler.js","sourceRoot":"/","sources":["src/handlers/payment/VGSMemberPaymentHandler.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsD;AACtD,2CAAkD;AAClD,yCAA4E;AAC5E,+CAAsC;AAEtC,+GAAuF;AAIhF,MAAM,uBAAuB,GAAG,GAAmB,EAAE;;IACxD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,2BAAgB,GAAE,CAAC;IAErC,MAAM,UAAU,GAAG,IAAA,cAAM,EAA2B,IAAI,CAAC,CAAC;IAE1D,kFAAkF;IAClF,MAAM,aAAa,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,EAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,0BAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5G,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,0CAAE,QAAQ,CAAC,4BAAqB,CAAC,IAAI,CAAC,CAAA,IAAI,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA;QAC9G,WAAW,EAAE,KAAK;QAClB,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,4BAAqB,CAAC,IAAI;QAChD,UAAU,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,8BAAC,6BAAmB,IAAC,IAAI,EAAE,IAAI,GAAI;YAC1C,KAAK,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC,CAAC;QACH,SAAS,EAAE,GAAS,EAAE;;YAClB,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,MAAM,CAAA,MAAA,UAAU,CAAC,OAAO,0CAAE,aAAa,EAAE,CAAA,CAAC;YAE3D,IAAI,QAAQ,EAAE;gBACV,OAAO,QAAQ,CAAC;aACnB;YAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,sEAAsE,EAAE,CAAC;QACpI,CAAC,CAAA;QACD,8BAA8B,EAAE,GAAS,EAAE;YACvC,OAAO;gBACH,MAAM,EAAE,4BAAqB,CAAC,IAAI;aACrC,CAAC;QACN,CAAC,CAAA;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,8BAAC,6BAAmB,IAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,GAAI;QAC5D,kBAAkB,EAAE,SAAS;KAChC,CAAC;AACN,CAAC,CAAC;AArCW,QAAA,uBAAuB,2BAqClC","sourcesContent":["import { useMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport React, { useRef } from 'react';\n\nimport InlinePaymentOption from '@/components/generic/PaymentCard/InlinePaymentOption';\n\nimport { PaymentHandler, PaymentHandlerElementRef } from './PaymentHandler';\n\nexport const vgsMemberPaymentHandler = (): PaymentHandler => {\n const { hotel } = useCurrentHotel();\n const { cards } = useMemberContext();\n\n const paymentRef = useRef<PaymentHandlerElementRef>(null);\n\n // In this instance Passthrough means that the card details are forwarded via VGS.\n const isPassthrough = hotel?.cardProcessor ? hotel.cardProcessor === EHotelCardProcessor.Passthrough : true;\n\n return {\n name: 'VGSMember',\n isAvailable: isPassthrough && !!hotel?.paymentMethods?.includes(EBookingPaymentMethod.Card) && !!cards?.length,\n isExclusive: false,\n requireBookingPlaced: false,\n bookingPaymentMethod: EBookingPaymentMethod.Card,\n subOptions: cards?.map((card) => ({\n label: <InlinePaymentOption card={card} />,\n value: card.cardId,\n })),\n onConfirm: async () => {\n // No need for validation as passthrough moves all payment data to 3rd party.\n const response = await paymentRef.current?.submitPayment();\n\n if (response) {\n return response;\n }\n\n return { success: false, retryPayment: false, message: 'Something has gone wrong. Failed to get payment infromation details.' };\n },\n getBookingPaymentRequestObject: async () => {\n return {\n Method: EBookingPaymentMethod.Card,\n };\n },\n renderInput: () => <InlinePaymentOption card={cards?.[0]} />,\n renderPaymentInput: undefined,\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { PaymentHandler } from './PaymentHandler';
2
+ export declare const vgsPaymentHandler: () => PaymentHandler;