@roomstay/frontend 2.6.32 → 2.6.33
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.
- package/dist/166.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/736.bundle.js +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/927.bundle.js +1 -1
- package/dist/e2e/canChangeCurrency.spec.d.ts +1 -0
- package/dist/e2e/canChangeCurrency.spec.js +59 -0
- package/dist/e2e/canChangeCurrency.spec.js.map +1 -0
- package/dist/e2e/canCheckout.spec.d.ts +1 -0
- package/dist/e2e/canCheckout.spec.js +205 -0
- package/dist/e2e/canCheckout.spec.js.map +1 -0
- package/dist/e2e/canViewFindReservationsPage.spec.d.ts +1 -0
- package/dist/e2e/canViewFindReservationsPage.spec.js +37 -0
- package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -0
- package/dist/e2e/canViewHotelnfoPage.spec.d.ts +1 -0
- package/dist/e2e/canViewHotelnfoPage.spec.js +42 -0
- package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -0
- package/dist/e2e/frontendTestConfigs.d.ts +7 -0
- package/dist/e2e/frontendTestConfigs.js +31 -0
- package/dist/e2e/frontendTestConfigs.js.map +1 -0
- package/dist/e2e/frontendTestData.d.ts +15 -0
- package/dist/e2e/frontendTestData.js +18 -0
- package/dist/e2e/frontendTestData.js.map +1 -0
- package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -0
- package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
- package/dist/e2e/helpers/playwrightHelpers.d.ts +2 -0
- package/dist/e2e/helpers/playwrightHelpers.js +27 -0
- package/dist/e2e/helpers/playwrightHelpers.js.map +1 -0
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +1 -1
- package/dist/src/api/AvailabilityAPI.js +2 -2
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/HotelAPI.js +3 -0
- package/dist/src/api/HotelAPI.js.map +1 -1
- package/dist/src/components/generic/HtmlContentViewer.d.ts +3 -0
- package/dist/src/components/generic/HtmlContentViewer.js +41 -0
- package/dist/src/components/generic/HtmlContentViewer.js.map +1 -0
- package/dist/src/components/generic/Icon/Icon.d.ts +5 -93
- package/dist/src/components/generic/Icon/Icon.js +6 -124
- package/dist/src/components/generic/Icon/Icon.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.js +2 -2
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +2 -2
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +1 -8
- package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
- package/dist/src/components/members/SignInModal/MemberSignInModal.js +2 -2
- package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
- package/dist/src/components/steps/MinimumNightStayPill.js +2 -2
- package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +6 -6
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +3 -2
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePicker.js +5 -4
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -2
- package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +8 -6
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js +8 -6
- package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +3 -5
- package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
- package/dist/src/components/steps/room/AvailableUpgradesModal.js +3 -3
- package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
- package/dist/src/components/steps/room/LargeRoomCard.js +3 -1
- package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js +2 -2
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
- package/dist/src/components/steps/room/RoomModalPerkRow.js +3 -5
- package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +13 -2
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -6
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +11 -10
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +3 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +3 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +3 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummary.js +1 -1
- package/dist/src/components/summary/BESummary.js.map +1 -1
- package/dist/src/components/summary/BESummaryPerkBlock.js +4 -3
- package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +18 -11
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +18 -11
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +0 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +20 -12
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +5 -3
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +2 -2
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +2 -2
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
- package/dist/src/hooks/useCalendarNightStay.js +2 -2
- package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
- package/dist/src/hooks/useSignedInMember.d.ts +7 -0
- package/dist/src/hooks/{useExternalMember.js → useSignedInMember.js} +7 -5
- package/dist/src/hooks/useSignedInMember.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Api/ReservationsDTO.d.ts +1 -0
- package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +4 -1
- package/dist/src/models/BasketRow.js +15 -2
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Client/Hotel/HotelPerk.d.ts +1 -1
- package/dist/src/models/Client/Hotel/HotelPerk.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +22 -4
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +2 -2
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +9 -0
- package/dist/src/translations/Translation.js +9 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +9 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/HotelPerkHelper.d.ts +3 -0
- package/dist/src/util/HotelPerkHelper.js +46 -0
- package/dist/src/util/HotelPerkHelper.js.map +1 -0
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/dist/vendors.bundle.js.LICENSE.txt +2 -0
- package/package.json +6 -3
- package/dist/src/hooks/useExternalMember.d.ts +0 -5
- package/dist/src/hooks/useExternalMember.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BEMobileSummaryModal.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummaryModal.tsx"],"names":[],"mappings":"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","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 { 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 BasketAddonRow from '@/models/BasketAddonRow';\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';\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\">\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 originalPrice = basketContext.getTotalPrice(true);\n const totalPayNow = basketContext.getTotalPayNow();\n const totalPayLater = basketContext.getTotalPayLater();\n const totalFees = basketContext.getTotalFees();\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>{originalPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <span className=\"u-nowrap\">{t(Translation.Step.Room.RoomInfo.IncludesTaxes)}</span>\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <div className=\"row u-border-bottom u-pad-top-bottom\">\n <div className=\"col-6\">\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.After)} {hotel?.checkInTime}\n </Text>\n </div>\n <div className=\"col-6\">\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.Before)} {hotel?.checkOutTime}\n </Text>\n </div>\n </div>\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)}, \n {basketContext.getNumberOfChildren(true)}, \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>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow, index: number) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\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 {hotel?.requireDeposit && (\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.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel?.requireDeposit && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\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 } 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 { 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 BasketAddonRow from '@/models/BasketAddonRow';\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';\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 originalPrice = basketContext.getTotalPrice(true);\n const totalPayNow = basketContext.getTotalPayNow();\n const totalPayLater = basketContext.getTotalPayLater();\n const totalFees = basketContext.getTotalFees();\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>{originalPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <span className=\"u-nowrap\">{t(Translation.Step.Room.RoomInfo.IncludesTaxes)}</span>\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <div className=\"row u-border-bottom u-pad-top-bottom\">\n <div className=\"col-6\">\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.After)} {hotel?.checkInTime}\n </Text>\n </div>\n <div className=\"col-6\">\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.Before)} {hotel?.checkOutTime}\n </Text>\n </div>\n </div>\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)}, \n {basketContext.getNumberOfChildren(true)}, \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>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow, index: number) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\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 {hotel?.requireDeposit && (\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.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel?.requireDeposit && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\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"]}
|
|
@@ -51,7 +51,7 @@ const OverlayLoader_1 = require("../generic/loader/OverlayLoader");
|
|
|
51
51
|
const TransportDistanceFromHotelBlockContainer = () => {
|
|
52
52
|
var _a;
|
|
53
53
|
const overridesContext = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
|
|
54
|
-
return (react_1.default.createElement("div", { className: (0, classnames_1.default)('u-flex u-flex-column u-marg-top', {
|
|
54
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)('u-flex u-flex-column u-marg-top u-w-100', {
|
|
55
55
|
'u-flex-justify-around': Object.entries((_a = overridesContext === null || overridesContext === void 0 ? void 0 : overridesContext.transportDistances) !== null && _a !== void 0 ? _a : {}).filter(([key, value]) => !!value).length <= 2,
|
|
56
56
|
}) },
|
|
57
57
|
react_1.default.createElement(TransportDistanceFromHotelBlock_1.default, { vertical: true })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiH;AACjH,2CAAsF;AACtF,4DAAoC;AACpC,+CAAuD;AACvD,iDAA+C;AAC/C,0DAAuD;AAEvD,oEAA8D;AAC9D,6EAAqD;AACrD,6EAAqD;AACrD,yDAA0D;AAC1D,+EAAuD;AACvD,iGAAyE;AACzE,kEAA2D;AAC3D,+FAAuE;AACvE,gFAA6E;AAC7E,6FAAqE;AACrE,2HAAmG;AAGnG,uGAA+E;AAC/E,wCAAqC;AACrC,wDAAiD;AAEjD,mEAAgE;AAMhE,MAAM,wCAAwC,GAAO,GAAG,EAAE;;IACtD,MAAM,gBAAgB,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE3D,OAAO,CACH,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,iCAAiC,EAAE;YACrD,uBAAuB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,kBAAkB,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC;SACpI,CAAC;QAEF,8BAAC,yCAA+B,IAAC,QAAQ,SAAG,CAC1C,CACT,CAAC;AACN,CAAC,CAAC;AAEW,QAAA,oBAAoB,GAAuB;IACpD,sBAAsB,EAAE;QACpB,SAAS,EAAE,8BAAC,wCAAwC,OAAG;QACvD,QAAQ,EAAE,CAAC;KACd;IACD,UAAU,EAAE;QACR,SAAS,EAAE,CACP,uCAAK,SAAS,EAAC,wCAAwC,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAChF,8BAAC,uCAAkB,IAAC,IAAI,EAAC,SAAS,GAAG,CACnC,CACT;QACD,QAAQ,EAAE,EAAE;KACf;CACJ,CAAC;AAEF,SAAgB,SAAS,CAAC,KAAqB;;IAC3C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAExD,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,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,EAAE,gBAAgB,EAAE,GAAG,IAAA,sBAAc,EAAC,4BAAoB,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtF,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,EAAE;QACjC,IAAI,IAAI,EAAE;YACN,OAAO,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,IAAI,CAAQ,CAAC;SACpD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAE,QAAkB,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,UAAU,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAEpD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;IAE/C,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QAC9B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,KAAI,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,EAAE,MAAK,0BAAgB,CAAC,UAAU,EAAE,EAAE;YACpG,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,aAAa,CAAC,mBAAmB,CAAC;YAEpD,OAAO,CACH,uCAAK,SAAS,EAAC,mBAAmB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;gBAC7D,SAAS,IAAI,8BAAC,6BAAa,OAAG;gBAC9B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,KAAI,CACtB,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,uCAAK,SAAS,EAAC,QAAQ;wBACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;;4BAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAQ;wBAC3E,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;4BACtB,8BAAC,kBAAQ,QAAE,SAAS,CAAY,CAC7B,CACL,CACJ,CACT;gBACD,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,uCAAK,SAAS,EAAC,QAAQ;wBACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ;wBAC9D,8BAAC,kBAAQ,IAAC,IAAI,QAAC,IAAI,EAAC,OAAO;4BACvB,8BAAC,kBAAQ,QAAE,aAAa,CAAY,CAC7B,CACT;oBAEN,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAS,CAAC,KAAK,IACpE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC7C,CACL;gBACN,uCAAK,SAAS,EAAC,0BAA0B;oBACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAQ;oBAC/D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACtB,8BAAC,kBAAQ,QAAE,WAAW,CAAY,CAC/B,CACL,CACJ,CACT,CAAC;SACL;aAAM;YACH,OAAO,CACH,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAS,CAAC,KAAK,IAC7C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACvB;gBACP,8BAAC,kBAAQ,IAAC,IAAI,QAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,yBAAS,CAAC,KAAK;oBAC9C,8BAAC,kBAAQ,QAAE,aAAa,CAAC,aAAa,EAAE,CAAY,CAC7C;gBACX,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAS,CAAC,KAAK,IACpE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC7C,CACL,CACT,CAAC;SACL;IACL,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,aAAa,CAAC,mBAAmB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,EAAE,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAEtK,OAAO,CACH,uCAAK,SAAS,EAAC,wBAAwB;QACnC,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAY,CACrD;QAEL,eAAe,CAAC,CAAC,CAAC,CACf;YACK,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,KAAa,EAAE,EAAE;gBACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;oBAAE,OAAO;gBAC3B,OAAO,8BAAC,0BAAgB,IAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,GAAI,CAAC;YAC1G,CAAC,CAAC;YACD,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAClB;gBACI,8BAAC,mBAAS,IAAC,SAAS,QAAC,MAAM,SAAG;gBAE9B,uCAAK,SAAS,EAAC,YAAY;oBACvB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;wBAC7C,6DAA6B,CAC1B,CACL;gBAEL,MAAM,CAAC,GAAG,CAAC,CAAC,GAAmB,EAAE,EAAE;oBAChC,MAAM,oBAAoB,GAAG,GAAG,EAAE;wBAC9B,OAAO,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;oBACnD,CAAC,CAAC;oBACF,OAAO,8BAAC,2BAAiB,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,oBAAoB,GAAI,CAAC;gBAClG,CAAC,CAAC,CACH,CACN;YAEA,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,KAAI,CACtB;gBACI,uCAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAI;gBAC7E,uCAAK,SAAS,EAAC,QAAQ;oBACnB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;;wBAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAQ;oBAC3E,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACtB,8BAAC,kBAAQ,QAAE,SAAS,CAAY,CAC7B,CACL,CACP,CACN,CACF,CACN,CAAC,CAAC,CAAC,CACA,uCAAK,SAAS,EAAC,eAAe;YAC1B,uCAAK,SAAS,EAAC,eAAe;gBAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAQ,CAC9E;YACN,uCAAK,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;gBACjD,8BAAC,0BAAgB,OAAG,CAClB;YACN,uCAAK,SAAS,EAAC,YAAY;gBACvB,uCAAK,SAAS,EAAC,eAAe;oBAC1B,8BAAC,cAAI,IAAC,IAAI,UAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAQ,CAC7B;gBACL,cAAc,CAAC,YAAwB,EAAE,YAAwB,CAAC;gBAClE,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,oBAAoB,MAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAA,IAAI,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAQ,CAC1G,CACJ,CACT;QACA,gBAAgB;QAChB,GAAG,CAAC,eAAe,MAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,CAAA,IAAI,CAC/C,8BAAC,eAAK,IAAC,eAAe,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAS,CAAC,SAAS;YAClE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAQ,CACzF,CACX;QAED,8BAAC,mBAAS,IAAC,MAAM,SAAG;QAEnB,YAAY,CACX,CACT,CAAC;AACN,CAAC;AAvKD,8BAuKC","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 BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\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', {\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) => {\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\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), renderLine(line2)];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const totalFees = basketContext.getTotalFees();\n\n const totalSection = useMemo(() => {\n if (hotel?.requireDeposit && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const originalPrice = basketContext.getTotalPrice(true);\n const totalPayNow = basketContext.getTotalPayNow();\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {hotel?.requireDeposit && (\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</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>{originalPrice}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\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 {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.requireDeposit, 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>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n {/* Fees */}\n {hotel?.requireDeposit && (\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.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom\">\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\">\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 HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\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 BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\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) => {\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\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), renderLine(line2)];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const totalFees = basketContext.getTotalFees();\n\n const totalSection = useMemo(() => {\n if (hotel?.requireDeposit && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const originalPrice = basketContext.getTotalPrice(true);\n const totalPayNow = basketContext.getTotalPayNow();\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {hotel?.requireDeposit && (\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</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>{originalPrice}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\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 {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.requireDeposit, 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>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n {/* Fees */}\n {hotel?.requireDeposit && (\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.Fees)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom\">\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\">\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"]}
|
|
@@ -31,10 +31,10 @@ const hooks_1 = require("../../hooks/index.js");
|
|
|
31
31
|
const react_1 = __importDefault(require("react"));
|
|
32
32
|
const react_i18next_1 = require("react-i18next");
|
|
33
33
|
const Alert_1 = __importDefault(require("../generic/Alert"));
|
|
34
|
-
const Icon_1 = __importDefault(require("../generic/Icon/Icon"));
|
|
35
34
|
const Text_1 = __importStar(require("../generic/Text"));
|
|
36
35
|
const DIProvider_1 = require("../../providers/DIProvider");
|
|
37
36
|
const Translation_1 = require("../../translations/Translation");
|
|
37
|
+
const HotelPerkHelper_1 = require("../../util/HotelPerkHelper");
|
|
38
38
|
exports.BE_SUMMARY_PERK_BLOCK = 'BESummaryPerkBlock';
|
|
39
39
|
function OriginalPerkBlock(props) {
|
|
40
40
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
@@ -49,10 +49,11 @@ function OriginalPerkBlock(props) {
|
|
|
49
49
|
react_1.default.createElement("div", null,
|
|
50
50
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
51
51
|
react_1.default.createElement(Text_1.default, null,
|
|
52
|
-
react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Room.AndYouGetAllTheseForFree)))),
|
|
52
|
+
react_1.default.createElement("strong", null, (hotel === null || hotel === void 0 ? void 0 : hotel.perkTitle) || t(Translation_1.Translation.Step.Room.AndYouGetAllTheseForFree)))),
|
|
53
53
|
react_1.default.createElement("div", { className: "row" }, hotelPerks.map((perk) => {
|
|
54
|
+
const perkIconElement = (0, HotelPerkHelper_1.getPerkIconElement)(perk);
|
|
54
55
|
return (react_1.default.createElement("div", { key: perk.name, className: `u-flex align-items-center ${colSize} justify-content-start u-marg-bottom--light` },
|
|
55
|
-
react_1.default.createElement("div", { className: "room-perk-icon" },
|
|
56
|
+
react_1.default.createElement("div", { className: "room-perk-icon" }, perkIconElement),
|
|
56
57
|
react_1.default.createElement(Text_1.default, { type: textSize, inline: true }, perk.name)));
|
|
57
58
|
})))));
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BESummaryPerkBlock.js","sourceRoot":"/","sources":["src/components/summary/BESummaryPerkBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"BESummaryPerkBlock.js","sourceRoot":"/","sources":["src/components/summary/BESummaryPerkBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAAuC;AACvC,iDAA+C;AAE/C,uEAA+C;AAE/C,kEAA2D;AAC3D,uDAAgD;AAEhD,4DAAyD;AACzD,4DAA4D;AAM/C,QAAA,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,SAAS,iBAAiB,CAAC,KAA8B;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;IAEhC,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE;QACrB,OAAO,6DAAK,CAAC;KAChB;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK,CAAC;IAE3E,OAAO,CACH,8BAAC,eAAK,IAAC,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,YAAY;QACvD;YACI,uCAAK,SAAS,EAAC,eAAe;gBAC1B,8BAAC,cAAI;oBACD,8CAAS,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAU,CACrF,CACL;YACN,uCAAK,SAAS,EAAC,KAAK,IACf,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,IAAI,CAAC,CAAC;gBAEjD,OAAO,CACH,uCAAK,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,6BAA6B,OAAO,6CAA6C;oBAC7G,uCAAK,SAAS,EAAC,gBAAgB,IAAE,eAAe,CAAO;oBACvD,8BAAC,cAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,UACvB,IAAI,CAAC,IAAI,CACP,CACL,CACT,CAAC;YACN,CAAC,CAAC,CACA,CACJ,CACF,CACX,CAAC;AACN,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAA8B;IAC7D,OAAO,IAAA,mBAAM,EAAC,6BAAqB,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAFD,gDAEC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Alert from '@/components/generic/Alert';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { withDI } from '@/providers/DIProvider';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Translation } from '@/translations/Translation';\nimport { getPerkIconElement } from '@/util/HotelPerkHelper';\n\nexport interface BESummaryPerkBlockProps {\n size: 'mobile' | 'desktop';\n}\n\nexport const BE_SUMMARY_PERK_BLOCK = 'BESummaryPerkBlock';\n\nfunction OriginalPerkBlock(props: BESummaryPerkBlockProps) {\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n const hotelPerks = hotel?.perks;\n\n if (!hotelPerks?.length) {\n return <></>;\n }\n\n const colSize = props.size === 'mobile' ? 'col-6' : 'col-12';\n const textSize = props.size === 'mobile' ? TextType.Label : TextType.Small;\n\n return (\n <Alert heavyPadding={props.size === 'desktop'} noIconMargin>\n <div>\n <div className=\"u-marg-bottom\">\n <Text>\n <strong>{hotel?.perkTitle || t(Translation.Step.Room.AndYouGetAllTheseForFree)}</strong>\n </Text>\n </div>\n <div className=\"row\">\n {hotelPerks.map((perk) => {\n const perkIconElement = getPerkIconElement(perk);\n\n return (\n <div key={perk.name} className={`u-flex align-items-center ${colSize} justify-content-start u-marg-bottom--light`}>\n <div className=\"room-perk-icon\">{perkIconElement}</div>\n <Text type={textSize} inline>\n {perk.name}\n </Text>\n </div>\n );\n })}\n </div>\n </div>\n </Alert>\n );\n}\n\nexport function BESummaryPerkBlock(props: BESummaryPerkBlockProps) {\n return withDI(BE_SUMMARY_PERK_BLOCK, OriginalPerkBlock, props);\n}\n"]}
|
|
@@ -29,49 +29,56 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
const contexts_1 = require("../../contexts/index.js");
|
|
30
30
|
const classnames_1 = __importDefault(require("classnames"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
+
const react_i18next_1 = require("react-i18next");
|
|
32
33
|
const Distance_1 = __importDefault(require("../generic/Distance"));
|
|
33
34
|
const Icon_1 = __importStar(require("../generic/Icon/Icon"));
|
|
34
35
|
const Text_1 = __importStar(require("../generic/Text"));
|
|
36
|
+
const Translation_1 = require("../../translations/Translation");
|
|
35
37
|
const Color_1 = require("../../util/Color");
|
|
36
38
|
const TextAlignment_1 = require("../../util/TextAlignment");
|
|
39
|
+
const TransportDistanceFromHotelBlock_module_scss_1 = __importDefault(require("./TransportDistanceFromHotelBlock.module.scss"));
|
|
37
40
|
function TransportDistanceFromHotelBlock(props) {
|
|
38
41
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
39
42
|
const { transportDistances } = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
|
|
40
43
|
const { vertical, tightMargins } = props;
|
|
44
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
41
45
|
const distanceValues = [
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
{
|
|
47
|
+
icon: Icon_1.IconType.Airplane,
|
|
48
|
+
name: t(Translation_1.Translation.TransportDistances.Airport),
|
|
49
|
+
distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.plane,
|
|
50
|
+
configuration: ((_a = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _a === void 0 ? void 0 : _a.plane) || {},
|
|
51
|
+
},
|
|
52
|
+
{ icon: Icon_1.IconType.Train, name: t(Translation_1.Translation.TransportDistances.Train), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.train, configuration: ((_b = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _b === void 0 ? void 0 : _b.train) || {} },
|
|
53
|
+
{ icon: Icon_1.IconType.Bus, name: t(Translation_1.Translation.TransportDistances.Bus), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.bus, configuration: ((_c = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _c === void 0 ? void 0 : _c.bus) || {} },
|
|
54
|
+
{ icon: Icon_1.IconType.Taxi, name: t(Translation_1.Translation.TransportDistances.Taxi), distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.taxi, configuration: ((_d = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _d === void 0 ? void 0 : _d.taxi) || {} },
|
|
46
55
|
{
|
|
47
56
|
icon: Icon_1.IconType.Ferry,
|
|
48
|
-
name:
|
|
57
|
+
name: t(Translation_1.Translation.TransportDistances.Ferry),
|
|
49
58
|
distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.ferry,
|
|
50
59
|
configuration: ((_e = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _e === void 0 ? void 0 : _e.ferry) || {},
|
|
51
60
|
},
|
|
52
61
|
{
|
|
53
62
|
icon: Icon_1.IconType.Location,
|
|
54
|
-
name:
|
|
63
|
+
name: t(Translation_1.Translation.TransportDistances.Location),
|
|
55
64
|
distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.location,
|
|
56
65
|
configuration: ((_f = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _f === void 0 ? void 0 : _f.location) || {},
|
|
57
66
|
},
|
|
58
67
|
{
|
|
59
68
|
icon: Icon_1.IconType.Car,
|
|
60
|
-
name:
|
|
69
|
+
name: t(Translation_1.Translation.TransportDistances.Car),
|
|
61
70
|
distance: transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.car,
|
|
62
71
|
configuration: ((_g = transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.configuration) === null || _g === void 0 ? void 0 : _g.car) || {},
|
|
63
72
|
},
|
|
64
73
|
].filter(({ distance }) => !!distance);
|
|
65
74
|
const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';
|
|
66
|
-
return (transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.displayCard) ? (react_1.default.createElement("div", { className:
|
|
67
|
-
width: '100%',
|
|
68
|
-
} }, distanceValues.map((distanceValue, index) => (react_1.default.createElement(DistanceDisplayCard, Object.assign({ key: index }, distanceValue, { vertical: vertical, totalValues: distanceValues.length })))))) : (react_1.default.createElement(react_1.default.Fragment, null, distanceValues.map((distanceValue, index) => (react_1.default.createElement(DistanceDisplay, Object.assign({ key: index }, distanceValue, { vertical: vertical, tightMarginClass: tightMarginClass }))))));
|
|
75
|
+
return (transportDistances === null || transportDistances === void 0 ? void 0 : transportDistances.displayCard) ? (react_1.default.createElement("div", { className: (0, classnames_1.default)(TransportDistanceFromHotelBlock_module_scss_1.default['rs-transport-distances'], 'rs-transport-distances d-flex flex-wrap justify-content-between u-w-100') }, distanceValues.map((distanceValue, index) => (react_1.default.createElement(DistanceDisplayCard, Object.assign({ key: index }, distanceValue, { vertical: vertical, totalValues: distanceValues.length })))))) : (react_1.default.createElement(react_1.default.Fragment, null, distanceValues.map((distanceValue, index) => (react_1.default.createElement(DistanceDisplay, Object.assign({ key: index }, distanceValue, { vertical: vertical, tightMarginClass: tightMarginClass }))))));
|
|
69
76
|
}
|
|
70
77
|
exports.default = TransportDistanceFromHotelBlock;
|
|
71
78
|
const DistanceDisplayCard = ({ icon, distance, configuration: { suffix, subTitle, unit }, totalValues, vertical, }) => (react_1.default.createElement("div", { style: Object.assign({}, (!vertical && {
|
|
72
79
|
minWidth: `${100 / totalValues}%`,
|
|
73
80
|
})), className: "d-flex flex-row transport-card" },
|
|
74
|
-
react_1.default.createElement("div", {
|
|
81
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(TransportDistanceFromHotelBlock_module_scss_1.default['transport-card-icon'], 'transport-card-icon') },
|
|
75
82
|
react_1.default.createElement(Icon_1.default, { icon: icon, size: "1.3em", color: Color_1.Color.Accent })),
|
|
76
83
|
react_1.default.createElement("div", { className: "d-flex flex-column transport-card-details" },
|
|
77
84
|
react_1.default.createElement(Text_1.default, { bold: true, align: TextAlignment_1.TextAlign.Left, type: vertical ? Text_1.TextType.Small : Text_1.TextType.Body, color: Color_1.Color.Accent, className: "transport-card-title" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransportDistanceFromHotelBlock.js","sourceRoot":"/","sources":["src/components/summary/TransportDistanceFromHotelBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HotelOverridesContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\n\nimport Distance from '@/components/generic/Distance';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { TransportDistancesConfig } from '@/models/Api/HotelOverrideDTO';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\ninterface TransportDistanceFromHotelBlockProps {\n vertical?: boolean;\n\n tightMargins?: boolean;\n distanceOverrides?: any;\n\n hotel?: Hotel;\n}\ninterface IDistanceValue {\n icon: IconType;\n name: string;\n distance: string | number;\n configuration: TransportDistancesConfig;\n}\nexport default function TransportDistanceFromHotelBlock(props: TransportDistanceFromHotelBlockProps) {\n const { transportDistances } = useContext(HotelOverridesContext);\n const { vertical, tightMargins } = props;\n\n const distanceValues = [\n { icon: IconType.Airplane, name: 'Airport', distance: transportDistances?.plane, configuration: transportDistances?.configuration?.plane || {} },\n { icon: IconType.Train, name: 'Train', distance: transportDistances?.train, configuration: transportDistances?.configuration?.train || {} },\n { icon: IconType.Bus, name: 'Bus', distance: transportDistances?.bus, configuration: transportDistances?.configuration?.bus || {} },\n { icon: IconType.Taxi, name: 'Taxi', distance: transportDistances?.taxi, configuration: transportDistances?.configuration?.taxi || {} },\n {\n icon: IconType.Ferry,\n name: 'Ferry',\n distance: transportDistances?.ferry,\n configuration: transportDistances?.configuration?.ferry || {},\n },\n {\n icon: IconType.Location,\n name: 'Drive',\n distance: transportDistances?.location,\n configuration: transportDistances?.configuration?.location || {},\n },\n {\n icon: IconType.Car,\n name: 'Drive',\n distance: transportDistances?.car,\n configuration: transportDistances?.configuration?.car || {},\n },\n ].filter(({ distance }) => !!distance) as IDistanceValue[];\n\n const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';\n\n return transportDistances?.displayCard ? (\n <div\n className=\"rs-transport-distances d-flex flex-wrap justify-content-between\"\n style={{\n width: '100%',\n }}\n >\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplayCard key={index} {...distanceValue} vertical={vertical} totalValues={distanceValues.length} />\n ))}\n </div>\n ) : (\n <>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplay key={index} {...distanceValue} vertical={vertical} tightMarginClass={tightMarginClass} />\n ))}\n </>\n );\n}\n\nconst DistanceDisplayCard = ({\n icon,\n distance,\n configuration: { suffix, subTitle, unit },\n totalValues,\n vertical,\n}: IDistanceValue & { totalValues: number; vertical?: boolean }) => (\n <div\n style={{\n ...(!vertical && {\n minWidth: `${100 / totalValues}%`,\n }),\n }}\n className=\"d-flex flex-row transport-card\"\n >\n <div style={{ paddingRight: '4px' }} className=\"transport-card-icon\">\n <Icon icon={icon} size=\"1.3em\" color={Color.Accent} />\n </div>\n <div className=\"d-flex flex-column transport-card-details\">\n <Text bold align={TextAlign.Left} type={vertical ? TextType.Small : TextType.Body} color={Color.Accent} className=\"transport-card-title\">\n <Distance distance={distance} unit={unit} /> {suffix ?? ''}\n </Text>\n <Text align={TextAlign.Left} type={vertical ? TextType.Label : TextType.Small} color={Color.Graphite} className=\"transport-card-subtitle\">\n {subTitle}\n </Text>\n </div>\n </div>\n);\n\nconst DistanceDisplay = ({ name, icon, distance, configuration: { unit }, vertical, tightMarginClass }: IDistanceValue & { vertical?: boolean; tightMarginClass: string }) => (\n <div className={vertical ? 'u-flex flex-column u-marg-top-bottom' : `${tightMarginClass} u-marg-left-right@l-`}>\n <Text align={vertical ? TextAlign.Center : undefined} type={TextType.Small} color={Color.DarkGrey}>\n <strong>{name}</strong>\n </Text>\n <div\n className={classNames('u-flex u-marg-top--light', {\n 'justify-content-start flex-column align-items-center': vertical,\n 'align-items-end': !vertical,\n })}\n >\n <Icon icon={icon} size=\"1.3em\" />\n <span className={vertical ? 'u-marg-top--light' : 'u-marg-left--light'}>\n <Text type={TextType.Small}>\n <span className=\"u-nowrap\">\n <Distance unit={unit} distance={distance} />\n </span>\n </Text>\n </span>\n </div>\n </div>\n);\n"]}
|
|
1
|
+
{"version":3,"file":"TransportDistanceFromHotelBlock.js","sourceRoot":"/","sources":["src/components/summary/TransportDistanceFromHotelBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HotelOverridesContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Distance from '@/components/generic/Distance';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { TransportDistancesConfig } from '@/models/Api/HotelOverrideDTO';\nimport type { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './TransportDistanceFromHotelBlock.module.scss';\ninterface TransportDistanceFromHotelBlockProps {\n vertical?: boolean;\n\n tightMargins?: boolean;\n distanceOverrides?: any;\n\n hotel?: Hotel;\n}\ninterface IDistanceValue {\n icon: IconType;\n name: string;\n distance: string | number;\n configuration: TransportDistancesConfig;\n}\nexport default function TransportDistanceFromHotelBlock(props: TransportDistanceFromHotelBlockProps) {\n const { transportDistances } = useContext(HotelOverridesContext);\n const { vertical, tightMargins } = props;\n const { t } = useTranslation();\n\n const distanceValues = [\n {\n icon: IconType.Airplane,\n name: t(Translation.TransportDistances.Airport),\n distance: transportDistances?.plane,\n configuration: transportDistances?.configuration?.plane || {},\n },\n { icon: IconType.Train, name: t(Translation.TransportDistances.Train), distance: transportDistances?.train, configuration: transportDistances?.configuration?.train || {} },\n { icon: IconType.Bus, name: t(Translation.TransportDistances.Bus), distance: transportDistances?.bus, configuration: transportDistances?.configuration?.bus || {} },\n { icon: IconType.Taxi, name: t(Translation.TransportDistances.Taxi), distance: transportDistances?.taxi, configuration: transportDistances?.configuration?.taxi || {} },\n {\n icon: IconType.Ferry,\n name: t(Translation.TransportDistances.Ferry),\n distance: transportDistances?.ferry,\n configuration: transportDistances?.configuration?.ferry || {},\n },\n {\n icon: IconType.Location,\n name: t(Translation.TransportDistances.Location),\n distance: transportDistances?.location,\n configuration: transportDistances?.configuration?.location || {},\n },\n {\n icon: IconType.Car,\n name: t(Translation.TransportDistances.Car),\n distance: transportDistances?.car,\n configuration: transportDistances?.configuration?.car || {},\n },\n ].filter(({ distance }) => !!distance) as IDistanceValue[];\n\n const tightMarginClass = tightMargins ? 'u-marg-left-right' : 'u-marg-left-right--heavy';\n\n return transportDistances?.displayCard ? (\n <div className={classNames(styles['rs-transport-distances'], 'rs-transport-distances d-flex flex-wrap justify-content-between u-w-100')}>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplayCard key={index} {...distanceValue} vertical={vertical} totalValues={distanceValues.length} />\n ))}\n </div>\n ) : (\n <>\n {distanceValues.map((distanceValue, index) => (\n <DistanceDisplay key={index} {...distanceValue} vertical={vertical} tightMarginClass={tightMarginClass} />\n ))}\n </>\n );\n}\n\nconst DistanceDisplayCard = ({\n icon,\n distance,\n configuration: { suffix, subTitle, unit },\n totalValues,\n vertical,\n}: IDistanceValue & { totalValues: number; vertical?: boolean }) => (\n <div\n style={{\n ...(!vertical && {\n minWidth: `${100 / totalValues}%`,\n }),\n }}\n className=\"d-flex flex-row transport-card\"\n >\n <div className={classNames(styles['transport-card-icon'], 'transport-card-icon')}>\n <Icon icon={icon} size=\"1.3em\" color={Color.Accent} />\n </div>\n <div className=\"d-flex flex-column transport-card-details\">\n <Text bold align={TextAlign.Left} type={vertical ? TextType.Small : TextType.Body} color={Color.Accent} className=\"transport-card-title\">\n <Distance distance={distance} unit={unit} /> {suffix ?? ''}\n </Text>\n <Text align={TextAlign.Left} type={vertical ? TextType.Label : TextType.Small} color={Color.Graphite} className=\"transport-card-subtitle\">\n {subTitle}\n </Text>\n </div>\n </div>\n);\n\nconst DistanceDisplay = ({ name, icon, distance, configuration: { unit }, vertical, tightMarginClass }: IDistanceValue & { vertical?: boolean; tightMarginClass: string }) => (\n <div className={vertical ? 'u-flex flex-column u-marg-top-bottom' : `${tightMarginClass} u-marg-left-right@l-`}>\n <Text align={vertical ? TextAlign.Center : undefined} type={TextType.Small} color={Color.DarkGrey}>\n <strong>{name}</strong>\n </Text>\n <div\n className={classNames('u-flex u-marg-top--light', {\n 'justify-content-start flex-column align-items-center': vertical,\n 'align-items-end': !vertical,\n })}\n >\n <Icon icon={icon} size=\"1.3em\" />\n <span className={vertical ? 'u-marg-top--light' : 'u-marg-left--light'}>\n <Text type={TextType.Small}>\n <span className=\"u-nowrap\">\n <Distance unit={unit} distance={distance} />\n </span>\n </Text>\n </span>\n </div>\n </div>\n);\n"]}
|
|
@@ -56,7 +56,7 @@ const Icon_1 = require("../../components/generic/Icon/Icon");
|
|
|
56
56
|
const Text_1 = __importDefault(require("../../components/generic/Text"));
|
|
57
57
|
const MemberSignInModal_1 = require("../../components/members/SignInModal/MemberSignInModal");
|
|
58
58
|
const PromoCodeVerificationAlert_1 = require("../../components/steps/room/UserSearchSummary/PromoCodeVerificationAlert");
|
|
59
|
-
const
|
|
59
|
+
const useSignedInMember_1 = require("../../hooks/useSignedInMember");
|
|
60
60
|
const Addon_1 = require("../../models/Addon/Addon");
|
|
61
61
|
const BasketAddonRow_1 = __importDefault(require("../../models/BasketAddonRow"));
|
|
62
62
|
const BasketRow_1 = __importDefault(require("../../models/BasketRow"));
|
|
@@ -76,7 +76,7 @@ function BasketContextWrapper(props) {
|
|
|
76
76
|
const updateQueryParams = (0, UpdateQueryParameters_1.useUpdateQueryParameters)();
|
|
77
77
|
const history = (0, react_router_dom_1.useHistory)();
|
|
78
78
|
const historyConsistentPush = (0, HistoryConsistentPush_1.useHistoryConsistentPush)();
|
|
79
|
-
const { isExternalMemberHotel, memberNumber } = (0,
|
|
79
|
+
const { signedInUser, isExternalMemberHotel, memberNumber, memberOnlyModalPromotion } = (0, useSignedInMember_1.useSignedInMember)();
|
|
80
80
|
const notifications = (0, react_1.useContext)(contexts_1.NotificationContext);
|
|
81
81
|
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
82
82
|
const { showPromoCodeAlert } = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
|
|
@@ -174,22 +174,26 @@ function BasketContextWrapper(props) {
|
|
|
174
174
|
(0, react_1.useEffect)(() => {
|
|
175
175
|
debounceUseEffect();
|
|
176
176
|
}, [debounceUseEffect]);
|
|
177
|
+
(0, react_1.useEffect)(() => {
|
|
178
|
+
if (signedInUser && (hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyPromoCode) && !(memberOnlyModalPromotion === null || memberOnlyModalPromotion === void 0 ? void 0 : memberOnlyModalPromotion.memberOnlyDisableDefaultPromo)) {
|
|
179
|
+
currentBasketRows === null || currentBasketRows === void 0 ? void 0 : currentBasketRows.forEach((row) => {
|
|
180
|
+
row.setPromoCode(hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyPromoCode);
|
|
181
|
+
updateBasketRow(row);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}, [signedInUser]);
|
|
177
185
|
(0, react_1.useEffect)(() => {
|
|
178
186
|
var _a;
|
|
179
187
|
(_a = beContext.sessionProvider) === null || _a === void 0 ? void 0 : _a.updateSession({ basketRows: currentBasketRows });
|
|
180
188
|
}, [currentBasketRows, selectedBasketRow]);
|
|
181
|
-
const checkAndApplyMemberOnlyPromo = (row) => {
|
|
182
|
-
if (row && (hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyPromoCode) &&
|
|
189
|
+
const checkAndApplyMemberOnlyPromo = (row, skipUpdate = false) => {
|
|
190
|
+
if (row && (hotel === null || hotel === void 0 ? void 0 : hotel.memberOnlyPromoCode) && signedInUser && !row.getPromoCode()) {
|
|
183
191
|
row.setPromoCode(hotel.memberOnlyPromoCode);
|
|
184
|
-
|
|
192
|
+
if (!skipUpdate) {
|
|
193
|
+
workingContext.updateBasketRow(row);
|
|
194
|
+
}
|
|
185
195
|
}
|
|
186
196
|
};
|
|
187
|
-
/**
|
|
188
|
-
* This is necessary as when we're adding our first row, hotel might not be set.
|
|
189
|
-
*/
|
|
190
|
-
(0, react_1.useEffect)(() => {
|
|
191
|
-
checkAndApplyMemberOnlyPromo(selectedBasketRow);
|
|
192
|
-
}, [hotel]);
|
|
193
197
|
const returnAggregationAndTranslation = (reduction, translation) => {
|
|
194
198
|
const count = typeof reduction === 'number' ? reduction : currentBasketRows.reduce((total, row) => total + reduction(row), 0);
|
|
195
199
|
if (translation) {
|
|
@@ -234,6 +238,9 @@ function BasketContextWrapper(props) {
|
|
|
234
238
|
setStartDate(row.getStartDate());
|
|
235
239
|
setEndDate(row.getEndDate());
|
|
236
240
|
}
|
|
241
|
+
// Here we check if there is no promocode on the row. If there isn't this function will check for existing member details
|
|
242
|
+
// and automatically apply a member only promocode
|
|
243
|
+
checkAndApplyMemberOnlyPromo(row, true);
|
|
237
244
|
basketRowReducer({ method: 'Update', row });
|
|
238
245
|
};
|
|
239
246
|
const syncSelectedDateRange = (row) => {
|