@roomstay/frontend 2.7.0 → 2.9.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 (165) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/449.bundle.js +1 -1
  6. package/dist/537.bundle.js +1 -1
  7. package/dist/596.bundle.js +1 -0
  8. package/dist/625.bundle.js +1 -1
  9. package/dist/686.bundle.js +1 -1
  10. package/dist/836.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -1
  12. package/dist/main.bundle.js +1 -1
  13. package/dist/src/api/AvailabilityAPI.d.ts +21 -4
  14. package/dist/src/api/AvailabilityAPI.js +84 -0
  15. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  16. package/dist/src/api/BaseAPI.d.ts +1 -0
  17. package/dist/src/api/BaseAPI.js +1 -0
  18. package/dist/src/api/BaseAPI.js.map +1 -1
  19. package/dist/src/components/generic/Alert.d.ts +13 -5
  20. package/dist/src/components/generic/Alert.js +7 -1
  21. package/dist/src/components/generic/Alert.js.map +1 -1
  22. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.d.ts +11 -0
  23. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js +24 -0
  24. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js.map +1 -0
  25. package/dist/src/components/generic/Currency.js +5 -30
  26. package/dist/src/components/generic/Currency.js.map +1 -1
  27. package/dist/src/components/generic/RecentSearchesCard.js +4 -2
  28. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  29. package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
  30. package/dist/src/components/generic/date/DatePicker.js +2 -1
  31. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  32. package/dist/src/components/generic/map/BEHotelLocationMapBlock.d.ts +4 -0
  33. package/dist/src/components/generic/map/{HotelLocationMap.js → BEHotelLocationMapBlock.js} +10 -3
  34. package/dist/src/components/generic/map/BEHotelLocationMapBlock.js.map +1 -0
  35. package/dist/src/components/reservation/ReservationItem.js +3 -2
  36. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  37. package/dist/src/components/steps/DaysSelectedInformer.js +6 -4
  38. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  39. package/dist/src/components/steps/confirmation/RoomContactDetails.js +32 -24
  40. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  41. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +8 -6
  42. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  43. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +16 -0
  44. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  45. package/dist/src/components/steps/date/BEPeoplePickerBlock.d.ts +4 -0
  46. package/dist/src/components/steps/date/{PeoplePicker.js → BEPeoplePickerBlock.js} +10 -3
  47. package/dist/src/components/steps/date/BEPeoplePickerBlock.js.map +1 -0
  48. package/dist/src/components/steps/date/StepOneDateRange.js +5 -3
  49. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  50. package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
  51. package/dist/src/components/steps/date/StepOneDateRangePicker.js +3 -3
  52. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  53. package/dist/src/components/steps/hotel/HotelCard.js +1 -7
  54. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  55. package/dist/src/components/steps/hotel/HotelCardModal.js +1 -1
  56. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  57. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +65 -59
  58. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  59. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -3
  60. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  61. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +4 -3
  62. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  63. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.d.ts +17 -0
  64. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js +117 -0
  65. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js.map +1 -0
  66. package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +0 -1
  67. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +9 -2
  68. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  69. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +0 -1
  70. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -4
  71. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  72. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +0 -1
  73. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +2 -11
  74. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  75. package/dist/src/components/summary/BEMobileSummary.js +3 -2
  76. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  77. package/dist/src/components/summary/BEMobileSummaryModal.js +12 -5
  78. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  79. package/dist/src/components/summary/BESummary.js +17 -4
  80. package/dist/src/components/summary/BESummary.js.map +1 -1
  81. package/dist/src/components/summary/BESummaryAddonRow.js +2 -1
  82. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  83. package/dist/src/components/summary/BESummaryRoomRow.js +3 -2
  84. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  85. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -1
  86. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  87. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -4
  88. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  89. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +14 -5
  90. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
  91. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  92. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -1
  93. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  94. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +39 -25
  95. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  96. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  97. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  98. package/dist/src/hooks/AutoFocusOnSelect.d.ts +11 -1
  99. package/dist/src/hooks/AutoFocusOnSelect.js +7 -7
  100. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  101. package/dist/src/hooks/Currency.d.ts +25 -1
  102. package/dist/src/hooks/Currency.js +50 -5
  103. package/dist/src/hooks/Currency.js.map +1 -1
  104. package/dist/src/hooks/index.d.ts +1 -0
  105. package/dist/src/hooks/index.js +1 -0
  106. package/dist/src/hooks/index.js.map +1 -1
  107. package/dist/src/hooks/useAreaAvailability.d.ts +10 -1
  108. package/dist/src/hooks/useAreaAvailability.js +67 -30
  109. package/dist/src/hooks/useAreaAvailability.js.map +1 -1
  110. package/dist/src/hooks/useAuxiliaryFilters.d.ts +8 -0
  111. package/dist/src/hooks/useAuxiliaryFilters.js +55 -0
  112. package/dist/src/hooks/useAuxiliaryFilters.js.map +1 -0
  113. package/dist/src/hooks/useGuestDateFormat.d.ts +11 -0
  114. package/dist/src/hooks/useGuestDateFormat.js +22 -0
  115. package/dist/src/hooks/useGuestDateFormat.js.map +1 -0
  116. package/dist/src/index.d.ts +9 -9
  117. package/dist/src/index.js +17 -10
  118. package/dist/src/index.js.map +1 -1
  119. package/dist/src/models/Api/HotelDTO.d.ts +1 -0
  120. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  121. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  122. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  123. package/dist/src/models/BasketRow.d.ts +6 -11
  124. package/dist/src/models/BasketRow.js +4 -4
  125. package/dist/src/models/BasketRow.js.map +1 -1
  126. package/dist/src/pages/findReservation/ReservationRow.js +3 -2
  127. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  128. package/dist/src/pages/findReservation/ReservationRowModal.js +5 -4
  129. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  130. package/dist/src/pages/hotel/HotelInfo.js +3 -3
  131. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  132. package/dist/src/pages/steps/StepDate/StepDateComponent.js +15 -9
  133. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  134. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +1 -3
  135. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  136. package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +2 -0
  137. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +8 -1
  138. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  139. package/dist/src/providers/CurrencyProvider.js +1 -1
  140. package/dist/src/providers/CurrencyProvider.js.map +1 -1
  141. package/dist/src/providers/FilterProvider.d.ts +4 -0
  142. package/dist/src/providers/FilterProvider.js +12 -0
  143. package/dist/src/providers/FilterProvider.js.map +1 -1
  144. package/dist/src/providers/RoomstayThemeEngine.js +2 -0
  145. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  146. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.d.ts +13 -1
  147. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js +20 -0
  148. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js.map +1 -1
  149. package/dist/src/translations/Translation.d.ts +13 -0
  150. package/dist/src/translations/Translation.js +13 -0
  151. package/dist/src/translations/Translation.js.map +1 -1
  152. package/dist/src/translations/languages/en-gb.js +13 -0
  153. package/dist/src/translations/languages/en-gb.js.map +1 -1
  154. package/dist/src/util/CurrencyHelper.js +1 -1
  155. package/dist/src/util/CurrencyHelper.js.map +1 -1
  156. package/dist/test.bundle.js +1 -1
  157. package/dist/tests/offline/entry/config/hotelSpecDefault.js +2 -2
  158. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  159. package/dist/vendors.bundle.js +1 -1
  160. package/package.json +2 -2
  161. package/dist/422.bundle.js +0 -1
  162. package/dist/src/components/generic/map/HotelLocationMap.d.ts +0 -2
  163. package/dist/src/components/generic/map/HotelLocationMap.js.map +0 -1
  164. package/dist/src/components/steps/date/PeoplePicker.d.ts +0 -2
  165. package/dist/src/components/steps/date/PeoplePicker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RoomRates.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRates.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport MembersOnlyRow from '@/components/steps/room/roomDetails/roomRates/MembersOnlyRow';\nimport RoomRateRow from '@/components/steps/room/roomDetails/roomRates/RoomRateRow';\nimport { InlineRoomMiniEngineConfig } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateReadMoreVersionFeature from '@/providers/feature/RoomRateReadMoreVersionFeature';\nimport RoomSortProvider from '@/providers/RoomSortProvider';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport ReadMoreRoomRateRow from './ReadMoreRoomRateRow';\nimport { RoomRateListPromotion } from './RoomRateListPromotion/RoomRateListPromotion';\n\nexport interface RoomRatesProps extends Pick<InlineRoomMiniEngineConfig, 'policy' | 'priceDescription'> {\n roomCode: string;\n rates: RoomRate[];\n\n featuredRates?: RoomRate[];\n\n classNames?: string;\n\n hideMemberOnlyRow?: boolean;\n\n // Inline Booking Widget overrides\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n isCardLayout?: boolean;\n bookNowButtonDisabledReason?: string;\n}\n\nexport default function RoomRates(props: RoomRatesProps) {\n const { t } = useTranslation();\n const [showingMoreOpen, setShowingMoreOpen] = useState(false);\n\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const { rates, isCardLayout } = props;\n\n const numOfRatesToShowFirst = beContext.screenSize <= ScreenSize.Medium ? 2 : 3;\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.roomCode) {\n setShowingMoreOpen(true);\n }\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n DataLayer.instance.sendRoomImpressions();\n }, [showingMoreOpen]);\n\n return useMemo(() => {\n // Use currentRoomRateSort if defined, otherwise fallback to currentRoomSort\n const sortBy = beContext.currentRoomRateSort ?? beContext.currentRoomSort;\n const featuredRates = props.featuredRates?.filter((rate) => !!rate);\n const hasFeaturedRates = !!featuredRates && featuredRates.length > 0;\n\n let sortedRates: RoomRate[];\n\n if (rates.length !== 0) {\n sortedRates = rates.sort(RoomSortProvider.getSortByFunction(sortBy));\n }\n\n // Need two sorts because of MOD\n sortedRates = rates.sort((a, b) => {\n if (a.isMemberOnly) {\n return -1;\n } else if (b.isMemberOnly) {\n return 1;\n } else {\n return 0;\n }\n });\n\n const showMoreOnClick = () => {\n setShowingMoreOpen(true);\n };\n\n const itemsToRender = [];\n\n const renderRoomRateRow = (rate: RoomRate, isPromo = false) => {\n if (RoomRateReadMoreVersionFeature.isActive()) {\n return (\n <ReadMoreRoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n />\n );\n }\n\n return (\n <RoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n isCardLayout={isCardLayout}\n policy={props.policy}\n priceDescription={props.priceDescription}\n bookNowButtonDisabledReason={props.bookNowButtonDisabledReason}\n />\n );\n };\n\n const maxRows = hasFeaturedRates && !showingMoreOpen ? featuredRates.length : numOfRatesToShowFirst;\n let rowsLeftToOpen = 0;\n\n if (featuredRates && featuredRates.length) {\n featuredRates.sort(RoomSortProvider.getSortByFunction(sortBy));\n // First we add Featured Rates to the top of the list - no limits there\n featuredRates.forEach((row) => {\n if (row) {\n itemsToRender.push(renderRoomRateRow(row, true));\n }\n });\n }\n\n if (basketContext.loadedPromotion) {\n itemsToRender.push(<RoomRateListPromotion promotion={basketContext.loadedPromotion} />);\n }\n\n // Then we add the remaining rates to the render list - stop adding if we hit `maxRows`\n sortedRates.forEach((rate: RoomRate) => {\n if (isCardLayout || itemsToRender.length < maxRows || showingMoreOpen) {\n itemsToRender.push(renderRoomRateRow(rate));\n } else {\n rowsLeftToOpen++;\n }\n });\n\n // Then we do a tricky check to see if MOD intent should be displayed\n if (!isCardLayout && (!hasFeaturedRates || showingMoreOpen)) {\n if (!props.hideMemberOnlyRow && !!hotel?.memberOnlyPromoCode) {\n if (hotel?.memberOnlyRenderRateLast) {\n itemsToRender.push(<MembersOnlyRow />);\n } else {\n itemsToRender.unshift(<MembersOnlyRow />);\n }\n }\n }\n\n return (\n <div className={classNames(props.classNames)}>\n {itemsToRender.map((item: any, index: number) => {\n return <React.Fragment key={index}>{item}</React.Fragment>;\n })}\n {rowsLeftToOpen > 0 && (\n <div className=\"room-show-more\">\n <BEButton icon={IconType.ArrowDown2} iconPosition=\"right\" stopIconAnimation isText textColor={Color.Navy} onClick={showMoreOnClick}>\n {t(Translation.Step.Room.RoomInfo.Show)} {rowsLeftToOpen} {t(Translation.Step.Room.RoomInfo.MoreRates)}\n </BEButton>\n </div>\n )}\n </div>\n );\n }, [\n props.featuredRates,\n rates,\n beContext.currentRoomSort,\n beContext.currentRoomRateSort,\n showingMoreOpen,\n basketContext?.loadedPromotion,\n hotel?.memberOnlyRenderRateLast,\n props.bookNowButtonDisabledReason,\n ]);\n}\n"]}
1
+ {"version":3,"file":"RoomRates.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRates.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport MembersOnlyRow from '@/components/steps/room/roomDetails/roomRates/MembersOnlyRow';\nimport RoomRateRow from '@/components/steps/room/roomDetails/roomRates/RoomRateRow';\nimport { InlineRoomMiniEngineConfig } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateReadMoreVersionFeature from '@/providers/feature/RoomRateReadMoreVersionFeature';\nimport RoomSortProvider from '@/providers/RoomSortProvider';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport ReadMoreRoomRateRow from './ReadMoreRoomRateRow';\nimport { RoomRateListPromotion } from './RoomRateListPromotion/RoomRateListPromotion';\n\nexport interface RoomRatesProps extends Pick<InlineRoomMiniEngineConfig, 'policy' | 'priceDescription'> {\n roomCode: string;\n rates: RoomRate[];\n\n featuredRates?: RoomRate[];\n\n classNames?: string;\n\n hideMemberOnlyRow?: boolean;\n\n // Inline Booking Widget overrides\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n isCardLayout?: boolean;\n}\n\nexport default function RoomRates(props: RoomRatesProps) {\n const { t } = useTranslation();\n const [showingMoreOpen, setShowingMoreOpen] = useState(false);\n\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const { rates, isCardLayout } = props;\n\n const numOfRatesToShowFirst = beContext.screenSize <= ScreenSize.Medium ? 2 : 3;\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.roomCode) {\n setShowingMoreOpen(true);\n }\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n DataLayer.instance.sendRoomImpressions();\n }, [showingMoreOpen]);\n\n return useMemo(() => {\n // Use currentRoomRateSort if defined, otherwise fallback to currentRoomSort\n const sortBy = beContext.currentRoomRateSort ?? beContext.currentRoomSort;\n const featuredRates = props.featuredRates?.filter((rate) => !!rate);\n const hasFeaturedRates = !!featuredRates && featuredRates.length > 0;\n\n let sortedRates: RoomRate[];\n\n if (rates.length !== 0) {\n sortedRates = rates.sort(RoomSortProvider.getSortByFunction(sortBy));\n }\n\n // Need two sorts because of MOD\n sortedRates = rates.sort((a, b) => {\n if (a.isMemberOnly) {\n return -1;\n } else if (b.isMemberOnly) {\n return 1;\n } else {\n return 0;\n }\n });\n\n const showMoreOnClick = () => {\n setShowingMoreOpen(true);\n };\n\n const itemsToRender = [];\n\n const renderRoomRateRow = (rate: RoomRate, isPromo = false) => {\n if (RoomRateReadMoreVersionFeature.isActive()) {\n return (\n <ReadMoreRoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n />\n );\n }\n\n return (\n <RoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n isCardLayout={isCardLayout}\n policy={props.policy}\n priceDescription={props.priceDescription}\n />\n );\n };\n\n const maxRows = hasFeaturedRates && !showingMoreOpen ? featuredRates.length : numOfRatesToShowFirst;\n let rowsLeftToOpen = 0;\n\n if (featuredRates && featuredRates.length) {\n featuredRates.sort(RoomSortProvider.getSortByFunction(sortBy));\n // First we add Featured Rates to the top of the list - no limits there\n featuredRates.forEach((row) => {\n if (row) {\n itemsToRender.push(renderRoomRateRow(row, true));\n }\n });\n }\n\n if (basketContext.loadedPromotion) {\n itemsToRender.push(<RoomRateListPromotion promotion={basketContext.loadedPromotion} />);\n }\n\n // Then we add the remaining rates to the render list - stop adding if we hit `maxRows`\n sortedRates.forEach((rate: RoomRate) => {\n if (isCardLayout || itemsToRender.length < maxRows || showingMoreOpen) {\n itemsToRender.push(renderRoomRateRow(rate));\n } else {\n rowsLeftToOpen++;\n }\n });\n\n // Then we do a tricky check to see if MOD intent should be displayed\n if (!isCardLayout && (!hasFeaturedRates || showingMoreOpen)) {\n if (!props.hideMemberOnlyRow && !!hotel?.memberOnlyPromoCode) {\n if (hotel?.memberOnlyRenderRateLast) {\n itemsToRender.push(<MembersOnlyRow />);\n } else {\n itemsToRender.unshift(<MembersOnlyRow />);\n }\n }\n }\n\n return (\n <div className={classNames(props.classNames)}>\n {itemsToRender.map((item: any, index: number) => {\n return <React.Fragment key={index}>{item}</React.Fragment>;\n })}\n {rowsLeftToOpen > 0 && (\n <div className=\"room-show-more\">\n <BEButton icon={IconType.ArrowDown2} iconPosition=\"right\" stopIconAnimation isText textColor={Color.Navy} onClick={showMoreOnClick}>\n {t(Translation.Step.Room.RoomInfo.Show)} {rowsLeftToOpen} {t(Translation.Step.Room.RoomInfo.MoreRates)}\n </BEButton>\n </div>\n )}\n </div>\n );\n }, [props.featuredRates, rates, beContext.currentRoomSort, beContext.currentRoomRateSort, showingMoreOpen, basketContext?.loadedPromotion, hotel?.memberOnlyRenderRateLast]);\n}\n"]}
@@ -61,6 +61,7 @@ function BEMobileSummary() {
61
61
  const { hotel } = (0, hooks_1.useCurrentHotel)();
62
62
  const [modalOpen, setModalOpen] = (0, react_1.useState)(false);
63
63
  const { showChildren } = (0, useSearchScopeHook_1.useSearchScopeHook)();
64
+ const { formatGuestDate } = (0, hooks_1.useGuestDateFormat)();
64
65
  if (screenSize <= ScreenSize_1.default.Medium) {
65
66
  const openModal = () => {
66
67
  setModalOpen(true);
@@ -73,11 +74,11 @@ function BEMobileSummary() {
73
74
  react_1.default.createElement("div", { className: "be-mobile-summary-select-date-header" },
74
75
  react_1.default.createElement("div", { className: "u-flex u-flex-flex-start" },
75
76
  react_1.default.createElement(Text_1.default, { className: "select-date-header-title" },
76
- react_1.default.createElement("span", Object.assign({}, (basketContext.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Arrival))),
77
+ react_1.default.createElement("span", Object.assign({}, (basketContext.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.startDate ? formatGuestDate(basketContext.startDate) : t(Translation_1.Translation.Step.Date.Arrival))),
77
78
  react_1.default.createElement("span", { className: "u-marg-left-right--light" },
78
79
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, size: "18px", color: Color_1.Color.DarkGrey })),
79
80
  react_1.default.createElement(Text_1.default, { className: "select-date-header-title" },
80
- react_1.default.createElement("span", Object.assign({}, (basketContext.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Departure)))),
81
+ react_1.default.createElement("span", Object.assign({}, (basketContext.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.endDate ? formatGuestDate(basketContext.endDate) : t(Translation_1.Translation.Step.Date.Departure)))),
81
82
  react_1.default.createElement("div", { style: {
82
83
  flex: 0,
83
84
  display: 'flex',
@@ -1 +1 @@
1
- {"version":3,"file":"BEMobileSummary.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,kCAkEC;AAnFD,iDAAgG;AAChG,2CAAkD;AAClD,+CAAoD;AACpD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,uEAAgE;AAChE,qEAA2D;AAC3D,wGAAgF;AAChF,qGAA6E;AAC7E,mEAAgE;AAChE,+EAAuD;AACvD,wCAAqC;AACrC,mEAA2C;AAC3C,wDAAiD;AAEjD,SAAwB,eAAe;;IACnC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACxD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,uCAAkB,GAAE,CAAC;IAE9C,IAAI,UAAU,IAAI,oBAAU,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,EAAE;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,OAAO,CACH;YACI,uCAAK,SAAS,EAAC,2DAA2D,EAAC,OAAO,EAAE,SAAS;gBACzF,uCAAK,SAAS,EAAC,sCAAsC;oBACjD,uCAAK,SAAS,EAAC,0BAA0B;wBACrC,8BAAC,cAAI,IAAC,SAAS,EAAC,0BAA0B;4BACtC,wDAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC5F,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAClG,CACJ;wBACP,wCAAM,SAAS,EAAC,0BAA0B;4BACtC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE;wBACP,8BAAC,cAAI,IAAC,SAAS,EAAC,0BAA0B;4BACtC,wDAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1F,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAChG,CACJ,CACL;oBAEN,uCACI,KAAK,EAAE;4BACH,IAAI,EAAE,CAAC;4BACP,OAAO,EAAE,MAAM;4BACf,aAAa,EAAE,KAAK;yBACvB;wBAED,8BAAC,cAAI,IAAC,IAAI,QAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,yBAAS,CAAC,KAAK,EAAE,SAAS,EAAC,0BAA0B,IAChF,WAAW,KAAK,kBAAQ,CAAC,CAAC,CAAC,8BAAC,8BAAoB,IAAC,QAAQ,SAAG,CAAC,CAAC,CAAC,8BAAC,kBAAQ,QAAE,aAAa,CAAC,aAAa,EAAE,CAAY,CACjH;wBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CAClE,CACJ;gBACN,uCAAK,SAAS,EAAC,sCAAsC;oBACjD,uCAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;wBACnB,8BAAC,cAAI,IAAC,SAAS,EAAC,6BAA6B;4BACxC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC;;4BACrC,YAAY,CAAC,CAAC,CAAC;gCAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC;0CAAW,CAAC,CAAC,CAAC,IAAI;4BAC3E,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,0CAAE,cAAc,EAAC,CAAC,CAAC;gCAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC;0CAAW,CAAC,CAAC,CAAC,IAAI;4BACvG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAClC,CACL;oBACN,8BAAC,cAAI,IAAC,SAAS,EAAC,6BAA6B,qBAAsB,CACjE,CACJ;YACN,8BAAC,8BAAoB,IAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAI,CACjE,CACN,CAAC;IACN,CAAC;IACD,OAAO,6DAAK,CAAC;AACjB,CAAC","sourcesContent":["import { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepDatePricePerRoom from '@/components/steps/date/StepDatePricePerRoom';\nimport BEMobileSummaryModal from '@/components/summary/BEMobileSummaryModal';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport default function BEMobileSummary() {\n const { screenSize } = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const [modalOpen, setModalOpen] = useState(false);\n const { showChildren } = useSearchScopeHook();\n\n if (screenSize <= ScreenSize.Medium) {\n const openModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n return (\n <>\n <div className=\"be-mobile-summary row u-border-bottom u-pad u-marg-bottom\" onClick={openModal}>\n <div className=\"be-mobile-summary-select-date-header\">\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.startDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.endDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n\n <div\n style={{\n flex: 0,\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <Text bold size=\"normal\" align={TextAlign.Right} className=\"select-date-header-title\">\n {currentStep === StepDate ? <StepDatePricePerRoom isMobile /> : <Currency>{basketContext.getTotalPrice()}</Currency>}\n </Text>\n <Icon icon={IconType.Dropdown} size=\"18px\" color={Color.DarkGrey} />\n </div>\n </div>\n <div className=\"be-mobile-summary-select-date-header\">\n <div style={{ flex: 1 }}>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)},&nbsp;\n {showChildren ? <>{basketContext.getNumberOfChildren(true)},&nbsp;</> : null}\n {hotel?.childConfiguration?.supportInfants ? <>{basketContext.getNumberOfInfants(true)},&nbsp;</> : null}\n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">+ Taxes & fees</Text>\n </div>\n </div>\n <BEMobileSummaryModal isOpen={modalOpen} onClose={closeModal} />\n </>\n );\n }\n return <></>;\n}\n"]}
1
+ {"version":3,"file":"BEMobileSummary.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel, useGuestDateFormat } from '@frontend/hooks';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepDatePricePerRoom from '@/components/steps/date/StepDatePricePerRoom';\nimport BEMobileSummaryModal from '@/components/summary/BEMobileSummaryModal';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport default function BEMobileSummary() {\n const { screenSize } = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const [modalOpen, setModalOpen] = useState(false);\n const { showChildren } = useSearchScopeHook();\n const { formatGuestDate } = useGuestDateFormat();\n\n if (screenSize <= ScreenSize.Medium) {\n const openModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n return (\n <>\n <div className=\"be-mobile-summary row u-border-bottom u-pad u-marg-bottom\" onClick={openModal}>\n <div className=\"be-mobile-summary-select-date-header\">\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.startDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.startDate ? formatGuestDate(basketContext.startDate) : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.endDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.endDate ? formatGuestDate(basketContext.endDate) : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n\n <div\n style={{\n flex: 0,\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <Text bold size=\"normal\" align={TextAlign.Right} className=\"select-date-header-title\">\n {currentStep === StepDate ? <StepDatePricePerRoom isMobile /> : <Currency>{basketContext.getTotalPrice()}</Currency>}\n </Text>\n <Icon icon={IconType.Dropdown} size=\"18px\" color={Color.DarkGrey} />\n </div>\n </div>\n <div className=\"be-mobile-summary-select-date-header\">\n <div style={{ flex: 1 }}>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)},&nbsp;\n {showChildren ? <>{basketContext.getNumberOfChildren(true)},&nbsp;</> : null}\n {hotel?.childConfiguration?.supportInfants ? <>{basketContext.getNumberOfInfants(true)},&nbsp;</> : null}\n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">+ Taxes & fees</Text>\n </div>\n </div>\n <BEMobileSummaryModal isOpen={modalOpen} onClose={closeModal} />\n </>\n );\n }\n return <></>;\n}\n"]}
@@ -48,7 +48,7 @@ const Currency_1 = __importDefault(require("../generic/Currency"));
48
48
  const Headline_1 = __importDefault(require("../generic/Headline"));
49
49
  const Icon_1 = __importStar(require("../generic/Icon/Icon"));
50
50
  const LineBreak_1 = __importDefault(require("../generic/LineBreak"));
51
- const HotelLocationMap_1 = __importDefault(require("../generic/map/HotelLocationMap"));
51
+ const BEHotelLocationMapBlock_1 = __importDefault(require("../generic/map/BEHotelLocationMapBlock"));
52
52
  const SimpleModal_1 = __importDefault(require("../generic/modal/SimpleModal"));
53
53
  const Text_1 = __importStar(require("../generic/Text"));
54
54
  const ItemisedFeesListing_1 = require("../steps/common/ItemisedFeesListing/ItemisedFeesListing");
@@ -64,11 +64,14 @@ const StringHelper_1 = __importDefault(require("../../util/StringHelper"));
64
64
  const TextAlignment_1 = require("../../util/TextAlignment");
65
65
  const AddonDiscountCalculator_1 = require("../../utils/AddonDiscountCalculator");
66
66
  const GroupedCheckInOutTimes_1 = require("../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes");
67
+ const Pill_1 = __importStar(require("../generic/Pill"));
67
68
  const TaxInclusionNotice_1 = require("../generic/TaxInclusionNotice/TaxInclusionNotice");
68
69
  function BEMobileSummaryModal(props) {
69
70
  var _a, _b, _c, _d;
71
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
70
72
  const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
71
73
  const { hotel } = (0, hooks_1.useCurrentHotel)();
74
+ const { formatGuestDate } = (0, hooks_1.useGuestDateFormat)();
72
75
  const selectedBasketRows = basketContext.getAllValidRows();
73
76
  const addons = basketContext.basketAddonRows;
74
77
  const { t } = (0, react_i18next_1.useTranslation)();
@@ -117,6 +120,10 @@ function BEMobileSummaryModal(props) {
117
120
  react_1.default.createElement("div", { className: "col-8 u-flex u-flex-direction-column align-items-end" },
118
121
  react_1.default.createElement(Headline_1.default, { bold: true, size: "normal", align: TextAlignment_1.TextAlign.Right },
119
122
  react_1.default.createElement(Currency_1.default, null, totalPrice)),
123
+ hotel && ccx.currentCurrency !== (hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency) && (react_1.default.createElement("div", { className: "u-align-right rs-summary-currency-display-enhancements--mobile" },
124
+ react_1.default.createElement(Pill_1.default, { type: Pill_1.PillType.Grey },
125
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Navy, align: TextAlignment_1.TextAlign.Right, inline: true },
126
+ react_1.default.createElement(Currency_1.default, { toCurrencyCode: hotel.defaultCurrency }, basketContext.getTotalPrice()))))),
120
127
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right },
121
128
  react_1.default.createElement(TaxInclusionNotice_1.TaxInclusionNotice, null)))) },
122
129
  react_1.default.createElement(react_1.default.Fragment, null,
@@ -135,7 +142,7 @@ function BEMobileSummaryModal(props) {
135
142
  fontWeight: 'bold',
136
143
  },
137
144
  }
138
- : {})), basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Arrival))),
145
+ : {})), basketContext.startDate ? formatGuestDate(basketContext.startDate) : t(Translation_1.Translation.Step.Date.Arrival))),
139
146
  react_1.default.createElement("span", { className: "u-marg-left-right--light" },
140
147
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, size: "18px", color: Color_1.Color.DarkGrey })),
141
148
  react_1.default.createElement(Text_1.default, { className: "select-date-header-title" },
@@ -146,7 +153,7 @@ function BEMobileSummaryModal(props) {
146
153
  fontWeight: 'bold',
147
154
  },
148
155
  }
