@roomstay/frontend 2.9.1 → 2.10.1-0

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 (140) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/219.bundle.js +2 -0
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/291.bundle.js +1 -0
  5. package/dist/446.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/537.bundle.js +1 -1
  8. package/dist/596.bundle.js +1 -1
  9. package/dist/625.bundle.js +1 -1
  10. package/dist/836.bundle.js +1 -1
  11. package/dist/main.bundle.js +1 -1
  12. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +6 -0
  13. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
  14. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.d.ts +22 -0
  15. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js +131 -0
  16. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js.map +1 -0
  17. package/dist/src/components/generic/HotelPerkVisual.d.ts +7 -0
  18. package/dist/src/components/generic/HotelPerkVisual.js +29 -0
  19. package/dist/src/components/generic/HotelPerkVisual.js.map +1 -0
  20. package/dist/src/components/generic/Portal/Portal.js +5 -1
  21. package/dist/src/components/generic/Portal/Portal.js.map +1 -1
  22. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.d.ts +2 -2
  23. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
  24. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
  25. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js +105 -30
  26. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -1
  27. package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +9 -3
  28. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +45 -6
  29. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  30. package/dist/src/components/steps/date/BEPeoplePickerBlock.js +3 -1
  31. package/dist/src/components/steps/date/BEPeoplePickerBlock.js.map +1 -1
  32. package/dist/src/components/steps/hotel/HotelCard.js +3 -3
  33. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  34. package/dist/src/components/steps/hotel/HotelCardModal.js +3 -3
  35. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  36. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +3 -3
  37. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  38. package/dist/src/components/steps/room/LargeRoomCard.js +3 -3
  39. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  40. package/dist/src/components/steps/room/RoomModalPerkRow.js +3 -3
  41. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  42. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +2 -0
  43. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  44. package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +1 -0
  45. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +18 -4
  46. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  47. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +3 -3
  48. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  49. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +1 -0
  50. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +1 -1
  51. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
  52. package/dist/src/components/summary/BESummaryPerkBlock.js +3 -3
  53. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  54. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  55. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
  56. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  57. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
  58. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  59. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
  60. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  61. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  62. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  63. package/dist/src/contexts/ShadowDomContext/ShadowDomContext.d.ts +10 -0
  64. package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js +12 -0
  65. package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js.map +1 -0
  66. package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.d.ts +8 -0
  67. package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js +13 -0
  68. package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js.map +1 -0
  69. package/dist/src/contexts/index.d.ts +2 -0
  70. package/dist/src/contexts/index.js +2 -0
  71. package/dist/src/contexts/index.js.map +1 -1
  72. package/dist/src/engines/BaseEngine.d.ts +13 -0
  73. package/dist/src/engines/BaseEngine.js +32 -0
  74. package/dist/src/engines/BaseEngine.js.map +1 -1
  75. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js +1 -0
  76. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  77. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +3 -1
  78. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  79. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js +1 -0
  80. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
  81. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +12 -10
  82. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  83. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +1 -0
  84. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
  85. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +11 -9
  86. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
  87. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js +1 -0
  88. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js.map +1 -1
  89. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +4 -2
  90. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  91. package/dist/src/handlers/membership/SalesforceMemberHandler.js +1 -1
  92. package/dist/src/handlers/membership/SalesforceMemberHandler.js.map +1 -1
  93. package/dist/src/hooks/BodyClickHook.d.ts +2 -2
  94. package/dist/src/hooks/BodyClickHook.js +7 -3
  95. package/dist/src/hooks/BodyClickHook.js.map +1 -1
  96. package/dist/src/index.d.ts +1 -0
  97. package/dist/src/index.js +4 -2
  98. package/dist/src/index.js.map +1 -1
  99. package/dist/src/models/Api/HotelDTO.d.ts +2 -0
  100. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  101. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  102. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  103. package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -0
  104. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  105. package/dist/src/pages/findReservation/FindReservationResults.js +1 -1
  106. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  107. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  108. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  109. package/dist/src/pages/hotel/HotelInfo.js +7 -6
  110. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  111. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +7 -1
  112. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  113. package/dist/src/providers/RoomstayThemeEngine.js +7 -2
  114. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  115. package/dist/src/providers/ShadowDomManager.d.ts +21 -0
  116. package/dist/src/providers/ShadowDomManager.js +55 -0
  117. package/dist/src/providers/ShadowDomManager.js.map +1 -0
  118. package/dist/src/providers/StyleInjector.d.ts +42 -0
  119. package/dist/src/providers/StyleInjector.js +118 -0
  120. package/dist/src/providers/StyleInjector.js.map +1 -0
  121. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  122. package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +1 -1
  123. package/dist/src/translations/Translation.d.ts +3 -0
  124. package/dist/src/translations/Translation.js +3 -0
  125. package/dist/src/translations/Translation.js.map +1 -1
  126. package/dist/src/translations/languages/en-gb.js +3 -0
  127. package/dist/src/translations/languages/en-gb.js.map +1 -1
  128. package/dist/src/util/Analytics/Analytics.js +1 -0
  129. package/dist/src/util/Analytics/Analytics.js.map +1 -1
  130. package/dist/test.bundle.js +1 -1
  131. package/dist/tests/offline/entry/config/hotelSpecDefault.js +13 -43
  132. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  133. package/dist/vendors.bundle.js +1 -1
  134. package/package.json +2 -2
  135. package/dist/326.bundle.js +0 -2
  136. package/dist/686.bundle.js +0 -1
  137. package/dist/src/util/HotelPerkHelper.d.ts +0 -3
  138. package/dist/src/util/HotelPerkHelper.js +0 -56
  139. package/dist/src/util/HotelPerkHelper.js.map +0 -1
  140. /package/dist/{326.bundle.js.LICENSE.txt → 219.bundle.js.LICENSE.txt} +0 -0
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useBodyClick = void 0;
4
+ const ShadowDomContext_1 = require("../contexts/ShadowDomContext/ShadowDomContext");
4
5
  const useBodyClick = () => {
5
- const removeEvent = (event, target = document) => {
6
+ const { isShadowDom, shadowRoot } = (0, ShadowDomContext_1.useShadowDom)();
7
+ // Default event target: shadow root when in Shadow DOM, document otherwise
8
+ const defaultTarget = isShadowDom && shadowRoot ? shadowRoot : document;
9
+ const removeEvent = (event, target = defaultTarget) => {
6
10
  target === null || target === void 0 ? void 0 : target.removeEventListener('click', event);
7
11
  };
8
- const onBodyClick = (event, target = document) => {
12
+ const onBodyClick = (event, target = defaultTarget) => {
9
13
  const mappedEvent = (e) => {
10
14
  return event(e);
11
15
  };
@@ -16,7 +20,7 @@ const useBodyClick = () => {
16
20
  },
17
21
  };
18
22
  };
19
- const onBodyClickExcept = (event, ignore, target = document) => {
23
+ const onBodyClickExcept = (event, ignore, target = defaultTarget) => {
20
24
  const response = onBodyClick((e) => {
21
25
  var _a;
22
26
  for (const element of e.composedPath()) {
@@ -1 +1 @@
1
- {"version":3,"file":"BodyClickHook.js","sourceRoot":"/","sources":["src/hooks/BodyClickHook.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,SAAwC,QAAQ,EAAE,EAAE;QAC3F,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,SAAwC,QAAQ,EAAE,EAAE;QAC3F,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE/C,OAAO;YACH,MAAM,EAAE,GAAG,EAAE;gBACT,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;SACJ,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAoB,EAAE,MAAmB,EAAE,SAAwC,QAAQ,EAAE,EAAE;QACtH,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAQ,EAAE,EAAE;;YACtC,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,YAAY,EAAmB,EAAE,CAAC;gBACtD,IAAI,MAAA,OAAO,CAAC,UAAU,wDAAG,MAAM,CAAC,EAAE,CAAC;oBAC/B,uEAAuE;oBACvE,OAAO;gBACX,CAAC;YACL,CAAC;YAED,yEAAyE;YACzE,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAC9C,CAAC,CAAC;AAnCW,QAAA,YAAY,gBAmCvB","sourcesContent":["export const useBodyClick = () => {\n const removeEvent = (event: EventListener, target: HTMLElement | Document | null = document) => {\n target?.removeEventListener('click', event);\n };\n\n const onBodyClick = (event: EventListener, target: HTMLElement | Document | null = document) => {\n const mappedEvent = (e: Event) => {\n return event(e);\n };\n\n target?.addEventListener('click', mappedEvent);\n\n return {\n remove: () => {\n target && removeEvent(mappedEvent, target);\n },\n };\n };\n\n const onBodyClickExcept = (event: EventListener, ignore: HTMLElement, target: HTMLElement | Document | null = document) => {\n const response = onBodyClick((e: Event) => {\n for (const element of e.composedPath() as HTMLElement[]) {\n if (element.isSameNode?.(ignore)) {\n // Preventing the event from taking place, as it's in the ignored list.\n return;\n }\n }\n\n // Assuming target click isn't in the ignore area, proceed with the event\n event(e);\n }, target);\n\n return response;\n };\n return { onBodyClick, onBodyClickExcept };\n};\n"]}
1
+ {"version":3,"file":"BodyClickHook.js","sourceRoot":"/","sources":["src/hooks/BodyClickHook.ts"],"names":[],"mappings":";;;AAAA,mFAA4E;AAErE,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAA,+BAAY,GAAE,CAAC;IAEnD,2EAA2E;IAC3E,MAAM,aAAa,GAAgB,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAErF,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,SAA6B,aAAa,EAAE,EAAE;QACrF,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,SAA6B,aAAa,EAAE,EAAE;QACrF,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC7B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE/C,OAAO;YACH,MAAM,EAAE,GAAG,EAAE;gBACT,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;SACJ,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAoB,EAAE,MAAmB,EAAE,SAA6B,aAAa,EAAE,EAAE;QAChH,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAQ,EAAE,EAAE;;YACtC,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,YAAY,EAAmB,EAAE,CAAC;gBACtD,IAAI,MAAA,OAAO,CAAC,UAAU,wDAAG,MAAM,CAAC,EAAE,CAAC;oBAC/B,uEAAuE;oBACvE,OAAO;gBACX,CAAC;YACL,CAAC;YAED,yEAAyE;YACzE,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAC9C,CAAC,CAAC;AAxCW,QAAA,YAAY,gBAwCvB","sourcesContent":["import { useShadowDom } from '@/contexts/ShadowDomContext/ShadowDomContext';\n\nexport const useBodyClick = () => {\n const { isShadowDom, shadowRoot } = useShadowDom();\n\n // Default event target: shadow root when in Shadow DOM, document otherwise\n const defaultTarget: EventTarget = isShadowDom && shadowRoot ? shadowRoot : document;\n\n const removeEvent = (event: EventListener, target: EventTarget | null = defaultTarget) => {\n target?.removeEventListener('click', event);\n };\n\n const onBodyClick = (event: EventListener, target: EventTarget | null = defaultTarget) => {\n const mappedEvent = (e: Event) => {\n return event(e);\n };\n\n target?.addEventListener('click', mappedEvent);\n\n return {\n remove: () => {\n target && removeEvent(mappedEvent, target);\n },\n };\n };\n\n const onBodyClickExcept = (event: EventListener, ignore: HTMLElement, target: EventTarget | null = defaultTarget) => {\n const response = onBodyClick((e: Event) => {\n for (const element of e.composedPath() as HTMLElement[]) {\n if (element.isSameNode?.(ignore)) {\n // Preventing the event from taking place, as it's in the ignored list.\n return;\n }\n }\n\n // Assuming target click isn't in the ignore area, proceed with the event\n event(e);\n }, target);\n\n return response;\n };\n return { onBodyClick, onBodyClickExcept };\n};\n"]}
@@ -10,6 +10,7 @@ export { EBookingWizardOverlayDirection, EBookingWizardTheme } from './component
10
10
  export { default as Checkbox } from './components/generic/Checkbox/Checkbox';
11
11
  export { default as Currency } from './components/generic/Currency';
12
12
  export { default as Headline } from './components/generic/Headline';
13
+ export { HotelPerkVisual } from './components/generic/HotelPerkVisual';
13
14
  export * from './components/generic/Icon/Icon';
14
15
  export { default as Icon } from './components/generic/Icon/Icon';
15
16
  export { default as InputGroup } from './components/generic/InputGroup/InputGroup';
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.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.SessionProvider = exports.LocalStorageProvider = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.OriginalStepThanksBlock = exports.BE_STEP_THANKS_BLOCK = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.RatesNotFoundBlock = exports.BE_RATES_NOT_FOUND_BLOCK = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.OccupancyWarningBlock = exports.BE_OCCUPANCY_WARNING_BLOCK = exports.OriginalPeoplePickerBlock = exports.BE_PEOPLE_PICKER_BLOCK = exports.StepConfirmationCountrySelector = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.TextBox = exports.TextArea = exports.RadioFields = exports.OriginalHotelLocationMapBlock = exports.BE_HOTEL_LOCATION_MAP_BLOCK = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.EBookingWizardTheme = exports.EBookingWizardOverlayDirection = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
- exports.Version = 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.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.StepDateNextButtonAboveDatepickerFeature = exports.EStepDateNextButtonLocation = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.MemberPortalFeature = exports.InlineAddonStepFeature = exports.HotelGroupFeature = exports.GuestTitleFieldFeature = exports.GiftCardFeature = void 0;
20
+ exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.SessionProvider = exports.LocalStorageProvider = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.OriginalStepThanksBlock = exports.BE_STEP_THANKS_BLOCK = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.RatesNotFoundBlock = exports.BE_RATES_NOT_FOUND_BLOCK = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.OccupancyWarningBlock = exports.BE_OCCUPANCY_WARNING_BLOCK = exports.OriginalPeoplePickerBlock = exports.BE_PEOPLE_PICKER_BLOCK = exports.StepConfirmationCountrySelector = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.TextBox = exports.TextArea = exports.RadioFields = exports.OriginalHotelLocationMapBlock = exports.BE_HOTEL_LOCATION_MAP_BLOCK = exports.LineBreak = exports.InputGroup = exports.Icon = exports.HotelPerkVisual = exports.Headline = exports.Currency = exports.Checkbox = exports.EBookingWizardTheme = exports.EBookingWizardOverlayDirection = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
+ exports.Version = 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.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.StepDateNextButtonAboveDatepickerFeature = exports.EStepDateNextButtonLocation = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.MemberPortalFeature = exports.InlineAddonStepFeature = exports.HotelGroupFeature = exports.GuestTitleFieldFeature = exports.GiftCardFeature = exports.FullPageEngineSmallSpacingFeature = 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"));
@@ -49,6 +49,8 @@ var Currency_1 = require("./components/generic/Currency");
49
49
  Object.defineProperty(exports, "Currency", { enumerable: true, get: function () { return __importDefault(Currency_1).default; } });
50
50
  var Headline_1 = require("./components/generic/Headline");
51
51
  Object.defineProperty(exports, "Headline", { enumerable: true, get: function () { return __importDefault(Headline_1).default; } });
52
+ var HotelPerkVisual_1 = require("./components/generic/HotelPerkVisual");
53
+ Object.defineProperty(exports, "HotelPerkVisual", { enumerable: true, get: function () { return HotelPerkVisual_1.HotelPerkVisual; } });
52
54
  __exportStar(require("./components/generic/Icon/Icon"), exports);
53
55
  var Icon_1 = require("./components/generic/Icon/Icon");
54
56
  Object.defineProperty(exports, "Icon", { enumerable: true, get: function () { return __importDefault(Icon_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 { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\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 * from '@/components/generic/Icon/Icon';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { BE_HOTEL_LOCATION_MAP_BLOCK, OriginalHotelLocationMapBlock } from '@/components/generic/map/BEHotelLocationMapBlock';\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 { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_PEOPLE_PICKER_BLOCK, OriginalPeoplePickerBlock } from '@/components/steps/date/BEPeoplePickerBlock';\nexport { BE_OCCUPANCY_WARNING_BLOCK, default as OccupancyWarningBlock } from '@/components/steps/date/OccupancyWarningBlock';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW, default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK, default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { BE_RATES_NOT_FOUND_BLOCK, default as RatesNotFoundBlock } from '@/components/steps/room/RatesNotFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW, default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\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/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport { BE_STEP_THANKS_BLOCK, OriginalStepThanksBlock } from '@/pages/steps/StepThanks/StepThanksComponent';\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';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\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 GiftCardFeature } from '@/providers/feature/GiftCardFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as HotelGroupFeature } from '@/providers/feature/HotelGroupFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as MemberPortalFeature } from '@/providers/feature/MemberPortalFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { EStepDateNextButtonLocation, default as StepDateNextButtonAboveDatepickerFeature } from '@/providers/feature/StepDateNextButtonAboveDatepickerFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport * from '@/util/Analytics/Analytics';\nexport * from '@/util/Analytics/GoogleAnalytics4';\nexport * from '@/util/Analytics/UniversalAnalytics';\nexport * from '@/util/DataLayer';\nexport { default as DataLayer } 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\nexport * from './config';\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 { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\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 { HotelPerkVisual } from '@/components/generic/HotelPerkVisual';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { BE_HOTEL_LOCATION_MAP_BLOCK, OriginalHotelLocationMapBlock } from '@/components/generic/map/BEHotelLocationMapBlock';\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 { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_PEOPLE_PICKER_BLOCK, OriginalPeoplePickerBlock } from '@/components/steps/date/BEPeoplePickerBlock';\nexport { BE_OCCUPANCY_WARNING_BLOCK, default as OccupancyWarningBlock } from '@/components/steps/date/OccupancyWarningBlock';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW, default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK, default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { BE_RATES_NOT_FOUND_BLOCK, default as RatesNotFoundBlock } from '@/components/steps/room/RatesNotFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW, default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\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/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport { BE_STEP_THANKS_BLOCK, OriginalStepThanksBlock } from '@/pages/steps/StepThanks/StepThanksComponent';\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';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\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 GiftCardFeature } from '@/providers/feature/GiftCardFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as HotelGroupFeature } from '@/providers/feature/HotelGroupFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as MemberPortalFeature } from '@/providers/feature/MemberPortalFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { EStepDateNextButtonLocation, default as StepDateNextButtonAboveDatepickerFeature } from '@/providers/feature/StepDateNextButtonAboveDatepickerFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport * from '@/util/Analytics/Analytics';\nexport * from '@/util/Analytics/GoogleAnalytics4';\nexport * from '@/util/Analytics/UniversalAnalytics';\nexport * from '@/util/DataLayer';\nexport { default as DataLayer } 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\nexport * from './config';\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"]}
@@ -122,6 +122,8 @@ export type HotelDTO = {
122
122
  disableSavedPayments: boolean;
123
123
  enableRoomUpsells?: boolean;
124
124
  enableRateUpsells?: boolean;
125
+ /** Duration (in minutes) of the basket countdown timer; 0 hides it. */
126
+ basketTimeout: number;
125
127
  } & Pick<AdminHotelConfig, 'childConfiguration' | 'perks' | 'perkTitle' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge' | 'company' | 'fees' | 'addDepositFeeToBookingTotal' | 'minAdultAge' | 'maxAdultAge' | 'countInfantsInOccupancy' | 'occupancyLimits' | 'preferProviderBookingId' | 'showUnavailableRooms' | 'isRACMemberNoRequired' | 'metaPixelId' | 'enableAnalyticsDebug' | 'countryCode' | 'calendarHighlights' | 'addressRequirement' | 'maxRoomsPerBooking' | 'bookingFlow'> & Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;
126
128
  export declare enum VGSCardName {
127
129
  Visa = "visa",
@@ -1 +1 @@
1
- {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AAqKjH,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,2BAAX,WAAW,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 { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } 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, ClientHotelConfig, 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 checkInTime?: string | null;\n checkOutTime?: string | null;\n filters: {\n [id: string]: {\n // Options on the AuxiliaryFilter itself:\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n\n // Options on the RoomGroupAuxiliaryFilter:\n requireSelection: boolean;\n order: number;\n };\n };\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 petFriendly?: boolean;\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 timeZone: 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 windcave?: {\n enableDropInMode: boolean;\n };\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n rmsUseDepositQuote?: boolean;\n checkAreaAvailabilityOnRoomStep?: boolean;\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n itineraryNote: string;\n disableSavedPayments: boolean;\n enableRoomUpsells?: boolean;\n enableRateUpsells?: boolean;\n} & Pick<\n AdminHotelConfig,\n | 'childConfiguration'\n | 'perks'\n | 'perkTitle'\n | 'countryPrefix'\n | 'quoteImageDesktop'\n | 'quoteImageMobile'\n | 'memberOnlyImage'\n | 'captureChildAge'\n | 'company'\n | 'fees'\n | 'addDepositFeeToBookingTotal'\n | 'minAdultAge'\n | 'maxAdultAge'\n | 'countInfantsInOccupancy'\n | 'occupancyLimits'\n | 'preferProviderBookingId'\n | 'showUnavailableRooms'\n | 'isRACMemberNoRequired'\n | 'metaPixelId'\n | 'enableAnalyticsDebug'\n | 'countryCode'\n | 'calendarHighlights'\n | 'addressRequirement'\n | 'maxRoomsPerBooking'\n | 'bookingFlow'\n> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\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,uDAAiH;AAuKjH,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,2BAAX,WAAW,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 { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } 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, ClientHotelConfig, 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 checkInTime?: string | null;\n checkOutTime?: string | null;\n filters: {\n [id: string]: {\n // Options on the AuxiliaryFilter itself:\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n\n // Options on the RoomGroupAuxiliaryFilter:\n requireSelection: boolean;\n order: number;\n };\n };\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 petFriendly?: boolean;\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 timeZone: 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 windcave?: {\n enableDropInMode: boolean;\n };\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n rmsUseDepositQuote?: boolean;\n checkAreaAvailabilityOnRoomStep?: boolean;\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n itineraryNote: string;\n disableSavedPayments: boolean;\n enableRoomUpsells?: boolean;\n enableRateUpsells?: boolean;\n /** Duration (in minutes) of the basket countdown timer; 0 hides it. */\n basketTimeout: number;\n} & Pick<\n AdminHotelConfig,\n | 'childConfiguration'\n | 'perks'\n | 'perkTitle'\n | 'countryPrefix'\n | 'quoteImageDesktop'\n | 'quoteImageMobile'\n | 'memberOnlyImage'\n | 'captureChildAge'\n | 'company'\n | 'fees'\n | 'addDepositFeeToBookingTotal'\n | 'minAdultAge'\n | 'maxAdultAge'\n | 'countInfantsInOccupancy'\n | 'occupancyLimits'\n | 'preferProviderBookingId'\n | 'showUnavailableRooms'\n | 'isRACMemberNoRequired'\n | 'metaPixelId'\n | 'enableAnalyticsDebug'\n | 'countryCode'\n | 'calendarHighlights'\n | 'addressRequirement'\n | 'maxRoomsPerBooking'\n | 'bookingFlow'\n> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\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"]}
@@ -78,4 +78,5 @@ export interface HotelOverrideDTO extends ShowYearOnCalendarProps, ShowPromoCode
78
78
  orderUnavailableRoomsLast?: boolean;
79
79
  showPromocodeFieldInCheckout: boolean;
80
80
  showDayNameInDates?: boolean;
81
+ skipViewRatesOnSingleRate?: boolean;
81
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HotelOverrideDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelOverrideDTO.ts"],"names":[],"mappings":"","sourcesContent":["import { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\n\nexport interface TransportDistancesConfig {\n subTitle?: string;\n unit?: string;\n suffix?: string;\n}\nexport interface TransportDistances {\n /** Seems that the old way had these as numbers, and if the unit wasn't metric done conversions on the number\n As they're inputting the string directly now I've changed the Distance component to accept both types and only\n run the conversion on numbers.\n */\n displayCard?: boolean;\n plane?: string | number;\n train?: string | number;\n tram?: string | number;\n bus?: string | number;\n taxi?: string | number;\n car?: string | number;\n ferry?: string | number;\n location?: string | number;\n configuration?: {\n plane?: TransportDistancesConfig;\n train?: TransportDistancesConfig;\n tram?: TransportDistancesConfig;\n bus?: TransportDistancesConfig;\n taxi?: TransportDistancesConfig;\n car?: TransportDistancesConfig;\n ferry?: TransportDistancesConfig;\n location?: TransportDistancesConfig;\n };\n}\n\nexport interface ShowYearOnCalendarProps {\n showYearOnCalendar?: boolean;\n yearDisplayOption?: string;\n}\n\nexport interface ShowPromoCodeAlertProps {\n showPromoCodeAlert?: boolean;\n promoCodeAlertType?: 'popup' | 'notification';\n}\n\nexport interface IPageTitle {\n enable: boolean;\n HotelInfo: string;\n FindReservation: string;\n Date: string;\n Room: string;\n Addon: string;\n Confirmation: string;\n Thanks: string;\n}\n\nexport interface IOverrideMessage {\n enable: boolean;\n BestRatePerks: string;\n BestRatePerksAlert: string;\n PreSignUp: string;\n PostSignUp: string;\n pricesIncludeFeesMessage?: string;\n}\n\nexport interface HotelOverrideDTO extends ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n hideByLine?: boolean;\n overrideDistanceUnitType?: boolean;\n distanceUnitType?: DistanceUnitType;\n transportDistances?: TransportDistances;\n phoneNumberInSummary?: string;\n enabledEventIds?: string[];\n pageTitle?: IPageTitle;\n showPromoCodeDescription?: boolean;\n alwaysShowDecimals?: boolean;\n messages?: IOverrideMessage;\n /**\n * If true, displays the long description next to the short description side by side in the room modal\n */\n roomModalDescSideBySide?: boolean;\n /**\n * If true, Disable grouping rooms in the All Accommodation tab\n * Default: false\n */\n disableGroupRoomsAllTab?: boolean;\n orderUnavailableRoomsLast?: boolean;\n showPromocodeFieldInCheckout: boolean;\n showDayNameInDates?: boolean;\n}\n"]}
1
+ {"version":3,"file":"HotelOverrideDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelOverrideDTO.ts"],"names":[],"mappings":"","sourcesContent":["import { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\n\nexport interface TransportDistancesConfig {\n subTitle?: string;\n unit?: string;\n suffix?: string;\n}\nexport interface TransportDistances {\n /** Seems that the old way had these as numbers, and if the unit wasn't metric done conversions on the number\n As they're inputting the string directly now I've changed the Distance component to accept both types and only\n run the conversion on numbers.\n */\n displayCard?: boolean;\n plane?: string | number;\n train?: string | number;\n tram?: string | number;\n bus?: string | number;\n taxi?: string | number;\n car?: string | number;\n ferry?: string | number;\n location?: string | number;\n configuration?: {\n plane?: TransportDistancesConfig;\n train?: TransportDistancesConfig;\n tram?: TransportDistancesConfig;\n bus?: TransportDistancesConfig;\n taxi?: TransportDistancesConfig;\n car?: TransportDistancesConfig;\n ferry?: TransportDistancesConfig;\n location?: TransportDistancesConfig;\n };\n}\n\nexport interface ShowYearOnCalendarProps {\n showYearOnCalendar?: boolean;\n yearDisplayOption?: string;\n}\n\nexport interface ShowPromoCodeAlertProps {\n showPromoCodeAlert?: boolean;\n promoCodeAlertType?: 'popup' | 'notification';\n}\n\nexport interface IPageTitle {\n enable: boolean;\n HotelInfo: string;\n FindReservation: string;\n Date: string;\n Room: string;\n Addon: string;\n Confirmation: string;\n Thanks: string;\n}\n\nexport interface IOverrideMessage {\n enable: boolean;\n BestRatePerks: string;\n BestRatePerksAlert: string;\n PreSignUp: string;\n PostSignUp: string;\n pricesIncludeFeesMessage?: string;\n}\n\nexport interface HotelOverrideDTO extends ShowYearOnCalendarProps, ShowPromoCodeAlertProps {\n hideByLine?: boolean;\n overrideDistanceUnitType?: boolean;\n distanceUnitType?: DistanceUnitType;\n transportDistances?: TransportDistances;\n phoneNumberInSummary?: string;\n enabledEventIds?: string[];\n pageTitle?: IPageTitle;\n showPromoCodeDescription?: boolean;\n alwaysShowDecimals?: boolean;\n messages?: IOverrideMessage;\n /**\n * If true, displays the long description next to the short description side by side in the room modal\n */\n roomModalDescSideBySide?: boolean;\n /**\n * If true, Disable grouping rooms in the All Accommodation tab\n * Default: false\n */\n disableGroupRoomsAllTab?: boolean;\n orderUnavailableRoomsLast?: boolean;\n showPromocodeFieldInCheckout: boolean;\n showDayNameInDates?: boolean;\n skipViewRatesOnSingleRate?: boolean;\n}\n"]}
@@ -148,6 +148,8 @@ export interface AdminHotelConfig {
148
148
  calendarHighlights: CalendarHighlight[];
149
149
  addressRequirement: EHotelAddressRequirement;
150
150
  maxRoomsPerBooking: number | null;
151
+ /** Duration (in minutes) of the basket countdown timer; 0 hides it. */
152
+ basketTimeout?: number;
151
153
  }
152
154
  /**
153
155
  * This config comes from hard static local file
@@ -1 +1 @@
1
- {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAoBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,gCAAhB,gBAAgB,QAO3B;AAOD,0DAA0D;AAC1D,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAChC,uEAA2C,CAAA;IAC3C,6FAAiE,CAAA;IACjE,+DAAmC,CAAA;AACvC,CAAC,EAJW,wBAAwB,wCAAxB,wBAAwB,QAInC","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport { CalendarHighlight } from '@/models/CalendarHighlight';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n//@TODO: move EHotelAddressRequirement into @roomstay/core\nexport enum EHotelAddressRequirement {\n FullAddressRequired = 'FullAddressRequired',\n AddressOptionalCountryRequired = 'AddressOptionalCountryRequired',\n AddressOptional = 'AddressOptional',\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n windcave?: {\n enableDropInMode: boolean;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n occupancyLimits?: {\n maxSelectableChildren: { [adultCount: number]: number };\n maxSelectableInfants: { [adultCount: number]: number | undefined };\n highestAdultConfig: number;\n };\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n rmsUseDepositQuote?: boolean;\n checkAreaAvailabilityOnRoomStep?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n enableDerbysoftFeed?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n disableSavedPayments?: boolean;\n showUnavailableRooms?: boolean;\n isRACMemberNoRequired?: boolean;\n metaPixelId?: string;\n enableAnalyticsDebug?: boolean;\n enableRoomUpsells?: boolean;\n enableRateUpsells?: boolean;\n countryCode: string | null;\n calendarHighlights: CalendarHighlight[];\n addressRequirement: EHotelAddressRequirement;\n maxRoomsPerBooking: number | null;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n /**\n * Order available rooms\n */\n currentRoomSort?: RoomSort;\n /**\n * Order available rates\n */\n currentRoomRateSort?: RoomSort | undefined;\n maxAdults?: number; //fixed from frontend\n mobileDefaultRatesClosed?: boolean;\n memberOnlyImages?: Record<EMembershipProvider, string>;\n memberOnlyModalImages?: Record<EMembershipProvider, string>;\n memberOnlySignupLinks?: Record<EMembershipProvider, string>;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n\n // TODO: Should be a better way to use this configuration.\n isRACMemberNoRequired?: boolean;\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
1
+ {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAoBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,gCAAhB,gBAAgB,QAO3B;AAOD,0DAA0D;AAC1D,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAChC,uEAA2C,CAAA;IAC3C,6FAAiE,CAAA;IACjE,+DAAmC,CAAA;AACvC,CAAC,EAJW,wBAAwB,wCAAxB,wBAAwB,QAInC","sourcesContent":["import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';\nimport { EBookingFlow, EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport { CalendarHighlight } from '@/models/CalendarHighlight';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { HotelFee } from '@/models/Fee';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n//@TODO: move EHotelAddressRequirement into @roomstay/core\nexport enum EHotelAddressRequirement {\n FullAddressRequired = 'FullAddressRequired',\n AddressOptionalCountryRequired = 'AddressOptionalCountryRequired',\n AddressOptional = 'AddressOptional',\n}\n\n/**\n * This config comes from admin -- TODO: Move to Roomstay Core\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n windcave?: {\n enableDropInMode: boolean;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n countInfantsInOccupancy?: boolean;\n occupancyLimits?: {\n maxSelectableChildren: { [adultCount: number]: number };\n maxSelectableInfants: { [adultCount: number]: number | undefined };\n highestAdultConfig: number;\n };\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n rmsUseDepositQuote?: boolean;\n checkAreaAvailabilityOnRoomStep?: boolean;\n bookingFlow: EBookingFlow;\n\n /** @deprecated Use the new Fees model instead */\n enableCreditCardSurcharge?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n itineraryNote: string;\n\n fees?: HotelFee[];\n addDepositFeeToBookingTotal?: boolean;\n\n company: {\n url?: string;\n logo?: string;\n enableDerbysoftFeed?: string;\n };\n\n facebookUrl: string;\n instagramUrl: string;\n linkedinUrl: string;\n preferProviderBookingId: boolean;\n disableSavedPayments?: boolean;\n showUnavailableRooms?: boolean;\n isRACMemberNoRequired?: boolean;\n metaPixelId?: string;\n enableAnalyticsDebug?: boolean;\n enableRoomUpsells?: boolean;\n enableRateUpsells?: boolean;\n countryCode: string | null;\n calendarHighlights: CalendarHighlight[];\n addressRequirement: EHotelAddressRequirement;\n maxRoomsPerBooking: number | null;\n /** Duration (in minutes) of the basket countdown timer; 0 hides it. */\n basketTimeout?: number;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n /**\n * Order available rooms\n */\n currentRoomSort?: RoomSort;\n /**\n * Order available rates\n */\n currentRoomRateSort?: RoomSort | undefined;\n maxAdults?: number; //fixed from frontend\n mobileDefaultRatesClosed?: boolean;\n memberOnlyImages?: Record<EMembershipProvider, string>;\n memberOnlyModalImages?: Record<EMembershipProvider, string>;\n memberOnlySignupLinks?: Record<EMembershipProvider, string>;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n\n // TODO: Should be a better way to use this configuration.\n isRACMemberNoRequired?: boolean;\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
@@ -133,7 +133,7 @@ function FindReservationResults() {
133
133
  }, [bookingInformation]);
134
134
  const addons = [];
135
135
  const comments = [];
136
- const total = (0, react_1.useCallback)(() => {
136
+ const total = (0, react_1.useMemo)(() => {
137
137
  if (bookingInformation === null || bookingInformation === void 0 ? void 0 : bookingInformation.reservations) {
138
138
  return core_1.TotalCalculator.calculateTotalForReservation(bookingInformation, dismissAddonNightCount);
139
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FindReservationResults.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservationResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { ReservationAddonDTO, ReservationDTO, ReservationsDTO, SimpleItemisedFee, TotalCalculator } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useCallback, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BackButton from '@/components/generic/BackButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { HtmlContentViewer } from '@/components/generic/HtmlContentViewer';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { PageTitle } from '@/components/generic/PageTitle';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { CommonAddonSummary } from '@/components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { ItemisedFeesSummary } from '@/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary';\nimport { FindReservationResultsViewEvent } from '@/events';\nimport { IEventReservation } from '@/models/Api/IEventReservation';\nimport ReservationRow from '@/pages/findReservation/ReservationRow';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport default function FindReservationResults() {\n const params: any = useParams();\n const navigate = useNavigate();\n\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const { t } = useTranslation();\n\n const [bookingInformation, setBookingInformation] = useState<ReservationsDTO | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [cancellationMessage, setCancellationMessage] = useState('');\n const [cancellationTrigger, setCancellationTrigger] = useState(0);\n\n const [data, setData] = useState<ReservationsDTO | null>(null);\n const [itemisedFees, setItemisedFees] = useState<SimpleItemisedFee[]>([]);\n\n const pushHistoryOnClick = () => {\n navigate('../');\n };\n\n /**\n * Determines whether addon night count should be dismissed.\n * This is true when the booking is not from Roomstay, indicated by:\n * - the itinerary number not starting with 'RS', and\n * - the hotel not preferring provider booking IDs.\n */\n const dismissAddonNightCount = !bookingInformation?.itineraryNumber?.startsWith('RS') && !hotel?.preferProviderBookingId;\n\n useEffect(() => {\n let isCancelled = false;\n\n setIsLoading(true);\n\n const handleSuccess = (data: ReservationsDTO) => {\n if (!isCancelled) {\n setBookingInformation(data);\n setIsLoading(false);\n setData(data);\n }\n };\n\n if (params?.ref) {\n API.Reservation.findReservation(params.ref, params.email, hotel?.hotelID as string)\n .then((data: ReservationsDTO) => {\n if (data.hotelFrontendId && data.hotelFrontendId !== hotel?.hotelID) {\n // User has searched for a booking that belongs to a different hotel (but within the same company).\n // Let's redirect the user to the correct hotel.\n ccx.getHotel(data.hotelFrontendId)\n .then((hotel) => {\n const findReservationUrl = `${hotel.hotelUrl}/${hotel.checkoutUrl}/#/find-reservation/${params.ref}/${params.email}`;\n window.location.href = findReservationUrl;\n })\n .catch((error) => {\n console.error(`Failed to find hotel: ${error}. Continuing with current hotel.`);\n handleSuccess(data);\n });\n } else {\n handleSuccess(data);\n }\n })\n .catch(() => {\n navigate('/find-reservation');\n });\n } else {\n navigate('/find-reservation');\n }\n\n return () => {\n isCancelled = true;\n };\n }, [cancellationTrigger]);\n\n useEffect(() => {\n setItemisedFees(bookingInformation?.feesSummary || []);\n }, [bookingInformation]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n const total = useCallback(() => {\n if (bookingInformation?.reservations) {\n return TotalCalculator.calculateTotalForReservation(bookingInformation, dismissAddonNightCount);\n }\n\n return 0;\n }, [bookingInformation, dismissAddonNightCount]);\n\n const { raise } = useEvent();\n useEffect(() => {\n if (!data) return;\n\n const reservations: IEventReservation[] =\n data.reservations?.map((obj: ReservationDTO) => {\n const nightKeys = Object.keys(obj.nights);\n const dateFormat = 'YYYY-MM-DDTHH:mm:ss';\n\n return {\n reservationId: obj.reservationNumber,\n checkInTime: dayjs(nightKeys[0]).format(dateFormat),\n checkOutTime: dayjs(nightKeys[nightKeys.length - 1])\n .add(1, 'day')\n .format(dateFormat),\n totalPrice: obj.total.afterTax,\n priceCurrency: ccx.currentCurrency,\n };\n }) ?? [];\n\n const event = new FindReservationResultsViewEvent(reservations);\n raise(event);\n }, [data]);\n\n return (\n <div className=\"container u-pad--heavy-plus u-pad-left u-pad-right\">\n <PageTitle step=\"FindReservation\" />\n {isLoading ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom\">\n <BackButton onClick={pushHistoryOnClick} />\n </div>\n <Headline size=\"extra-large\">{t(Translation.FindReservation.YourItinerary)}</Headline>\n <Headline color={Color.DarkGrey}>#{bookingInformation?.itineraryNumber}</Headline>\n <div className=\"row u-marg-top--heavy\">\n <AutoAutoHeight open={!!cancellationMessage}>\n <Alert>{cancellationMessage}</Alert>\n </AutoAutoHeight>\n {bookingInformation?.reservations?.map((obj: ReservationDTO, index: number) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => {\n if (dismissAddonNightCount) {\n addons.push(addon);\n } else {\n addons.push({ ...addon, nights: nights.length });\n }\n });\n }\n\n if (obj.comments && index === 0) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return (\n <div className=\"col-lg-6\" key={obj.reservationNumber}>\n <ReservationRow reservation={obj} key={obj.reservationNumber} />\n </div>\n );\n })}\n </div>\n {hotel?.itineraryNote && (\n <Alert icon={IconType.Info} type={AlertType.Alert}>\n <Text type={TextType.Small} asDiv>\n <HtmlContentViewer content={hotel.itineraryNote}></HtmlContentViewer>\n </Text>\n </Alert>\n )}\n <LineBreak />\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index: number) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n <LineBreak />\n </>\n )}\n\n <ItemisedFeesSummary fees={itemisedFees} />\n\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n <TaxInclusionNotice />\n </Text>\n </>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"FindReservationResults.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservationResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { ReservationAddonDTO, ReservationDTO, ReservationsDTO, SimpleItemisedFee, TotalCalculator } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BackButton from '@/components/generic/BackButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { HtmlContentViewer } from '@/components/generic/HtmlContentViewer';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { PageTitle } from '@/components/generic/PageTitle';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { CommonAddonSummary } from '@/components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { ItemisedFeesSummary } from '@/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary';\nimport { FindReservationResultsViewEvent } from '@/events';\nimport { IEventReservation } from '@/models/Api/IEventReservation';\nimport ReservationRow from '@/pages/findReservation/ReservationRow';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport default function FindReservationResults() {\n const params: any = useParams();\n const navigate = useNavigate();\n\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const { t } = useTranslation();\n\n const [bookingInformation, setBookingInformation] = useState<ReservationsDTO | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [cancellationMessage, setCancellationMessage] = useState('');\n const [cancellationTrigger, setCancellationTrigger] = useState(0);\n\n const [data, setData] = useState<ReservationsDTO | null>(null);\n const [itemisedFees, setItemisedFees] = useState<SimpleItemisedFee[]>([]);\n\n const pushHistoryOnClick = () => {\n navigate('../');\n };\n\n /**\n * Determines whether addon night count should be dismissed.\n * This is true when the booking is not from Roomstay, indicated by:\n * - the itinerary number not starting with 'RS', and\n * - the hotel not preferring provider booking IDs.\n */\n const dismissAddonNightCount = !bookingInformation?.itineraryNumber?.startsWith('RS') && !hotel?.preferProviderBookingId;\n\n useEffect(() => {\n let isCancelled = false;\n\n setIsLoading(true);\n\n const handleSuccess = (data: ReservationsDTO) => {\n if (!isCancelled) {\n setBookingInformation(data);\n setIsLoading(false);\n setData(data);\n }\n };\n\n if (params?.ref) {\n API.Reservation.findReservation(params.ref, params.email, hotel?.hotelID as string)\n .then((data: ReservationsDTO) => {\n if (data.hotelFrontendId && data.hotelFrontendId !== hotel?.hotelID) {\n // User has searched for a booking that belongs to a different hotel (but within the same company).\n // Let's redirect the user to the correct hotel.\n ccx.getHotel(data.hotelFrontendId)\n .then((hotel) => {\n const findReservationUrl = `${hotel.hotelUrl}/${hotel.checkoutUrl}/#/find-reservation/${params.ref}/${params.email}`;\n window.location.href = findReservationUrl;\n })\n .catch((error) => {\n console.error(`Failed to find hotel: ${error}. Continuing with current hotel.`);\n handleSuccess(data);\n });\n } else {\n handleSuccess(data);\n }\n })\n .catch(() => {\n navigate('/find-reservation');\n });\n } else {\n navigate('/find-reservation');\n }\n\n return () => {\n isCancelled = true;\n };\n }, [cancellationTrigger]);\n\n useEffect(() => {\n setItemisedFees(bookingInformation?.feesSummary || []);\n }, [bookingInformation]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n const total = useMemo(() => {\n if (bookingInformation?.reservations) {\n return TotalCalculator.calculateTotalForReservation(bookingInformation, dismissAddonNightCount);\n }\n\n return 0;\n }, [bookingInformation, dismissAddonNightCount]);\n\n const { raise } = useEvent();\n useEffect(() => {\n if (!data) return;\n\n const reservations: IEventReservation[] =\n data.reservations?.map((obj: ReservationDTO) => {\n const nightKeys = Object.keys(obj.nights);\n const dateFormat = 'YYYY-MM-DDTHH:mm:ss';\n\n return {\n reservationId: obj.reservationNumber,\n checkInTime: dayjs(nightKeys[0]).format(dateFormat),\n checkOutTime: dayjs(nightKeys[nightKeys.length - 1])\n .add(1, 'day')\n .format(dateFormat),\n totalPrice: obj.total.afterTax,\n priceCurrency: ccx.currentCurrency,\n };\n }) ?? [];\n\n const event = new FindReservationResultsViewEvent(reservations);\n raise(event);\n }, [data]);\n\n return (\n <div className=\"container u-pad--heavy-plus u-pad-left u-pad-right\">\n <PageTitle step=\"FindReservation\" />\n {isLoading ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom\">\n <BackButton onClick={pushHistoryOnClick} />\n </div>\n <Headline size=\"extra-large\">{t(Translation.FindReservation.YourItinerary)}</Headline>\n <Headline color={Color.DarkGrey}>#{bookingInformation?.itineraryNumber}</Headline>\n <div className=\"row u-marg-top--heavy\">\n <AutoAutoHeight open={!!cancellationMessage}>\n <Alert>{cancellationMessage}</Alert>\n </AutoAutoHeight>\n {bookingInformation?.reservations?.map((obj: ReservationDTO, index: number) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => {\n if (dismissAddonNightCount) {\n addons.push(addon);\n } else {\n addons.push({ ...addon, nights: nights.length });\n }\n });\n }\n\n if (obj.comments && index === 0) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return (\n <div className=\"col-lg-6\" key={obj.reservationNumber}>\n <ReservationRow reservation={obj} key={obj.reservationNumber} />\n </div>\n );\n })}\n </div>\n {hotel?.itineraryNote && (\n <Alert icon={IconType.Info} type={AlertType.Alert}>\n <Text type={TextType.Small} asDiv>\n <HtmlContentViewer content={hotel.itineraryNote}></HtmlContentViewer>\n </Text>\n </Alert>\n )}\n <LineBreak />\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index: number) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n <LineBreak />\n </>\n )}\n\n <ItemisedFeesSummary fees={itemisedFees} />\n\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n <TaxInclusionNotice />\n </Text>\n </>\n )}\n </div>\n );\n}\n"]}
@@ -59,7 +59,7 @@ const DataLayer_1 = __importDefault(require("../../util/DataLayer"));
59
59
  const StringHelper_1 = __importDefault(require("../../util/StringHelper"));
60
60
  const TextAlignment_1 = require("../../util/TextAlignment");
61
61
  function ReservationRow(props) {
62
- var _a, _b, _c, _d, _e, _f, _g, _h;
62
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
63
63
  const { t } = (0, react_i18next_1.useTranslation)();
64
64
  const { hotel } = (0, hooks_1.useCurrentHotel)();
65
65
  const { formatReservationDate } = (0, hooks_1.useGuestDateFormat)();
@@ -93,7 +93,8 @@ function ReservationRow(props) {
93
93
  const firstNight = (0, dayjs_1.default)(nightKeys[0]);
94
94
  const lastNight = (0, dayjs_1.default)(nightKeys[nightKeys.length - 1]).add(1, 'day');
95
95
  let images = obj.images;
96
- if ((!images || !images.length) && (hotel === null || hotel === void 0 ? void 0 : hotel.rooms[obj.roomCode])) {
96
+ // Prevent Uncaught TypeError when refreshing reservation result
97
+ if ((!images || !images.length) && ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.rooms) === null || _a === void 0 ? void 0 : _a[obj.roomCode])) {
97
98
  images = hotel === null || hotel === void 0 ? void 0 : hotel.rooms[obj.roomCode].images;
98
99
  }
99
100
  const cancelRow = () => {
@@ -115,7 +116,7 @@ function ReservationRow(props) {
115
116
  });
116
117
  });
117
118
  };
118
- const roomName = obj.roomType ? obj.roomType : (_a = hotel === null || hotel === void 0 ? void 0 : hotel.rooms[obj.roomCode]) === null || _a === void 0 ? void 0 : _a.name;
119
+ const roomName = obj.roomType ? obj.roomType : (_c = (_b = hotel === null || hotel === void 0 ? void 0 : hotel.rooms) === null || _b === void 0 ? void 0 : _b[obj.roomCode]) === null || _c === void 0 ? void 0 : _c.name;
119
120
  return (react_1.default.createElement(react_1.default.Fragment, null,
120
121
  react_1.default.createElement("div", { className: "reservation-row" },
121
122
  react_1.default.createElement("div", { className: "room-details +is-open " },
@@ -137,8 +138,8 @@ function ReservationRow(props) {
137
138
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small },
138
139
  react_1.default.createElement(react_1.default.Fragment, null, hotel === null || hotel === void 0 ? void 0 :
139
140
  hotel.name,
140
- " - ", (_b = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _b === void 0 ? void 0 :
141
- _b.line1)))),
141
+ " - ", (_d = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _d === void 0 ? void 0 :
142
+ _d.line1)))),
142
143
  react_1.default.createElement("div", { className: "" },
143
144
  react_1.default.createElement("ul", null,
144
145
  react_1.default.createElement("li", { className: "u-flex justify-content-start u-marg-bottom--light" },
@@ -165,10 +166,10 @@ function ReservationRow(props) {
165
166
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.CreditCard, color: Color_1.Color.Grey }),
166
167
  react_1.default.createElement("div", { className: "u-marg-left--light" },
167
168
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, (obj === null || obj === void 0 ? void 0 : obj.paymentMethod) === core_1.EBookingPaymentMethod.Planpay ? (t(Translation_1.Translation.Step.Confirmation.PaidWithPlanpay)) : (react_1.default.createElement(react_1.default.Fragment, null,
168
- "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 ", (_d = (_c = obj.paymentCard) === null || _c === void 0 ? void 0 : _c.last4) !== null && _d !== void 0 ? _d : 'N/A',
169
+ "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 ", (_f = (_e = obj.paymentCard) === null || _e === void 0 ? void 0 : _e.last4) !== null && _f !== void 0 ? _f : 'N/A',
169
170
  ' ',
170
171
  react_1.default.createElement("span", { style: { color: Color_1.Color.DarkGrey } },
171
- "(", (_f = (_e = obj.paymentCard) === null || _e === void 0 ? void 0 : _e.type) !== null && _f !== void 0 ? _f : 'N/A',
172
+ "(", (_h = (_g = obj.paymentCard) === null || _g === void 0 ? void 0 : _g.type) !== null && _h !== void 0 ? _h : 'N/A',
172
173
  ")")))))))))),
173
174
  react_1.default.createElement("div", { className: "reservation-row--actions" },
174
175
  react_1.default.createElement("div", { className: "u-flex justify-content-start align-items-center" },
@@ -180,10 +181,10 @@ function ReservationRow(props) {
180
181
  react_1.default.createElement("div", { className: "u-marg-left" },
181
182
  !isCancelled ? (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Navy },
182
183
  react_1.default.createElement("strong", null,
183
- react_1.default.createElement(Currency_1.default, null, (_g = obj.total.beforeFees) !== null && _g !== void 0 ? _g : obj.total.afterTax)))) : (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Navy },
184
+ react_1.default.createElement(Currency_1.default, null, (_j = obj.total.beforeFees) !== null && _j !== void 0 ? _j : obj.total.afterTax)))) : (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Navy },
184
185
  react_1.default.createElement("del", null,
185
186
  react_1.default.createElement("strong", { className: "u-flex u-flex-direction-row align-items-center" },
186
- react_1.default.createElement(Currency_1.default, null, (_h = obj.total.beforeFees) !== null && _h !== void 0 ? _h : obj.total.afterTax))))),
187
+ react_1.default.createElement(Currency_1.default, null, (_k = obj.total.beforeFees) !== null && _k !== void 0 ? _k : obj.total.afterTax))))),
187
188
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right },
188
189
  react_1.default.createElement(TaxInclusionNotice_1.TaxInclusionNotice, null)))))),
189
190
  react_1.default.createElement(ReservationRowModal_1.default, { open: isModalOpen, onClose: closeModalOnClick, reservation: props.reservation, images: images }),
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationRow.js","sourceRoot":"/","sources":["src/pages/findReservation/ReservationRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent, useGuestDateFormat } from '@frontend/hooks';\nimport { EBookingPaymentMethod, ReservationDTO } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport ConfirmationModal from '@/components/generic/modal/ConfirmationModal';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { CancelledBookingEvent } from '@/events/views/CancelledBookingEvent';\nimport ReservationRowModal from '@/pages/findReservation/ReservationRowModal';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\n\ninterface ReservationRowProps {\n reservation: ReservationDTO;\n onCancelled?: () => void;\n}\n\nexport default function ReservationRow(props: ReservationRowProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const { formatReservationDate } = useGuestDateFormat();\n const { raise } = useEvent();\n\n const obj = props.reservation;\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isCancelled, setIsCancelled] = useState(obj.status === 'Cancelled');\n const [isCancelLoading, setIsCancelLoading] = useState(false);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n let adultsAndChildren = StringHelper.pluralWithDictAndCount(obj.guestCounts.adults, Translation.Step.Date.Adult, t);\n\n if (obj.guestCounts.children) {\n adultsAndChildren += ', ' + StringHelper.pluralWithDictAndCount(obj.guestCounts.children, Translation.Step.Date.Child, t);\n }\n\n const nightKeys = Object.keys(obj.nights);\n\n const openModalOnClick = () => {\n setIsModalOpen(true);\n };\n const closeModalOnClick = () => {\n setIsModalOpen(false);\n };\n const confirmModalOnClick = () => {\n setConfirmOpen(true);\n };\n const onConfirmHandler = () => {\n cancelRow();\n setConfirmOpen(false);\n };\n const openConfirmationHandler = () => {\n setConfirmOpen(false);\n };\n\n const firstNight = dayjs(nightKeys[0]);\n const lastNight = dayjs(nightKeys[nightKeys.length - 1]).add(1, 'day');\n\n let images: string[] = obj.images;\n\n if ((!images || !images.length) && hotel?.rooms[obj.roomCode]) {\n images = hotel?.rooms[obj.roomCode].images;\n }\n\n const cancelRow = () => {\n setIsCancelLoading(true);\n\n API.Reservation.cancelReservation(obj.reservationNumber, obj.guest.email, hotel?.hotelID as string)\n .then(() => {\n DataLayer.instance.sendCancellation(obj);\n raise(new CancelledBookingEvent(obj.reservationNumber, obj.guest.email));\n\n setIsCancelled(true);\n setIsCancelLoading(false);\n\n if (props.onCancelled) {\n props.onCancelled();\n }\n })\n .catch((ex) => {\n ErrorHandler.add({\n title: t(Translation.Step.Thanks.Errors.CancelFailed),\n message: ex.Message,\n });\n });\n };\n\n const roomName = obj.roomType ? obj.roomType : hotel?.rooms[obj.roomCode]?.name;\n\n return (\n <>\n <div className=\"reservation-row\">\n <div className=\"room-details +is-open \">\n <div className=\"room-details--image\">\n <ImageGallerySlider images={images} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@m-\">\n <div className=\"u-marg-bottom\">\n <div className=\"room-details--content-title u-marg-bottom--light\">\n {!isCancelled ? (\n <Text>\n <strong>{roomName}</strong>\n <small style={{ color: Color.Grey }}> #{obj.reservationNumber}</small>\n </Text>\n ) : (\n <Text>\n <del>\n <strong>{roomName}</strong>\n </del>\n <small style={{ color: Color.Alert }}> {t(Translation.Misc.Cancelled)}</small>\n </Text>\n )}\n </div>\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <>\n {hotel?.name} - {hotel?.address?.line1}\n </>\n </Text>\n </div>\n </div>\n\n <div className=\"\">\n <ul>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon color={Color.Grey} icon={IconType.Person} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>\n {obj.guest.firstName} {obj.guest.lastName} <span style={{ color: Color.DarkGrey }}>- {adultsAndChildren}</span>\n </Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon icon={IconType.Email} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{obj.guest.email}</Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{formatReservationDate(firstNight)}</Text>\n <Text type={TextType.Small}>{formatReservationDate(lastNight)}</Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start\">\n <Icon icon={IconType.CreditCard} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>\n {obj?.paymentMethod === EBookingPaymentMethod.Planpay ? (\n t(Translation.Step.Confirmation.PaidWithPlanpay)\n ) : (\n <>\n •••• •••• •••• {obj.paymentCard?.last4 ?? 'N/A'}{' '}\n <span style={{ color: Color.DarkGrey }}>({obj.paymentCard?.type ?? 'N/A'})</span>\n </>\n )}\n </Text>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div className=\"reservation-row--actions\">\n <div className=\"u-flex justify-content-start align-items-center\">\n <div className=\"u-marg-right--heavy u-inline-flex\">\n <BEButton icon={IconType.ArrowRight2} isText primary size=\"tiny\" iconPosition=\"right\" onClick={openModalOnClick}>\n {t(Translation.Step.Room.RoomInfo.MoreDetails)}\n </BEButton>\n </div>\n <div className=\"u-inline-flex\">\n {hotel?.preventCancellation !== true && (\n <BEButton\n isText\n size=\"tiny\"\n isLoading={isCancelLoading}\n disabled={!obj.isCancelable || isCancelled}\n textColor={Color.DarkGrey}\n onClick={confirmModalOnClick}\n >\n {t(Translation.Misc.Cancel)}\n </BEButton>\n )}\n </div>\n </div>\n <div className=\"u-flex u-flex-direction-row align-items-center\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Misc.Total)}\n </Text>\n <div className=\"u-marg-left\">\n {!isCancelled ? (\n <Text color={Color.Navy}>\n <strong>\n <Currency>{obj.total.beforeFees ?? obj.total.afterTax}</Currency>\n </strong>\n </Text>\n ) : (\n <Text color={Color.Navy}>\n <del>\n <strong className=\"u-flex u-flex-direction-row align-items-center\">\n <Currency>{obj.total.beforeFees ?? obj.total.afterTax}</Currency>\n </strong>\n </del>\n </Text>\n )}\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n </div>\n </div>\n <ReservationRowModal open={isModalOpen} onClose={closeModalOnClick} reservation={props.reservation} images={images} />\n <ConfirmationModal open={confirmOpen} message=\"Are you sure you want to cancel this reservation?\" onConfirm={onConfirmHandler} onClose={openConfirmationHandler} />\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"ReservationRow.js","sourceRoot":"/","sources":["src/pages/findReservation/ReservationRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent, useGuestDateFormat } from '@frontend/hooks';\nimport { EBookingPaymentMethod, ReservationDTO } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport ConfirmationModal from '@/components/generic/modal/ConfirmationModal';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { CancelledBookingEvent } from '@/events/views/CancelledBookingEvent';\nimport ReservationRowModal from '@/pages/findReservation/ReservationRowModal';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\n\ninterface ReservationRowProps {\n reservation: ReservationDTO;\n onCancelled?: () => void;\n}\n\nexport default function ReservationRow(props: ReservationRowProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const { formatReservationDate } = useGuestDateFormat();\n const { raise } = useEvent();\n\n const obj = props.reservation;\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isCancelled, setIsCancelled] = useState(obj.status === 'Cancelled');\n const [isCancelLoading, setIsCancelLoading] = useState(false);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n let adultsAndChildren = StringHelper.pluralWithDictAndCount(obj.guestCounts.adults, Translation.Step.Date.Adult, t);\n\n if (obj.guestCounts.children) {\n adultsAndChildren += ', ' + StringHelper.pluralWithDictAndCount(obj.guestCounts.children, Translation.Step.Date.Child, t);\n }\n\n const nightKeys = Object.keys(obj.nights);\n\n const openModalOnClick = () => {\n setIsModalOpen(true);\n };\n const closeModalOnClick = () => {\n setIsModalOpen(false);\n };\n const confirmModalOnClick = () => {\n setConfirmOpen(true);\n };\n const onConfirmHandler = () => {\n cancelRow();\n setConfirmOpen(false);\n };\n const openConfirmationHandler = () => {\n setConfirmOpen(false);\n };\n\n const firstNight = dayjs(nightKeys[0]);\n const lastNight = dayjs(nightKeys[nightKeys.length - 1]).add(1, 'day');\n\n let images: string[] = obj.images;\n\n // Prevent Uncaught TypeError when refreshing reservation result\n if ((!images || !images.length) && hotel?.rooms?.[obj.roomCode]) {\n images = hotel?.rooms[obj.roomCode].images;\n }\n\n const cancelRow = () => {\n setIsCancelLoading(true);\n\n API.Reservation.cancelReservation(obj.reservationNumber, obj.guest.email, hotel?.hotelID as string)\n .then(() => {\n DataLayer.instance.sendCancellation(obj);\n raise(new CancelledBookingEvent(obj.reservationNumber, obj.guest.email));\n\n setIsCancelled(true);\n setIsCancelLoading(false);\n\n if (props.onCancelled) {\n props.onCancelled();\n }\n })\n .catch((ex) => {\n ErrorHandler.add({\n title: t(Translation.Step.Thanks.Errors.CancelFailed),\n message: ex.Message,\n });\n });\n };\n\n const roomName = obj.roomType ? obj.roomType : hotel?.rooms?.[obj.roomCode]?.name;\n\n return (\n <>\n <div className=\"reservation-row\">\n <div className=\"room-details +is-open \">\n <div className=\"room-details--image\">\n <ImageGallerySlider images={images} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@m-\">\n <div className=\"u-marg-bottom\">\n <div className=\"room-details--content-title u-marg-bottom--light\">\n {!isCancelled ? (\n <Text>\n <strong>{roomName}</strong>\n <small style={{ color: Color.Grey }}> #{obj.reservationNumber}</small>\n </Text>\n ) : (\n <Text>\n <del>\n <strong>{roomName}</strong>\n </del>\n <small style={{ color: Color.Alert }}> {t(Translation.Misc.Cancelled)}</small>\n </Text>\n )}\n </div>\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <>\n {hotel?.name} - {hotel?.address?.line1}\n </>\n </Text>\n </div>\n </div>\n\n <div className=\"\">\n <ul>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon color={Color.Grey} icon={IconType.Person} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>\n {obj.guest.firstName} {obj.guest.lastName} <span style={{ color: Color.DarkGrey }}>- {adultsAndChildren}</span>\n </Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon icon={IconType.Email} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{obj.guest.email}</Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start u-marg-bottom--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{formatReservationDate(firstNight)}</Text>\n <Text type={TextType.Small}>{formatReservationDate(lastNight)}</Text>\n </div>\n </li>\n <li className=\"u-flex justify-content-start\">\n <Icon icon={IconType.CreditCard} color={Color.Grey} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>\n {obj?.paymentMethod === EBookingPaymentMethod.Planpay ? (\n t(Translation.Step.Confirmation.PaidWithPlanpay)\n ) : (\n <>\n •••• •••• •••• {obj.paymentCard?.last4 ?? 'N/A'}{' '}\n <span style={{ color: Color.DarkGrey }}>({obj.paymentCard?.type ?? 'N/A'})</span>\n </>\n )}\n </Text>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div className=\"reservation-row--actions\">\n <div className=\"u-flex justify-content-start align-items-center\">\n <div className=\"u-marg-right--heavy u-inline-flex\">\n <BEButton icon={IconType.ArrowRight2} isText primary size=\"tiny\" iconPosition=\"right\" onClick={openModalOnClick}>\n {t(Translation.Step.Room.RoomInfo.MoreDetails)}\n </BEButton>\n </div>\n <div className=\"u-inline-flex\">\n {hotel?.preventCancellation !== true && (\n <BEButton\n isText\n size=\"tiny\"\n isLoading={isCancelLoading}\n disabled={!obj.isCancelable || isCancelled}\n textColor={Color.DarkGrey}\n onClick={confirmModalOnClick}\n >\n {t(Translation.Misc.Cancel)}\n </BEButton>\n )}\n </div>\n </div>\n <div className=\"u-flex u-flex-direction-row align-items-center\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Misc.Total)}\n </Text>\n <div className=\"u-marg-left\">\n {!isCancelled ? (\n <Text color={Color.Navy}>\n <strong>\n <Currency>{obj.total.beforeFees ?? obj.total.afterTax}</Currency>\n </strong>\n </Text>\n ) : (\n <Text color={Color.Navy}>\n <del>\n <strong className=\"u-flex u-flex-direction-row align-items-center\">\n <Currency>{obj.total.beforeFees ?? obj.total.afterTax}</Currency>\n </strong>\n </del>\n </Text>\n )}\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n </div>\n </div>\n <ReservationRowModal open={isModalOpen} onClose={closeModalOnClick} reservation={props.reservation} images={images} />\n <ConfirmationModal open={confirmOpen} message=\"Are you sure you want to cancel this reservation?\" onConfirm={onConfirmHandler} onClose={openConfirmationHandler} />\n </>\n );\n}\n"]}