@roomstay/frontend 2.6.5 → 2.6.7

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 (83) hide show
  1. package/dist/166.bundle.js +1 -0
  2. package/dist/370.bundle.js +1 -1
  3. package/dist/449.bundle.js +1 -1
  4. package/dist/457.bundle.js +1 -1
  5. package/dist/468.bundle.js +1 -1
  6. package/dist/736.bundle.js +1 -1
  7. package/dist/850.bundle.js +1 -0
  8. package/dist/903.bundle.js +1 -1
  9. package/dist/main.bundle.js +1 -1
  10. package/dist/src/components/Event/EventCarouselContainer.d.ts +2 -2
  11. package/dist/src/components/Event/EventCarouselContainer.js +9 -3
  12. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
  13. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -0
  14. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  15. package/dist/src/components/generic/Event/EventCard.js +15 -1
  16. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  17. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +3 -3
  18. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
  19. package/dist/src/components/generic/buttons/NextStepButton.js +3 -1
  20. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  21. package/dist/src/components/navigation/StepSelector.js +7 -1
  22. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  23. package/dist/src/components/reservation/ReservationItem.js +1 -1
  24. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  25. package/dist/src/components/steps/hotel/HotelCard.js +2 -0
  26. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  27. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js +2 -0
  28. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +1 -1
  29. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +3 -2
  30. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
  31. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +3 -2
  32. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
  33. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +3 -1
  34. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
  35. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +3 -1
  36. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  37. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +0 -7
  38. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  39. package/dist/src/components/summary/BEMobileSummaryModal.js +34 -2
  40. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  41. package/dist/src/components/summary/BESummary.js +31 -20
  42. package/dist/src/components/summary/BESummary.js.map +1 -1
  43. package/dist/src/components/summary/BESummaryRoomRow.js +0 -4
  44. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  45. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -0
  46. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  47. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +23 -2
  48. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  49. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +3 -4
  50. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  51. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -1
  52. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  53. package/dist/src/hooks/RoomRateAvailabilityListFromApi.d.ts +2 -0
  54. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +14 -1
  55. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  56. package/dist/src/hooks/useExternalMember.js +4 -1
  57. package/dist/src/hooks/useExternalMember.js.map +1 -1
  58. package/dist/src/hooks/useNextStepAction.d.ts +15 -0
  59. package/dist/src/hooks/useNextStepAction.js +146 -0
  60. package/dist/src/hooks/useNextStepAction.js.map +1 -0
  61. package/dist/src/index.d.ts +1 -0
  62. package/dist/src/index.js +4 -2
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/models/Api/HotelDTO.d.ts +2 -1
  65. package/dist/src/models/Api/HotelDTO.js +1 -0
  66. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  67. package/dist/src/models/BasketRow.d.ts +11 -1
  68. package/dist/src/models/BasketRow.js +31 -7
  69. package/dist/src/models/BasketRow.js.map +1 -1
  70. package/dist/src/models/Client/Hotel/Hotel.d.ts +1 -1
  71. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  72. package/dist/src/translations/Translation.d.ts +11 -0
  73. package/dist/src/translations/Translation.js +11 -0
  74. package/dist/src/translations/Translation.js.map +1 -1
  75. package/dist/src/translations/languages/en-gb.js +11 -0
  76. package/dist/src/translations/languages/en-gb.js.map +1 -1
  77. package/dist/src/util/EventsHelper.d.ts +6 -1
  78. package/dist/src/util/EventsHelper.js +13 -5
  79. package/dist/src/util/EventsHelper.js.map +1 -1
  80. package/dist/test.bundle.js +1 -1
  81. package/package.json +1 -1
  82. package/dist/387.bundle.js +0 -1
  83. package/dist/537.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RoomRateAvailabilityListFromApi.js","sourceRoot":"/","sources":["src/hooks/RoomRateAvailabilityListFromApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { GuestSearchEvent, RoomListSearchEvent } from '@frontend/events';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { IRoomstayMemberBookingItem } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport { useContext, useEffect, useMemo, useState } from 'react';\n\nimport BasketRow from '@/models/BasketRow';\nimport Filter from '@/models/Room/Filters/Filter';\nimport { Room } from '@/models/Room/Room';\nimport { RoomListSearch } from '@/models/RoomListSearch';\nimport { SearchParameters } from '@/models/SearchParameters';\nimport FilterProvider from '@/providers/FilterProvider';\n\nimport { useExternalMember } from './useExternalMember';\n\nexport const useRoomRateAvailabilityListFromApi = () => {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const beContext = useContext(BookingEngineContext);\n const { roomstayMember } = useContext(RoomstayMemberContext);\n\n const { attemptSelectUnfilledRow, selectedBasketRow, getAllValidRows } = useContext(BasketContext);\n\n const [rooms, setRooms] = useState<Room[]>([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [loadingAttempted, setLoadingAttempted] = useState(false);\n\n const [openRoom, setOpenRoom] = useState<boolean | null>(null);\n const [apiHasError, setApiHasError] = useState<boolean | null>(null);\n\n const startDate = selectedBasketRow?.getStartDate();\n const endDate = selectedBasketRow?.getEndDate();\n const promoCode = selectedBasketRow?.getPromoCode();\n\n const adults = selectedBasketRow?.getAdults();\n const children = selectedBasketRow?.getChildren();\n\n const { memberNumber } = useExternalMember();\n\n const { raise } = useEvent();\n\n const retargetingRoom = useMemo(() => {\n if (!roomstayMember || roomstayMember.bookings?.length === 0) return null;\n\n let lastBookingDate: dayjs.Dayjs;\n let lastBookingRoomcode = '';\n roomstayMember.bookings.forEach((booking) => {\n if (booking.hotelId !== hotel?.hotelID) {\n return;\n }\n\n Object.values<IRoomstayMemberBookingItem>(booking.itinerary).map((itinerary) => {\n const { roomCode, nights } = itinerary;\n const dates = Object.keys(nights).map(dayjs);\n const maxDate = dayjs(\n Math.max.apply(\n null,\n dates.map((d) => +d)\n )\n );\n if (!lastBookingDate || maxDate.isAfter(maxDate)) {\n lastBookingDate = maxDate;\n lastBookingRoomcode = roomCode;\n }\n });\n });\n\n return rooms.find((room) => room.code === lastBookingRoomcode);\n }, [rooms, roomstayMember]);\n\n useEffect(() => {\n let isCancelled = false;\n\n try {\n const search: SearchParameters = {\n checkInTime: startDate?.format('YYYY-M-D'),\n checkOutTime: endDate?.format('YYYY-M-D'),\n numAdults: adults,\n numChildren: children,\n numRooms: 1,\n promoCode: promoCode,\n };\n\n const event = new GuestSearchEvent(search);\n raise(event);\n\n const filters: Filter[] = Object.values(beContext.currentFilters).filter((filter) => !!filter) as Filter[];\n\n let row = selectedBasketRow;\n\n if (!row && !rooms.length) {\n row = attemptSelectUnfilledRow() as BasketRow;\n }\n\n if (!row) {\n const validRows = getAllValidRows();\n row = validRows[validRows.length - 1];\n }\n\n if (row) {\n setIsLoading(true);\n FilterProvider.getRoomList(row, filters, hotel?.hotelID as string, memberNumber)\n .then((availableRooms) => {\n if (!isCancelled) {\n setRooms(availableRooms);\n setOpenRoom(!!selectedBasketRow);\n setApiHasError(false);\n\n const foundRooms: RoomListSearch[] =\n availableRooms?.map((room) => {\n const { name, code } = room;\n\n const foundRoom: RoomListSearch = {\n name: name as string,\n code: code as string,\n lowestPrice: room.getLowestPrice(),\n highestPrice: room.getHighestPrice(),\n currency: ccx.currentCurrency,\n\n rates:\n room.getRates()?.map((rate) => {\n const { name, code } = rate;\n return {\n name,\n code,\n\n price: {\n averagePrice: rate.getAveragePrice(),\n totalPrice: rate.getTotalPrice(),\n currency: ccx.currentCurrency,\n },\n };\n }) ?? [],\n };\n\n return foundRoom;\n }) ?? [];\n\n const event = new RoomListSearchEvent(search, foundRooms);\n raise(event);\n }\n })\n .catch(() => {\n if (!isCancelled) {\n setRooms([]);\n setOpenRoom(null);\n setApiHasError(true);\n }\n })\n .finally(() => {\n setLoadingAttempted(true);\n setIsLoading(false);\n });\n }\n } catch (ex) {\n //\n }\n\n return () => {\n setIsLoading(false);\n isCancelled = true;\n };\n }, [adults, children, startDate, endDate, promoCode, ccx.currentLanguage, beContext.currentFilters, selectedBasketRow?.getStale(), memberNumber]);\n\n return { loadingAttempted, isLoading, rooms, openRoom, apiHasError, retargetingRoom };\n};\n"]}
1
+ {"version":3,"file":"RoomRateAvailabilityListFromApi.js","sourceRoot":"/","sources":["src/hooks/RoomRateAvailabilityListFromApi.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { GuestSearchEvent, RoomListSearchEvent } from '@frontend/events';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { IRoomstayMemberBookingItem } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport { useContext, useEffect, useMemo, useState } from 'react';\n\nimport BasketRow from '@/models/BasketRow';\nimport Filter from '@/models/Room/Filters/Filter';\nimport { Room } from '@/models/Room/Room';\nimport { RoomListSearch } from '@/models/RoomListSearch';\nimport { SearchParameters } from '@/models/SearchParameters';\nimport FilterProvider from '@/providers/FilterProvider';\n\nimport { useExternalMember } from './useExternalMember';\n\nexport const useRoomRateAvailabilityListFromApi = () => {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const beContext = useContext(BookingEngineContext);\n const { roomstayMember } = useContext(RoomstayMemberContext);\n\n const { attemptSelectUnfilledRow, selectedBasketRow, getAllValidRows } = useContext(BasketContext);\n\n const [rooms, setRooms] = useState<Room[]>([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [loadingAttempted, setLoadingAttempted] = useState(false);\n\n const [openRoom, setOpenRoom] = useState<boolean | null>(null);\n const [apiHasError, setApiHasError] = useState<boolean | null>(null);\n\n const startDate = selectedBasketRow?.getStartDate();\n const endDate = selectedBasketRow?.getEndDate();\n const promoCode = selectedBasketRow?.getPromoCode();\n\n const adults = selectedBasketRow?.getAdults();\n const children = selectedBasketRow?.getChildren();\n\n const { memberNumber } = useExternalMember();\n\n const { raise } = useEvent();\n\n const retargetingRoom = useMemo(() => {\n if (!roomstayMember || roomstayMember.bookings?.length === 0) return null;\n\n let lastBookingDate: dayjs.Dayjs;\n let lastBookingRoomcode = '';\n roomstayMember.bookings.forEach((booking) => {\n if (booking.hotelId !== hotel?.hotelID) {\n return;\n }\n\n Object.values<IRoomstayMemberBookingItem>(booking.itinerary).map((itinerary) => {\n const { roomCode, nights } = itinerary;\n const dates = Object.keys(nights).map(dayjs);\n const maxDate = dayjs(\n Math.max.apply(\n null,\n dates.map((d) => +d)\n )\n );\n if (!lastBookingDate || maxDate.isAfter(maxDate)) {\n lastBookingDate = maxDate;\n lastBookingRoomcode = roomCode;\n }\n });\n });\n\n return rooms.find((room) => room.code === lastBookingRoomcode);\n }, [rooms, roomstayMember]);\n\n const getRoomsByBasketRow = async (basketRow: BasketRow): Promise<Room[]> => {\n const filters: Filter[] = Object.values(beContext.currentFilters).filter((filter) => !!filter) as Filter[];\n return await FilterProvider.getRoomList(basketRow, filters, hotel?.hotelID as string, memberNumber);\n };\n\n useEffect(() => {\n let isCancelled = false;\n\n try {\n const search: SearchParameters = {\n checkInTime: startDate?.format('YYYY-M-D'),\n checkOutTime: endDate?.format('YYYY-M-D'),\n numAdults: adults,\n numChildren: children,\n numRooms: 1,\n promoCode: promoCode,\n };\n\n const event = new GuestSearchEvent(search);\n raise(event);\n\n const filters: Filter[] = Object.values(beContext.currentFilters).filter((filter) => !!filter) as Filter[];\n\n let row = selectedBasketRow;\n\n if (!row && !rooms.length) {\n row = attemptSelectUnfilledRow() as BasketRow;\n }\n\n if (!row) {\n const validRows = getAllValidRows();\n row = validRows[validRows.length - 1];\n }\n\n if (row) {\n setIsLoading(true);\n FilterProvider.getRoomList(row, filters, hotel?.hotelID as string, memberNumber)\n .then((availableRooms) => {\n if (!isCancelled) {\n setRooms(availableRooms);\n setOpenRoom(!!selectedBasketRow);\n setApiHasError(false);\n\n const foundRooms: RoomListSearch[] =\n availableRooms?.map((room) => {\n const { name, code } = room;\n\n const foundRoom: RoomListSearch = {\n name: name as string,\n code: code as string,\n lowestPrice: room.getLowestPrice(),\n highestPrice: room.getHighestPrice(),\n currency: ccx.currentCurrency,\n\n rates:\n room.getRates()?.map((rate) => {\n const { name, code } = rate;\n return {\n name,\n code,\n\n price: {\n averagePrice: rate.getAveragePrice(),\n totalPrice: rate.getTotalPrice(),\n currency: ccx.currentCurrency,\n },\n };\n }) ?? [],\n };\n\n return foundRoom;\n }) ?? [];\n\n const event = new RoomListSearchEvent(search, foundRooms);\n raise(event);\n }\n })\n .catch(() => {\n if (!isCancelled) {\n setRooms([]);\n setOpenRoom(null);\n setApiHasError(true);\n }\n })\n .finally(() => {\n setLoadingAttempted(true);\n setIsLoading(false);\n });\n }\n } catch (ex) {\n //\n }\n\n return () => {\n setIsLoading(false);\n isCancelled = true;\n };\n }, [adults, children, startDate, endDate, promoCode, ccx.currentLanguage, beContext.currentFilters, selectedBasketRow?.getStale(), memberNumber]);\n\n return { loadingAttempted, isLoading, rooms, openRoom, apiHasError, retargetingRoom, getRoomsByBasketRow };\n};\n"]}
@@ -17,10 +17,13 @@ const useExternalMember = () => {
17
17
  else if (integrations === null || integrations === void 0 ? void 0 : integrations.includes(HotelDTO_1.EIntegration.Top10)) {
18
18
  return HotelDTO_1.EIntegration.Top10;
19
19
  }
20
+ else if (integrations === null || integrations === void 0 ? void 0 : integrations.includes(HotelDTO_1.EIntegration.Gday)) {
21
+ return HotelDTO_1.EIntegration.Gday;
22
+ }
20
23
  }, [hotel]);
21
24
  (0, react_1.useEffect)(() => {
22
25
  var _a;
23
- const isExternalProvider = ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.integrations) === null || _a === void 0 ? void 0 : _a.some((provider) => provider === HotelDTO_1.EIntegration.Big4 || provider === HotelDTO_1.EIntegration.Top10)) || false;
26
+ const isExternalProvider = ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.integrations) === null || _a === void 0 ? void 0 : _a.some((provider) => provider === HotelDTO_1.EIntegration.Big4 || provider === HotelDTO_1.EIntegration.Top10 || provider === HotelDTO_1.EIntegration.Gday)) || false;
24
27
  setIsExternalMemberHotel(isExternalProvider);
25
28
  }, [hotel]);
26
29
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useExternalMember.js","sourceRoot":"/","sources":["src/hooks/useExternalMember.tsx"],"names":[],"mappings":";;;AAAA,iCAAqD;AAErD,+DAA2D;AAC3D,oDAAqD;AAE9C,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,kCAAe,GAAE,CAAC;IACpC,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,GAAG,MAAM,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACpC,MAAM,YAAY,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAC;QAEzC,2HAA2H;QAC3H,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,uBAAY,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,uBAAY,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,uBAAY,CAAC,KAAK,CAAC,EAAE;YACnD,OAAO,uBAAY,CAAC,KAAK,CAAC;SAC7B;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,MAAM,kBAAkB,GAAG,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,uBAAY,CAAC,IAAI,IAAI,QAAQ,KAAK,uBAAY,CAAC,KAAK,CAAC,KAAI,KAAK,CAAC;QAC/I,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO;QACH,kBAAkB;QAClB,qBAAqB;QACrB,YAAY,EAAE,qBAAqB,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC;AACN,CAAC,CAAC;AAzBW,QAAA,iBAAiB,qBAyB5B","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport { useCurrentHotel } from '@/hooks/CurrentHotelHook';\nimport { EIntegration } from '@/models/Api/HotelDTO';\n\nexport const useExternalMember = () => {\n const { hotel } = useCurrentHotel();\n const [isExternalMemberHotel, setIsExternalMemberHotel] = useState<boolean>(false);\n const existingUser = localStorage.getItem('hotel' + hotel?.hotelID + 'user');\n const externalMemberType = useMemo(() => {\n const integrations = hotel?.integrations;\n\n // Because integrations is an array of strings technically both Big4 and Top10 theoretically come down, so we'll choose one\n if (integrations?.includes(EIntegration.Big4)) {\n return EIntegration.Big4;\n } else if (integrations?.includes(EIntegration.Top10)) {\n return EIntegration.Top10;\n }\n }, [hotel]);\n\n useEffect(() => {\n const isExternalProvider = hotel?.integrations?.some((provider) => provider === EIntegration.Big4 || provider === EIntegration.Top10) || false;\n setIsExternalMemberHotel(isExternalProvider);\n }, [hotel]);\n\n return {\n externalMemberType,\n isExternalMemberHotel,\n memberNumber: isExternalMemberHotel && existingUser ? existingUser : undefined,\n };\n};\n"]}
1
+ {"version":3,"file":"useExternalMember.js","sourceRoot":"/","sources":["src/hooks/useExternalMember.tsx"],"names":[],"mappings":";;;AAAA,iCAAqD;AAErD,+DAA2D;AAC3D,oDAAqD;AAE9C,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,kCAAe,GAAE,CAAC;IACpC,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,GAAG,MAAM,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACpC,MAAM,YAAY,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAC;QAEzC,2HAA2H;QAC3H,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,uBAAY,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,uBAAY,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,uBAAY,CAAC,KAAK,CAAC,EAAE;YACnD,OAAO,uBAAY,CAAC,KAAK,CAAC;SAC7B;aAAM,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,uBAAY,CAAC,IAAI,CAAC,EAAE;YAClD,OAAO,uBAAY,CAAC,IAAI,CAAC;SAC5B;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,MAAM,kBAAkB,GACpB,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,0CAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,uBAAY,CAAC,IAAI,IAAI,QAAQ,KAAK,uBAAY,CAAC,KAAK,IAAI,QAAQ,KAAK,uBAAY,CAAC,IAAI,CAAC,KAAI,KAAK,CAAC;QAC1J,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO;QACH,kBAAkB;QAClB,qBAAqB;QACrB,YAAY,EAAE,qBAAqB,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC;AACN,CAAC,CAAC;AA5BW,QAAA,iBAAiB,qBA4B5B","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport { useCurrentHotel } from '@/hooks/CurrentHotelHook';\nimport { EIntegration } from '@/models/Api/HotelDTO';\n\nexport const useExternalMember = () => {\n const { hotel } = useCurrentHotel();\n const [isExternalMemberHotel, setIsExternalMemberHotel] = useState<boolean>(false);\n const existingUser = localStorage.getItem('hotel' + hotel?.hotelID + 'user');\n const externalMemberType = useMemo(() => {\n const integrations = hotel?.integrations;\n\n // Because integrations is an array of strings technically both Big4 and Top10 theoretically come down, so we'll choose one\n if (integrations?.includes(EIntegration.Big4)) {\n return EIntegration.Big4;\n } else if (integrations?.includes(EIntegration.Top10)) {\n return EIntegration.Top10;\n } else if (integrations?.includes(EIntegration.Gday)) {\n return EIntegration.Gday;\n }\n }, [hotel]);\n\n useEffect(() => {\n const isExternalProvider =\n hotel?.integrations?.some((provider) => provider === EIntegration.Big4 || provider === EIntegration.Top10 || provider === EIntegration.Gday) || false;\n setIsExternalMemberHotel(isExternalProvider);\n }, [hotel]);\n\n return {\n externalMemberType,\n isExternalMemberHotel,\n memberNumber: isExternalMemberHotel && existingUser ? existingUser : undefined,\n };\n};\n"]}
@@ -0,0 +1,15 @@
1
+ import BasketRow from '../models/BasketRow';
2
+ import { RoomRate } from '../models/Room/RoomRate';
3
+ interface IValidationMatchedPrice {
4
+ matched: boolean;
5
+ latestRate: RoomRate | null;
6
+ }
7
+ export declare const useNextStepAction: () => {
8
+ getBasketRowUnMatchedPrice: () => Promise<{
9
+ basketRow: BasketRow;
10
+ validation: IValidationMatchedPrice;
11
+ }[]>;
12
+ syncBasketRowUnMatchedPrice: () => Promise<void>;
13
+ };
14
+ export declare const withNextStepConfirmationDialog: (WrappedComponent: any) => (props: any) => JSX.Element;
15
+ export {};
@@ -0,0 +1,146 @@
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.withNextStepConfirmationDialog = exports.useNextStepAction = void 0;
39
+ const contexts_1 = require("../contexts/index.js");
40
+ const react_1 = __importStar(require("react"));
41
+ const react_i18next_1 = require("react-i18next");
42
+ const BEButton_1 = __importDefault(require("../components/generic/BEButton"));
43
+ const SimpleModal_1 = __importStar(require("../components/generic/modal/SimpleModal"));
44
+ const Text_1 = __importDefault(require("../components/generic/Text"));
45
+ const Translation_1 = require("../translations/Translation");
46
+ const RoomRateAvailabilityListFromApi_1 = require("./RoomRateAvailabilityListFromApi");
47
+ const useNextStepAction = () => {
48
+ const { getAllValidRows, updateBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
49
+ const { getRoomsByBasketRow } = (0, RoomRateAvailabilityListFromApi_1.useRoomRateAvailabilityListFromApi)();
50
+ const validateRoomRateMatchedPrice = (basketRow) => __awaiter(void 0, void 0, void 0, function* () {
51
+ var _a;
52
+ const roomRate = basketRow.getRate();
53
+ const rooms = yield getRoomsByBasketRow(basketRow);
54
+ const latestRate = (roomRate === null || roomRate === void 0 ? void 0 : roomRate.code) ? (_a = rooms.find(({ code }) => { var _a; return code === ((_a = roomRate === null || roomRate === void 0 ? void 0 : roomRate.getRoom()) === null || _a === void 0 ? void 0 : _a.code); })) === null || _a === void 0 ? void 0 : _a.getRate(roomRate === null || roomRate === void 0 ? void 0 : roomRate.code) : null;
55
+ return {
56
+ matched: (roomRate === null || roomRate === void 0 ? void 0 : roomRate.getAveragePrice(true)) === (latestRate === null || latestRate === void 0 ? void 0 : latestRate.getAveragePrice(true)),
57
+ latestRate: latestRate !== null && latestRate !== void 0 ? latestRate : null,
58
+ };
59
+ });
60
+ const getBasketRowUnMatchedPrice = () => __awaiter(void 0, void 0, void 0, function* () {
61
+ const allValidRows = getAllValidRows();
62
+ const invalidRows = [];
63
+ for (const basketRow of allValidRows) {
64
+ const validation = yield validateRoomRateMatchedPrice(basketRow);
65
+ if (validation.matched === false) {
66
+ invalidRows.push({
67
+ basketRow: basketRow,
68
+ validation: validation,
69
+ });
70
+ }
71
+ }
72
+ return invalidRows;
73
+ });
74
+ const syncBasketRowUnMatchedPrice = () => __awaiter(void 0, void 0, void 0, function* () {
75
+ const allValidRows = getAllValidRows();
76
+ for (const basketRow of allValidRows) {
77
+ const matchedPrice = yield validateRoomRateMatchedPrice(basketRow);
78
+ if (matchedPrice.matched === false) {
79
+ basketRow.setRate(matchedPrice === null || matchedPrice === void 0 ? void 0 : matchedPrice.latestRate);
80
+ basketRow.setPreGuestsState();
81
+ updateBasketRow(basketRow);
82
+ }
83
+ }
84
+ });
85
+ return { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice };
86
+ };
87
+ exports.useNextStepAction = useNextStepAction;
88
+ //HOC
89
+ const withNextStepConfirmationDialog = (WrappedComponent) => {
90
+ return function WithConfirmationDialog(props) {
91
+ const { t } = (0, react_i18next_1.useTranslation)();
92
+ const { updateBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
93
+ const { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice } = (0, exports.useNextStepAction)();
94
+ const [showConfirmationDialog, setShowConfirmationDialog] = (0, react_1.useState)(false);
95
+ const [hasUnavailableBasket, setHasUnavailableBasket] = (0, react_1.useState)(false);
96
+ const onClickHandler = (event) => __awaiter(this, void 0, void 0, function* () {
97
+ var _a;
98
+ const basketRowUnMatchedPrice = yield getBasketRowUnMatchedPrice();
99
+ if (basketRowUnMatchedPrice.length === 0) {
100
+ //Pre-validation passed
101
+ (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);
102
+ }
103
+ else {
104
+ //Pre-validation failed
105
+ //Show dymanic alert here
106
+ setHasUnavailableBasket(basketRowUnMatchedPrice.some(({ validation }) => !validation.latestRate));
107
+ setShowConfirmationDialog(true);
108
+ event.stopPropagation();
109
+ event.preventDefault();
110
+ }
111
+ });
112
+ const onDiscardHandler = () => __awaiter(this, void 0, void 0, function* () {
113
+ var _b;
114
+ setShowConfirmationDialog(false);
115
+ const basketRowUnMatchedPrice = yield getBasketRowUnMatchedPrice();
116
+ for (const { basketRow } of basketRowUnMatchedPrice) {
117
+ basketRow.discardGuestsState();
118
+ updateBasketRow(basketRow, true);
119
+ }
120
+ (_b = props.onClick) === null || _b === void 0 ? void 0 : _b.call(props);
121
+ });
122
+ const onSyncChangesHandler = () => __awaiter(this, void 0, void 0, function* () {
123
+ var _c;
124
+ setShowConfirmationDialog(false);
125
+ yield syncBasketRowUnMatchedPrice();
126
+ (_c = props.onClick) === null || _c === void 0 ? void 0 : _c.call(props);
127
+ });
128
+ const openCloseHandler = () => {
129
+ setShowConfirmationDialog(false);
130
+ };
131
+ return (react_1.default.createElement(react_1.default.Fragment, null,
132
+ react_1.default.createElement(WrappedComponent, Object.assign({}, props, { onClick: onClickHandler })),
133
+ react_1.default.createElement(SimpleModal_1.default, { open: showConfirmationDialog, onClose: openCloseHandler, alignCenter: true, size: SimpleModal_1.SimpleModalSize.ExtraSmall },
134
+ react_1.default.createElement("div", { className: "u-pad--heavy inactivity-window" },
135
+ react_1.default.createElement("div", { className: "u-marg-bottom--heavy" }, hasUnavailableBasket ? (react_1.default.createElement(react_1.default.Fragment, null,
136
+ react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert)),
137
+ react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert2)))) : (react_1.default.createElement(Text_1.default, null, t(Translation_1.Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmKeepChangesAlert)))),
138
+ react_1.default.createElement("div", { className: "u-flex" },
139
+ react_1.default.createElement("div", { className: "u-marg-right--light u-w-100" },
140
+ react_1.default.createElement(BEButton_1.default, { wide: true, onClick: onDiscardHandler }, t(Translation_1.Translation.Misc.No))),
141
+ react_1.default.createElement("div", { className: "u-w-100" },
142
+ react_1.default.createElement(BEButton_1.default, { wide: true, filled: true, primary: true, onClick: onSyncChangesHandler }, hasUnavailableBasket ? t(Translation_1.Translation.Step.Room.UnMatchedBasketRowPrice.Continue) : t(Translation_1.Translation.Step.Room.UnMatchedBasketRowPrice.YesUpdate))))))));
143
+ };
144
+ };
145
+ exports.withNextStepConfirmationDialog = withNextStepConfirmationDialog;
146
+ //# sourceMappingURL=useNextStepAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNextStepAction.js","sourceRoot":"/","sources":["src/hooks/useNextStepAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport BasketRow from '@/models/BasketRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Translation } from '@/translations/Translation';\n\nimport { useRoomRateAvailabilityListFromApi } from './RoomRateAvailabilityListFromApi';\ninterface IValidationMatchedPrice {\n matched: boolean;\n latestRate: RoomRate | null;\n}\n\nexport const useNextStepAction = () => {\n const { getAllValidRows, updateBasketRow } = useContext(BasketContext);\n const { getRoomsByBasketRow } = useRoomRateAvailabilityListFromApi();\n\n const validateRoomRateMatchedPrice = async (basketRow: BasketRow): Promise<IValidationMatchedPrice> => {\n const roomRate = basketRow.getRate();\n const rooms = await getRoomsByBasketRow(basketRow);\n const latestRate = roomRate?.code ? rooms.find(({ code }) => code === roomRate?.getRoom()?.code)?.getRate(roomRate?.code) : null;\n return {\n matched: roomRate?.getAveragePrice(true) === latestRate?.getAveragePrice(true),\n latestRate: latestRate ?? null,\n };\n };\n\n const getBasketRowUnMatchedPrice = async (): Promise<\n {\n basketRow: BasketRow;\n validation: IValidationMatchedPrice;\n }[]\n > => {\n const allValidRows: BasketRow[] = getAllValidRows();\n const invalidRows = [];\n for (const basketRow of allValidRows) {\n const validation = await validateRoomRateMatchedPrice(basketRow);\n if (validation.matched === false) {\n invalidRows.push({\n basketRow: basketRow,\n validation: validation,\n });\n }\n }\n return invalidRows;\n };\n\n const syncBasketRowUnMatchedPrice = async (): Promise<void> => {\n const allValidRows: BasketRow[] = getAllValidRows();\n for (const basketRow of allValidRows) {\n const matchedPrice = await validateRoomRateMatchedPrice(basketRow);\n if (matchedPrice.matched === false) {\n basketRow.setRate(matchedPrice?.latestRate);\n basketRow.setPreGuestsState();\n updateBasketRow(basketRow);\n }\n }\n };\n\n return { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice };\n};\n\n//HOC\nexport const withNextStepConfirmationDialog = (WrappedComponent: any) => {\n return function WithConfirmationDialog(props: any) {\n const { t } = useTranslation();\n\n const { updateBasketRow } = useContext(BasketContext);\n const { getBasketRowUnMatchedPrice, syncBasketRowUnMatchedPrice } = useNextStepAction();\n const [showConfirmationDialog, setShowConfirmationDialog] = useState<boolean>(false);\n const [hasUnavailableBasket, setHasUnavailableBasket] = useState<boolean>(false);\n\n const onClickHandler = async (event: MouseEvent) => {\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n if (basketRowUnMatchedPrice.length === 0) {\n //Pre-validation passed\n props.onClick?.();\n } else {\n //Pre-validation failed\n //Show dymanic alert here\n setHasUnavailableBasket(basketRowUnMatchedPrice.some(({ validation }) => !validation.latestRate));\n setShowConfirmationDialog(true);\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n const onDiscardHandler = async () => {\n setShowConfirmationDialog(false);\n const basketRowUnMatchedPrice = await getBasketRowUnMatchedPrice();\n for (const { basketRow } of basketRowUnMatchedPrice) {\n basketRow.discardGuestsState();\n updateBasketRow(basketRow, true);\n }\n props.onClick?.();\n };\n\n const onSyncChangesHandler = async () => {\n setShowConfirmationDialog(false);\n await syncBasketRowUnMatchedPrice();\n props.onClick?.();\n };\n\n const openCloseHandler = () => {\n setShowConfirmationDialog(false);\n };\n\n return (\n <>\n <WrappedComponent {...props} onClick={onClickHandler} />\n <SimpleModal open={showConfirmationDialog} onClose={openCloseHandler} alignCenter size={SimpleModalSize.ExtraSmall}>\n <div className=\"u-pad--heavy inactivity-window\">\n <div className=\"u-marg-bottom--heavy\">\n {hasUnavailableBasket ? (\n <>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert)}</Text>\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmUpdateAndClearAlert2)}</Text>\n </>\n ) : (\n <Text>{t(Translation.Step.Room.UnMatchedBasketRowPrice.ConfirmKeepChangesAlert)}</Text>\n )}\n </div>\n <div className=\"u-flex\">\n <div className=\"u-marg-right--light u-w-100\">\n <BEButton wide onClick={onDiscardHandler}>\n {t(Translation.Misc.No)}\n </BEButton>\n </div>\n <div className=\"u-w-100\">\n <BEButton wide filled primary onClick={onSyncChangesHandler}>\n {hasUnavailableBasket ? t(Translation.Step.Room.UnMatchedBasketRowPrice.Continue) : t(Translation.Step.Room.UnMatchedBasketRowPrice.YesUpdate)}\n </BEButton>\n </div>\n </div>\n </div>\n </SimpleModal>\n </>\n );\n };\n};\n"]}
@@ -38,6 +38,7 @@ export { default as FeatureProvider } from './providers/FeatureProvider';
38
38
  export * from './providers/LanguageProvider';
39
39
  export * from './providers/PromotionProvider';
40
40
  export { default as RatePillProvider } from './providers/RatePillProvider';
41
+ export { RoomSort } from './providers/RoomSortProvider';
41
42
  export { default as ConfirmationVerifyFeature } from './providers/feature/ConfirmationVerifyFeature';
42
43
  export { default as DatePickerTypeFeature } from './providers/feature/DatePickerTypeFeature';
43
44
  export { default as E164PhoneNumberFieldFeature } from './providers/feature/E164PhoneNumberFieldFeature';
package/dist/src/index.js CHANGED
@@ -17,8 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.SessionProvider = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.StepConfirmationCountrySelector = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
- exports.Version = void 0;
20
+ exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.SessionProvider = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.StepConfirmationCountrySelector = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
+ exports.Version = exports.events = void 0;
22
22
  // TODO: Look into resolving this.
23
23
  const react_1 = __importDefault(require("react"));
24
24
  const StepConfirmation_1 = __importDefault(require("./pages/steps/StepConfirmation/StepConfirmation"));
@@ -91,6 +91,8 @@ __exportStar(require("./providers/LanguageProvider"), exports);
91
91
  __exportStar(require("./providers/PromotionProvider"), exports);
92
92
  var RatePillProvider_1 = require("./providers/RatePillProvider");
93
93
  Object.defineProperty(exports, "RatePillProvider", { enumerable: true, get: function () { return __importDefault(RatePillProvider_1).default; } });
94
+ var RoomSortProvider_1 = require("./providers/RoomSortProvider");
95
+ Object.defineProperty(exports, "RoomSort", { enumerable: true, get: function () { return RoomSortProvider_1.RoomSort; } });
94
96
  // Features
95
97
  var ConfirmationVerifyFeature_1 = require("./providers/feature/ConfirmationVerifyFeature");
96
98
  Object.defineProperty(exports, "ConfirmationVerifyFeature", { enumerable: true, get: function () { return __importDefault(ConfirmationVerifyFeature_1).default; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as SessionProvider } from '@/providers/SessionProvider';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
@@ -56,7 +56,8 @@ export type HotelRoomDTO = {
56
56
  };
57
57
  export declare enum EIntegration {
58
58
  Big4 = "Big4",
59
- Top10 = "Top10"
59
+ Top10 = "Top10",
60
+ Gday = "Gday"
60
61
  }
61
62
  export type HotelDTO = {
62
63
  id: number;
@@ -6,6 +6,7 @@ var EIntegration;
6
6
  (function (EIntegration) {
7
7
  EIntegration["Big4"] = "Big4";
8
8
  EIntegration["Top10"] = "Top10";
9
+ EIntegration["Gday"] = "Gday";
9
10
  })(EIntegration = exports.EIntegration || (exports.EIntegration = {}));
10
11
  var VGSCardName;
11
12
  (function (VGSCardName) {
@@ -1 +1 @@
1
- {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;AAiD9F,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,+BAAe,CAAA;AACnB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AA2DD,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; requireInput: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport enum EIntegration {\n Big4 = 'Big4',\n Top10 = 'Top10',\n}\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n} & Pick<AdminHotelConfig, 'childConfiguration'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
1
+ {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;AAiD9F,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,6BAAa,CAAA;AACjB,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AA2DD,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; requireInput: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport enum EIntegration {\n Big4 = 'Big4',\n Top10 = 'Top10',\n Gday = 'Gday',\n}\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n} & Pick<AdminHotelConfig, 'childConfiguration'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
@@ -13,6 +13,7 @@ export default class BasketRow {
13
13
  private adults;
14
14
  private children;
15
15
  private infants;
16
+ private preGuestsState;
16
17
  private promoCode;
17
18
  private promoCodeStatus;
18
19
  private startDate;
@@ -37,6 +38,13 @@ export default class BasketRow {
37
38
  getAdults(): number;
38
39
  getChildren(): number;
39
40
  getInfants(): number;
41
+ getPreGuestsState(): {
42
+ adults: number;
43
+ children: number;
44
+ infants: number;
45
+ startDate: dayjs.Dayjs;
46
+ endDate: dayjs.Dayjs;
47
+ };
40
48
  getID(): string;
41
49
  getPromoCodeStatus(): "valid" | "invalid" | "new";
42
50
  isValid(): boolean;
@@ -49,7 +57,9 @@ export default class BasketRow {
49
57
  setAdults(adults: number): void;
50
58
  setChildren(children: number): void;
51
59
  setInfants(infants: number): void;
52
- setRate(rate: RoomRate): void;
60
+ setPreGuestsState(): void;
61
+ discardGuestsState(): void;
62
+ setRate(rate: RoomRate | null): void;
53
63
  setMember(member: Partial<IRoomstayMember>): void;
54
64
  getTotalPrice(beforeTax?: boolean): number | undefined;
55
65
  checkDiffFromReservation(res: ReservationDTO): false | BasketRowDifferences;
@@ -1,10 +1,21 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const dayjs_1 = __importDefault(require("dayjs"));
3
7
  const Color_1 = require("../util/Color");
4
8
  const DefaultValueManager_1 = require("../util/DefaultValueManager");
5
9
  class BasketRow {
6
10
  constructor(rate, uniqId) {
7
11
  var _a, _b, _c;
12
+ this.preGuestsState = {
13
+ adults: 0,
14
+ children: 0,
15
+ infants: 0,
16
+ startDate: (0, dayjs_1.default)(),
17
+ endDate: (0, dayjs_1.default)(),
18
+ };
8
19
  /*
9
20
  Rate is optional since we can create row entries
10
21
  on first step, where there is no ability to select rate.
@@ -86,6 +97,9 @@ class BasketRow {
86
97
  getInfants() {
87
98
  return this.infants;
88
99
  }
100
+ getPreGuestsState() {
101
+ return this.preGuestsState;
102
+ }
89
103
  getID() {
90
104
  return this.uniqId;
91
105
  }
@@ -112,17 +126,11 @@ class BasketRow {
112
126
  this.promoCodeStatus = this.promoCode ? status : 'new';
113
127
  }
114
128
  setStartDate(date) {
115
- if (this.rate && !date.isSame(this.startDate) && this.startDate) {
116
- this.rate = null;
117
- }
118
129
  if ((date === null || date === void 0 ? void 0 : date.isValid()) || date === undefined) {
119
130
  this.startDate = date;
120
131
  }
121
132
  }
122
133
  setEndDate(date) {
123
- if (this.rate && !date.isSame(this.endDate) && this.endDate) {
124
- this.rate = null;
125
- }
126
134
  if ((date === null || date === void 0 ? void 0 : date.isValid()) || date === undefined) {
127
135
  this.endDate = date;
128
136
  }
@@ -136,9 +144,25 @@ class BasketRow {
136
144
  setInfants(infants) {
137
145
  this.infants = infants;
138
146
  }
147
+ setPreGuestsState() {
148
+ this.preGuestsState.adults = this.adults;
149
+ this.preGuestsState.children = this.children;
150
+ this.preGuestsState.infants = this.infants;
151
+ this.preGuestsState.startDate = this.startDate;
152
+ this.preGuestsState.endDate = this.endDate;
153
+ }
154
+ discardGuestsState() {
155
+ this.setAdults(this.preGuestsState.adults);
156
+ this.setChildren(this.preGuestsState.children);
157
+ this.setInfants(this.preGuestsState.infants);
158
+ this.setStartDate(this.preGuestsState.startDate);
159
+ this.setEndDate(this.preGuestsState.endDate);
160
+ }
139
161
  setRate(rate) {
140
162
  this.rate = rate;
141
- this.room = rate.getRoom();
163
+ if (rate) {
164
+ this.room = rate.getRoom();
165
+ }
142
166
  }
143
167
  setMember(member) {
144
168
  this.member = member;
@@ -1 +1 @@
1
- {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingQuoteResponse, IRoomstayMember } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n private member?: Partial<IRoomstayMember>;\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode() {\n return this.promoCode.toUpperCase();\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (this.rate && !date.isSame(this.startDate) && this.startDate) {\n this.rate = null;\n }\n\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (this.rate && !date.isSame(this.endDate) && this.endDate) {\n this.rate = null;\n }\n\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setRate(rate: RoomRate) {\n this.rate = rate;\n this.room = rate.getRoom();\n }\n\n public setMember(member: Partial<IRoomstayMember>) {\n this.member = member;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAM1B,wCAAqC;AACrC,oEAA4D;AAE5D,MAAqB,SAAS;IAkC1B,YAAmB,IAAe,EAAE,MAAe;;QAzB3C,mBAAc,GAMlB;YACA,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAA,eAAK,GAAE;YAClB,OAAO,EAAE,IAAA,eAAK,GAAE;SACnB,CAAC;QAcE;;;MAGF;QACE,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,CAAC,MAAM,GAAG,MAAA,oCAAc,CAAC,MAAM,mCAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAA,oCAAc,CAAC,QAAQ,mCAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAA,oCAAc,CAAC,OAAO,mCAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,kBAAkB;QACrB,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YAClC,OAAO,aAAK,CAAC,OAAO,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YAC3C,OAAO,aAAK,CAAC,KAAK,CAAC;SACtB;QAED,OAAO,aAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE5B,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAC,IAAI,CAAY,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,6BAA6B,CAAC,IAAI,CAAY,CAAA,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,OAAO,CAAC;IAC3K,CAAC;IAEM,eAAe;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACnD;QAED,OAAO,CAAC,CAAC;IACb,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,cAAc;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,MAAM,GAAG,WAAW,EAAE,SAAS,GAAG,GAAG;QACzD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SACxF;IACL,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;IAEM,YAAY,CAAC,IAAY;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,KAAc;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,MAAe;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAEM,kBAAkB,CAAC,MAAmC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,CAAC;IAEM,YAAY,CAAC,IAAiB;QACjC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;IAEM,UAAU,CAAC,IAAiB;QAC/B,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;IACL,CAAC;IAEM,SAAS,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,OAAe;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,iBAAiB;QACpB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/C,CAAC;IAEM,kBAAkB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,IAAqB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SAC9B;IACL,CAAC;IAEM,SAAS,CAAC,MAAgC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,aAAa,CAAC,SAAS,GAAG,KAAK;;QAClC,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,wBAAwB,CAAC,GAAmB;QAC/C,MAAM,WAAW,GAAyB,EAAE,CAAC;QAE7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnF,WAAW,CAAC,UAAU,GAAG;gBACrB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;aAC5B,CAAC;SACL;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;YACjC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE9B,OAAO,WAAW,CAAC;SACtB;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;CACJ;AA1PD,4BA0PC","sourcesContent":["import { IBookingQuoteResponse, IRoomstayMember } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n private member?: Partial<IRoomstayMember>;\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode() {\n return this.promoCode.toUpperCase();\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null) {\n this.rate = rate;\n if (rate) {\n this.room = rate.getRoom();\n }\n }\n\n public setMember(member: Partial<IRoomstayMember>) {\n this.member = member;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n}\n"]}
@@ -148,6 +148,7 @@ export interface ClientHotelConfig {
148
148
  * This is where you can specify custom fields, language overrides, feature toggles etc.
149
149
  */
150
150
  onLoad?: () => void;
151
+ currentRoomSort?: RoomSort;
151
152
  }
152
153
  export interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {
153
154
  }
@@ -158,7 +159,6 @@ export type Hotel = ConfigHotel & {
158
159
  };
159
160
  integrations?: EIntegration[];
160
161
  maxAdults?: number;
161
- currentRoomSort?: RoomSort;
162
162
  };
163
163
  /**
164
164
  * Used for DetailsHotel event