149
- : {})), basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Departure)))),
156
+ : {})), basketContext.endDate ? formatGuestDate(basketContext.endDate) : t(Translation_1.Translation.Step.Date.Departure)))),
150
157
  react_1.default.createElement(Text_1.default, { className: "select-date-header-subtitle" },
151
158
  basketContext.getNumberOfAdults(true),
152
159
  ",\u00A0",
@@ -175,8 +182,8 @@ function BEMobileSummaryModal(props) {
175
182
  }))))) : (react_1.default.createElement("div", { className: "u-marg-bottom--heavy u-marg-top--heavy" },
176
183
  react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
177
184
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body }, t(Translation_1.Translation.Step.General.YourCartIsEmpty))),
178
- react_1.default.createElement("div", { style: { height: '150px', position: 'relative' } },
179
- react_1.default.createElement(HotelLocationMap_1.default, null)),
185
+ react_1.default.createElement("div", { className: "rs-summary-hotel-location-map", style: { height: '150px', position: 'relative' } },
186
+ react_1.default.createElement(BEHotelLocationMapBlock_1.default, null)),
180
187
  react_1.default.createElement("div", { className: "u-marg-top" },
181
188
  react_1.default.createElement("div", { className: "u-marg-bottom" },
182
189
  react_1.default.createElement(Text_1.default, { bold: true }, hotel === null || hotel === void 0 ? void 0 : hotel.name)),
@@ -1 +1 @@
1
- {"version":3,"file":"BEMobileSummaryModal.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummaryModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,uCAgRC;AAtTD,iDAAmD;AACnD,2CAAsF;AACtF,+CAA+D;AAC/D,iDAA+C;AAC/C,uDAAwC;AACxC,0DAAuD;AAEvD,6EAAqD;AACrD,6EAAqD;AACrD,6EAAqD;AACrD,uEAAgE;AAChE,+EAAuD;AACvD,iGAAyE;AACzE,yFAAiE;AACjE,kEAA2D;AAC3D,2GAAwG;AACxG,8DAAsE;AACtE,+FAAuE;AACvE,gFAA6E;AAC7E,yGAAiF;AACjF,6FAAqE;AACrE,2HAAmG;AAEnG,wCAAqC;AACrC,qEAA6C;AAC7C,uEAA+C;AAC/C,wDAAiD;AACjD,6EAA0E;AAE1E,qGAAkG;AAClG,yFAAsF;AAQtF,SAAwB,oBAAoB,CAAC,KAAgC;;IACzE,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC;IAE7C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAqB,EAAE,CAAC,CAAC;IAEzE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,4HAA4H;QAC5H,MAAM,SAAS,qBAAqC,gCAAoB,CAAE,CAAC;QAC3E,SAAS,CAAC,sBAAsB,CAAC,SAAS,GAAG,CACzC,uCAAK,SAAS,EAAC,wDAAwD;YACnE,uCAAK,SAAS,EAAC,yBAAyB;gBACpC,8BAAC,yCAA+B,IAAC,QAAQ,QAAC,KAAK,EAAE,KAAK,GAAI,CACxD,CACJ,CACT,CAAC;QACF,SAAS,CAAC,UAAU,CAAC,SAAS,GAAG,8BAAC,uCAAkB,IAAC,IAAI,EAAC,QAAQ,GAAG,CAAC;QAEtE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,sBAAc,EAAC,YAAY,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzG,MAAM,YAAY,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,KAAK,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,IAAI,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,KAAK,CAAC,CAAC;IAEzE,MAAM,gBAAgB,GAAG,CAAC,GAAa,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,IAAI,CAAQ,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;;QACrB,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,4BAA4B,GAAG,GAAG,EAAE;;QACtC,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IACrD,MAAM,WAAW,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC;IAExD,OAAO,CACH,8BAAC,qBAAW,IACR,IAAI,EAAE,KAAK,CAAC,MAAM,EAClB,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EACR,uCAAK,SAAS,EAAC,wBAAwB;YACnC,uCAAK,SAAS,EAAC,OAAO;gBAClB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ;gBAC7D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM;oBAC3C,8CAAS,sBAAY,CAAC,sBAAsB,CAAC,SAAS,EAAE,yBAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAU,CACzF,CACL;YACN,uCAAK,SAAS,EAAC,sDAAsD;gBACjE,8BAAC,kBAAQ,IAAC,IAAI,QAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,yBAAS,CAAC,KAAK;oBAC/C,8BAAC,kBAAQ,QAAE,UAAU,CAAY,CAC1B;gBACX,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAS,CAAC,KAAK;oBACrE,8BAAC,uCAAkB,OAAG,CACnB,CACL,CACJ;QAGV;YACI,uCAAK,SAAS,EAAC,WAAW;gBACtB,8BAAC,+CAAsB,IACnB,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAC,sCAAsC,EACvD,YAAY,EAAC,OAAO,EACpB,aAAa,EAAE,GAAG,EAAE,CAAC,CACjB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI;wBACzC,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAU,CAC3C,CACV,EACD,cAAc,EAAE,GAAG,EAAE,CAAC,CAClB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI;wBACzC,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAU,CAC5C,CACV,EACD,UAAU,EAAE,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE,CAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,IAAI,CAAQ,GACvF;gBAEF,uCAAK,SAAS,EAAC,gEAAgE,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;oBACrG,uCAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;wBACnB,uCAAK,SAAS,EAAC,0BAA0B;4BACrC,8BAAC,cAAI,IAAC,SAAS,EAAC,0BAA0B;gCACtC,wDACQ,CAAC,aAAa,CAAC,SAAS;oCACxB,CAAC,CAAC;wCACI,KAAK,EAAE;4CACH,KAAK,EAAE,aAAK,CAAC,MAAM;4CACnB,UAAU,EAAE,MAAM;yCACrB;qCACJ;oCACH,CAAC,CAAC,EAAE,CAAC,GAER,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAClG,CACJ;4BACP,wCAAM,SAAS,EAAC,0BAA0B;gCACtC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE;4BACP,8BAAC,cAAI,IAAC,SAAS,EAAC,0BAA0B;gCACtC,wDACQ,CAAC,aAAa,CAAC,OAAO;oCACtB,CAAC,CAAC;wCACI,KAAK,EAAE;4CACH,KAAK,EAAE,aAAK,CAAC,MAAM;4CACnB,UAAU,EAAE,MAAM;yCACrB;qCACJ;oCACH,CAAC,CAAC,EAAE,CAAC,GAER,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAChG,CACJ,CACL;wBACN,8BAAC,cAAI,IAAC,SAAS,EAAC,6BAA6B;4BACxC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC;;4BACrC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC;;4BACvC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAClC,CACL;oBACN,uCAAK,SAAS,EAAC,eAAe;wBAC1B,8BAAC,uBAAI,IAAC,EAAE,EAAE,IAAA,qBAAW,GAAE,CAAC,UAAU,EAAE;4BAChC,8BAAC,kBAAQ,IAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAC,MAAM,IACtC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAChC,CACR,CACL,CACJ;gBAEL,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAC/C;oBACK,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,KAAa,EAAE,EAAE;wBACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;4BAAE,OAAO;wBAE3B,OAAO,CACH,8BAAC,0BAAgB,IACb,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAChB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAC9B,qBAAqB,EAAE,4BAA4B,GACrD,CACL,CAAC;oBACN,CAAC,CAAC;oBAED,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAClB;wBACI,8BAAC,mBAAS,IAAC,SAAS,QAAC,MAAM,SAAG;wBAE9B,uCAAK,SAAS,EAAC,YAAY;4BACvB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;gCAC7C,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAU,CACrD,CACL;wBAEL,iDAAuB,CAAC,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CACjH,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE;4BAC7B,MAAM,oBAAoB,GAAG,GAAG,EAAE;gCAC9B,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;4BACrD,CAAC,CAAC;4BAEF,OAAO,CACH,8BAAC,2BAAiB,IACd,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,EAClB,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,EAChD,iBAAiB,EAAE,iBAAiB,GACtC,CACL,CAAC;wBACN,CAAC,CACJ,CACF,CACN,CACF,CACN,CAAC,CAAC,CAAC,CACA,uCAAK,SAAS,EAAC,wCAAwC;oBACnD,uCAAK,SAAS,EAAC,sBAAsB;wBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAQ,CAC7E;oBACN,uCAAK,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;wBACjD,8BAAC,0BAAgB,OAAG,CAClB;oBACN,uCAAK,SAAS,EAAC,YAAY;wBACvB,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,cAAI,IAAC,IAAI,UAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAQ,CAC7B;wBACL,gBAAgB,CAAC,YAAwB,CAAC;wBAC1C,gBAAgB,CAAC,YAAwB,CAAC,CACzC,CACJ,CACT;gBAGA,SAAS,GAAG,CAAC,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAA,IAAI,CACvC;oBACI,uCAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAI;oBAC7E,uCAAK,SAAS,EAAC,QAAQ;wBACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;;4BAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAQ;wBAC1F,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;4BACtB,8BAAC,kBAAQ,QAAE,SAAS,CAAY,CAC7B,CACL,CACP,CACN;gBAEA,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAA,IAAI,8BAAC,yCAAmB,IAAC,IAAI,EAAE,YAAY,GAAI;gBAErE,gBAAgB;gBAEjB,uCAAK,SAAS,EAAC,wCAAwC;oBACnD,8BAAC,gCAAsB,OAAG,CACxB;gBACL,KAAK,IAAI,WAAW,IAAI,CACrB,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,uCAAK,SAAS,EAAC,wBAAwB;wBAClC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,KAAI,CAC1B;4BACI,uCAAK,SAAS,EAAC,0BAA0B;gCACrC,uCAAK,SAAS,EAAC,QAAQ;oCACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;;wCAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAQ;oCAC1F,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wCACtB,8BAAC,kBAAQ,QAAE,WAAW,CAAY,CAC/B,CACL,CACJ;4BACN,uCAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAI,CAC7E,CACN;wBACD,uCAAK,SAAS,EAAC,+CAA+C;4BAC1D,uCAAK,SAAS,EAAC,QAAQ;gCACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB;gCACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI;oCAC5B,8BAAC,kBAAQ,QAAE,WAAW,CAAY,CAC/B,CACL,CACJ,CACJ,CACJ,CACT,CACC,CACP,CACO,CACjB,CAAC;AACN,CAAC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport SimpleModal from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport { BESummaryLayoutOrder } from '@/components/summary/BESummary';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryPrivacyPolicy from '@/components/summary/BESummaryPrivacyPolicy';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { GroupedCheckInOutTimes } from '../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BEMobileSummaryModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n showImages?: boolean;\n}\n\nexport default function BEMobileSummaryModal(props: BEMobileSummaryModalProps) {\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const [mobileLayout, setMobileLayout] = useState<OrderableReactList>({});\n\n useEffect(() => {\n // We do this hacky thing since Mobile summary & Desktop summary are almost identical, just blocks are presented differently\n const newLayout: typeof BESummaryLayoutOrder = { ...BESummaryLayoutOrder };\n newLayout.TransportDistanceBlock.component = (\n <div className=\"u-flex justify-content-center u-marg-top u-marg-bottom\">\n <div className=\"u-flex flex-row u-w-100\">\n <TransportDistanceFromHotelBlock vertical hotel={hotel} />\n </div>\n </div>\n );\n newLayout.PerksBlock.component = <BESummaryPerkBlock size=\"mobile\" />;\n\n setMobileLayout(newLayout);\n }, []);\n\n const { sortedComponents } = useElementSort(mobileLayout);\n\n const totalDays = basketContext.endDate ? basketContext.endDate.diff(basketContext.startDate, 'day') : 0;\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const getAddressString = (val: string[]) => {\n const line = val.filter((it) => !!it && it !== '0').join(', ');\n\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n\n return null;\n };\n\n const onCloseModalHandler = () => {\n return props.onClose ? props.onClose() : null;\n };\n\n const editOnClick = () => {\n props.onClose?.();\n };\n\n const onEditPropertyClickedHandler = () => {\n props.onClose?.();\n };\n\n const totalPrice = basketContext.getTotalPrice();\n const totalPayNow = basketContext.getTotalPayNow();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n const depositFees = basketContext.getDepositQuoteFees();\n\n return (\n <SimpleModal\n open={props.isOpen}\n title={t(Translation.Misc.Summary)}\n onClose={onCloseModalHandler}\n mobileFooter={\n <div className=\"row align-items-center\">\n <div className=\"col-4\">\n <Text type={TextType.Body}>{t(Translation.Misc.Total)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{StringHelper.pluralWithDictAndCount(totalDays, Translation.Misc.Night, t)}</strong>\n </Text>\n </div>\n <div className=\"col-8 u-flex u-flex-direction-column align-items-end\">\n <Headline bold size=\"normal\" align={TextAlign.Right}>\n <Currency>{totalPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <GroupedCheckInOutTimes\n hotel={hotel}\n wrapperClassName=\"row u-border-bottom u-pad-top-bottom\"\n colClassName=\"col-6\"\n CheckInRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n )}\n CheckOutRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n )}\n LineRender={({ line }: { line: string }) => <Text type={TextType.Small}>{line}</Text>}\n />\n\n <div className=\"row u-border-bottom u-pad be-mobile-summary-select-date-header\" style={{ width: 'unset' }}>\n <div style={{ flex: 1 }}>\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.startDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.endDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)},&nbsp;\n {basketContext.getNumberOfChildren(true)},&nbsp;\n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <div className=\"u-align-right\">\n <Link to={getStepRoom().getStepUrl()}>\n <BEButton onClick={editOnClick} size=\"tiny\">\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </Link>\n </div>\n </div>\n\n {selectedBasketRows && selectedBasketRows.length ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return (\n <BESummaryRoomRow\n row={row}\n index={index}\n key={row.getID()}\n showImages={!!props.showImages}\n onEditPropertyClicked={onEditPropertyClickedHandler}\n />\n );\n })}\n\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom--heavy u-marg-top--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Body}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {getAddressString(addressLine1 as string[])}\n {getAddressString(addressLine2 as string[])}\n </div>\n </div>\n )}\n\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel && totalPayNow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n {hotel?.rmsUseDepositQuote && (\n <>\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\n </>\n )}\n <div className=\"col-12 u-marg-top--light u-marg-bottom--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.PayNow)}\n </Text>\n <Text type={TextType.Small} bold>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n </SimpleModal>\n );\n}\n"]}
1
+ {"version":3,"file":"BEMobileSummaryModal.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummaryModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort, useGuestDateFormat } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport BEHotelLocationMapBlock from '@/components/generic/map/BEHotelLocationMapBlock';\nimport SimpleModal from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport { BESummaryLayoutOrder } from '@/components/summary/BESummary';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryPrivacyPolicy from '@/components/summary/BESummaryPrivacyPolicy';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { GroupedCheckInOutTimes } from '../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes';\nimport Pill, { PillType } from '../generic/Pill';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BEMobileSummaryModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n showImages?: boolean;\n}\n\nexport default function BEMobileSummaryModal(props: BEMobileSummaryModalProps) {\n const ccx = useContext(CompanyContext);\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n const { formatGuestDate } = useGuestDateFormat();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const [mobileLayout, setMobileLayout] = useState<OrderableReactList>({});\n\n useEffect(() => {\n // We do this hacky thing since Mobile summary & Desktop summary are almost identical, just blocks are presented differently\n const newLayout: typeof BESummaryLayoutOrder = { ...BESummaryLayoutOrder };\n newLayout.TransportDistanceBlock.component = (\n <div className=\"u-flex justify-content-center u-marg-top u-marg-bottom\">\n <div className=\"u-flex flex-row u-w-100\">\n <TransportDistanceFromHotelBlock vertical hotel={hotel} />\n </div>\n </div>\n );\n newLayout.PerksBlock.component = <BESummaryPerkBlock size=\"mobile\" />;\n\n setMobileLayout(newLayout);\n }, []);\n\n const { sortedComponents } = useElementSort(mobileLayout);\n\n const totalDays = basketContext.endDate ? basketContext.endDate.diff(basketContext.startDate, 'day') : 0;\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const getAddressString = (val: string[]) => {\n const line = val.filter((it) => !!it && it !== '0').join(', ');\n\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n\n return null;\n };\n\n const onCloseModalHandler = () => {\n return props.onClose ? props.onClose() : null;\n };\n\n const editOnClick = () => {\n props.onClose?.();\n };\n\n const onEditPropertyClickedHandler = () => {\n props.onClose?.();\n };\n\n const totalPrice = basketContext.getTotalPrice();\n const totalPayNow = basketContext.getTotalPayNow();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n const depositFees = basketContext.getDepositQuoteFees();\n\n return (\n <SimpleModal\n open={props.isOpen}\n title={t(Translation.Misc.Summary)}\n onClose={onCloseModalHandler}\n mobileFooter={\n <div className=\"row align-items-center\">\n <div className=\"col-4\">\n <Text type={TextType.Body}>{t(Translation.Misc.Total)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{StringHelper.pluralWithDictAndCount(totalDays, Translation.Misc.Night, t)}</strong>\n </Text>\n </div>\n <div className=\"col-8 u-flex u-flex-direction-column align-items-end\">\n <Headline bold size=\"normal\" align={TextAlign.Right}>\n <Currency>{totalPrice}</Currency>\n </Headline>\n {hotel && ccx.currentCurrency !== hotel?.defaultCurrency && (\n <div className=\"u-align-right rs-summary-currency-display-enhancements--mobile\">\n <Pill type={PillType.Grey}>\n <Text type={TextType.Small} color={Color.Navy} align={TextAlign.Right} inline>\n <Currency toCurrencyCode={hotel.defaultCurrency}>{basketContext.getTotalPrice()}</Currency>\n </Text>\n </Pill>\n </div>\n )}\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <GroupedCheckInOutTimes\n hotel={hotel}\n wrapperClassName=\"row u-border-bottom u-pad-top-bottom\"\n colClassName=\"col-6\"\n CheckInRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n )}\n CheckOutRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n )}\n LineRender={({ line }: { line: string }) => <Text type={TextType.Small}>{line}</Text>}\n />\n\n <div className=\"row u-border-bottom u-pad be-mobile-summary-select-date-header\" style={{ width: 'unset' }}>\n <div style={{ flex: 1 }}>\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.startDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.startDate ? formatGuestDate(basketContext.startDate) : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.endDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.endDate ? formatGuestDate(basketContext.endDate) : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)},&nbsp;\n {basketContext.getNumberOfChildren(true)},&nbsp;\n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <div className=\"u-align-right\">\n <Link to={getStepRoom().getStepUrl()}>\n <BEButton onClick={editOnClick} size=\"tiny\">\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </Link>\n </div>\n </div>\n\n {selectedBasketRows && selectedBasketRows.length ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return (\n <BESummaryRoomRow\n row={row}\n index={index}\n key={row.getID()}\n showImages={!!props.showImages}\n onEditPropertyClicked={onEditPropertyClickedHandler}\n />\n );\n })}\n\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom--heavy u-marg-top--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Body}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div className=\"rs-summary-hotel-location-map\" style={{ height: '150px', position: 'relative' }}>\n <BEHotelLocationMapBlock />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {getAddressString(addressLine1 as string[])}\n {getAddressString(addressLine2 as string[])}\n </div>\n </div>\n )}\n\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel && totalPayNow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n {hotel?.rmsUseDepositQuote && (\n <>\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\n </>\n )}\n <div className=\"col-12 u-marg-top--light u-marg-bottom--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.PayNow)}\n </Text>\n <Text type={TextType.Small} bold>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n </SimpleModal>\n );\n}\n"]}
@@ -49,7 +49,7 @@ const Currency_1 = __importDefault(require("../generic/Currency"));
49
49
  const Headline_1 = __importDefault(require("../generic/Headline"));
50
50
  const Icon_1 = require("../generic/Icon/Icon");
51
51
  const LineBreak_1 = __importDefault(require("../generic/LineBreak"));
52
- const HotelLocationMap_1 = __importDefault(require("../generic/map/HotelLocationMap"));
52
+ const BEHotelLocationMapBlock_1 = __importDefault(require("../generic/map/BEHotelLocationMapBlock"));
53
53
  const Text_1 = __importStar(require("../generic/Text"));
54
54
  const ItemisedFeesListing_1 = require("../steps/common/ItemisedFeesListing/ItemisedFeesListing");
55
55
  const BESummaryAddonRow_1 = __importDefault(require("./BESummaryAddonRow"));
@@ -61,6 +61,7 @@ const Color_1 = require("../../util/Color");
61
61
  const TextAlignment_1 = require("../../util/TextAlignment");
62
62
  const AddonDiscountCalculator_1 = require("../../utils/AddonDiscountCalculator");
63
63
  const OverlayLoader_1 = require("../generic/loader/OverlayLoader");
64
+ const Pill_1 = __importStar(require("../generic/Pill"));
64
65
  const TaxInclusionNotice_1 = require("../generic/TaxInclusionNotice/TaxInclusionNotice");
65
66
  const TransportDistanceFromHotelBlockContainer = () => {
66
67
  var _a;
@@ -143,6 +144,10 @@ function BESummary(props) {
143
144
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Misc.Total)),
144
145
  react_1.default.createElement(Headline_1.default, { bold: true, size: "large" },
145
146
  react_1.default.createElement(Currency_1.default, null, basketContext.getTotalPrice()))),
147
+ hotel.defaultCurrency && ccx.currentCurrency !== (hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency) && (react_1.default.createElement("div", { className: "u-align-right rs-summary-currency-display-enhancements" },
148
+ react_1.default.createElement(Pill_1.default, { type: Pill_1.PillType.Grey },
149
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Navy, align: TextAlignment_1.TextAlign.Right, inline: true },
150
+ react_1.default.createElement(Currency_1.default, { toCurrencyCode: hotel.defaultCurrency }, basketContext.getTotalPrice()))))),
146
151
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right },
147
152
  react_1.default.createElement(TaxInclusionNotice_1.TaxInclusionNotice, null))),
148
153
  react_1.default.createElement("div", { className: "u-marg-top--light u-flex" },
@@ -158,7 +163,15 @@ function BESummary(props) {
158
163
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right },
159
164
  react_1.default.createElement(TaxInclusionNotice_1.TaxInclusionNotice, null))));
160
165
  }
161
- }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel === null || hotel === void 0 ? void 0 : hotel.rmsUseDepositQuote, (_e = engineContext.currentStep) === null || _e === void 0 ? void 0 : _e.getStepUrl()]);
166
+ }, [
167
+ basketContext.currentBasketRows,
168
+ basketContext.isLoadingPriceQuote,
169
+ basketContext.getTotalPrice,
170
+ hotel === null || hotel === void 0 ? void 0 : hotel.rmsUseDepositQuote,
171
+ (_e = engineContext.currentStep) === null || _e === void 0 ? void 0 : _e.getStepUrl(),
172
+ ccx.currentCurrency,
173
+ hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency,
174
+ ]);
162
175
  return (react_1.default.createElement("div", { className: "booking-engine-summary" },
163
176
  react_1.default.createElement("div", { className: "u-marg-bottom" },
164
177
  react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Misc.Summary))),
@@ -190,8 +203,8 @@ function BESummary(props) {
190
203
  !!(itemisedFees === null || itemisedFees === void 0 ? void 0 : itemisedFees.length) && react_1.default.createElement(ItemisedFeesListing_1.ItemisedFeesListing, { fees: itemisedFees }))) : (react_1.default.createElement("div", { className: "u-marg-bottom rs-summary-hotel-info" },
191
204
  react_1.default.createElement("div", { className: "u-marg-bottom" },
192
205
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.General.YourCartIsEmpty))),
193
- react_1.default.createElement("div", { style: { height: '150px', position: 'relative' } },
194
- react_1.default.createElement(HotelLocationMap_1.default, null)),
206
+ react_1.default.createElement("div", { className: "rs-summary-hotel-location-map", style: { height: '150px', position: 'relative' } },
207
+ react_1.default.createElement(BEHotelLocationMapBlock_1.default, null)),
195
208
  react_1.default.createElement("div", { className: "u-marg-top" },
196
209
  react_1.default.createElement("div", { className: "u-marg-bottom rs-summary-hotel-name" },
197
210
  react_1.default.createElement(Text_1.default, { bold: true }, hotel === null || hotel === void 0 ? void 0 : hotel.name)),
@@ -1 +1 @@
1
- {"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\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>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.rmsUseDepositQuote, engineContext.currentStep?.getStepUrl()]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {/* Calculate individual addon discounts using AddonDiscountCalculator. */}\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport BEHotelLocationMapBlock from '@/components/generic/map/BEHotelLocationMapBlock';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport Pill, { PillType } from '../generic/Pill';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n {hotel.defaultCurrency && ccx.currentCurrency !== hotel?.defaultCurrency && (\n <div className=\"u-align-right rs-summary-currency-display-enhancements\">\n <Pill type={PillType.Grey}>\n <Text type={TextType.Small} color={Color.Navy} align={TextAlign.Right} inline>\n <Currency toCurrencyCode={hotel.defaultCurrency}>{basketContext.getTotalPrice()}</Currency>\n </Text>\n </Pill>\n </div>\n )}\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\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>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [\n basketContext.currentBasketRows,\n basketContext.isLoadingPriceQuote,\n basketContext.getTotalPrice,\n hotel?.rmsUseDepositQuote,\n engineContext.currentStep?.getStepUrl(),\n ccx.currentCurrency,\n hotel?.defaultCurrency,\n ]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {/* Calculate individual addon discounts using AddonDiscountCalculator. */}\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div className=\"rs-summary-hotel-location-map\" style={{ height: '150px', position: 'relative' }}>\n <BEHotelLocationMapBlock />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
@@ -54,6 +54,7 @@ function BESummaryAddonRow(props) {
54
54
  const { row } = props;
55
55
  const { t } = (0, react_i18next_1.useTranslation)();
56
56
  const { hotel } = (0, hooks_1.useCurrentHotel)();
57
+ const { formatGuestDate } = (0, hooks_1.useGuestDateFormat)();
57
58
  const addon = row.getAddon();
58
59
  const date = row.getSelectedDate();
59
60
  const priceInfo = addon.availability[date];
@@ -137,7 +138,7 @@ function BESummaryAddonRow(props) {
137
138
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey, inline: true },
138
139
  react_1.default.createElement(Currency_1.default, null, quantity * price))))));
139
140
  }),
140
- !row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', (0, dayjs_1.default)(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM')),
141
+ !row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', formatGuestDate((0, dayjs_1.default)(row.getSelectedDate(), 'YYYY-MM-DD'))),
141
142
  selectedTime && printLine('Time', selectedTime.format('h:mma')),
142
143
  Addon_1.ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&
143
144
  row.getAdultQuantity() > 0 &&
@@ -1 +1 @@
1
- {"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, EAddonPricingType, IPromoCodeDetails } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_PERSON_PER_NIGHT_TYPES } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n promoCodeDetails?: IPromoCodeDetails | null;\n remainingDiscount?: number;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n\n // Calculate discount if promo code is applied\n const discount = row.getDiscountAmount(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n const priceBeforeDiscount = row.getPriceBeforeDiscount();\n\n let displayPrice = row.getTotalPrice();\n if (discount > 0) {\n displayPrice = row.getDiscountedTotalPrice(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n }\n // we'll show the total price without fee.\n displayPrice -= totalFees;\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n ...((priceInfo.childPrice ?? 0) > 0\n ? [\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n ]\n : []),\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === EAddonPricingType.PER_STAY || pricingType === EAddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}×&nbsp;<Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', dayjs(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM'))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/* Show discount information if promo code is applied */}\n {discount > 0 && (\n <>\n {printLine(t(Translation.Misc.Rates), <Currency>{priceBeforeDiscount}</Currency>)}\n {props.promoCodeDetails?.code && printLine(t(Translation.Step.Date.PromoCode), props.promoCodeDetails.code)}\n {printLine(\n t(Translation.Misc.Discount),\n <>\n <span className=\"u-ellip-overflow\">-</span>\n <Currency>{discount}</Currency>\n </>\n )}\n </>\n )}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel, useGuestDateFormat } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, EAddonPricingType, IPromoCodeDetails } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_PERSON_PER_NIGHT_TYPES } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n promoCodeDetails?: IPromoCodeDetails | null;\n remainingDiscount?: number;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const { formatGuestDate } = useGuestDateFormat();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n\n // Calculate discount if promo code is applied\n const discount = row.getDiscountAmount(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n const priceBeforeDiscount = row.getPriceBeforeDiscount();\n\n let displayPrice = row.getTotalPrice();\n if (discount > 0) {\n displayPrice = row.getDiscountedTotalPrice(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n }\n // we'll show the total price without fee.\n displayPrice -= totalFees;\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n ...((priceInfo.childPrice ?? 0) > 0\n ? [\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n ]\n : []),\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === EAddonPricingType.PER_STAY || pricingType === EAddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}×&nbsp;<Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', formatGuestDate(dayjs(row.getSelectedDate(), 'YYYY-MM-DD')))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/* Show discount information if promo code is applied */}\n {discount > 0 && (\n <>\n {printLine(t(Translation.Misc.Rates), <Currency>{priceBeforeDiscount}</Currency>)}\n {props.promoCodeDetails?.code && printLine(t(Translation.Step.Date.PromoCode), props.promoCodeDetails.code)}\n {printLine(\n t(Translation.Misc.Discount),\n <>\n <span className=\"u-ellip-overflow\">-</span>\n <Currency>{discount}</Currency>\n </>\n )}\n </>\n )}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}