@roomstay/frontend 2.6.32 → 2.6.34
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/animations/AutoAutoHeight.js +4 -2
- package/dist/src/animations/AutoAutoHeight.js.map +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +10 -1
- package/dist/src/api/AvailabilityAPI.js +14 -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/User/Forms/SignUpForm.js +1 -1
- package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
- package/dist/src/components/generic/HtmlContentViewer.d.ts +3 -0
- package/dist/src/components/generic/HtmlContentViewer.js +44 -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 +16 -3
- 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/generic/modal/SimpleModal.js +0 -22
- package/dist/src/components/generic/modal/SimpleModal.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/StepRoomBestRateAlert.js +13 -2
- package/dist/src/components/steps/room/StepRoomBestRateAlert.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 +16 -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/MembersOnlyRow.js +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js +6 -5
- package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.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 +4 -4
- 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/BESummaryRoomRow.js +2 -3
- package/dist/src/components/summary/BESummaryRoomRow.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/BasketContextType.d.ts +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +94 -32
- 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/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.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 +3 -4
- 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 +6 -1
- package/dist/src/models/BasketRow.js +21 -3
- 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/pages/steps/StepDate/StepDateComponent.d.ts +2 -2
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +14 -7
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +10 -0
- package/dist/src/translations/Translation.js +10 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +11 -1
- 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":"BESummaryRoomRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryRoomRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport BasketRow from '@/models/BasketRow';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\n\ninterface BESummaryRoomRowProps {\n index: number;\n row: BasketRow;\n showImages: boolean;\n\n onEditPropertyClicked?: () => void;\n}\n\nexport default function BESummaryRoomRow(props: BESummaryRoomRowProps) {\n const basketContext = useContext(BasketContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const { isAccent2ColorDark, hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n const history = useHistory();\n const { showChildren } = useSearchScopeHook();\n\n const { index, row, showImages } = props;\n\n const totalPrice = row.getTotalPrice(true);\n const rate = row.getRate();\n\n const isSelected = basketContext.selectedBasketRow?.getID() === row.getID();\n const isOnlyRate = basketContext.currentBasketRows.length === 1;\n\n const removeRate = t(isOnlyRate ? Translation.Step.Room.Summary.NoRemoveLastRate : Translation.Step.Room.Summary.RemoveThisRate);\n\n const rowFees = row.getRate()?.getTotalFees();\n const rowTaxes = row.getRate()?.getTotalTaxes();\n\n const rowQuote = row.quoteDetails;\n\n const selectBasketRowOnClick = () => basketContext.selectBasketRow(null);\n const editOnClickHandler = () => {\n if (currentStep !== getStepRoom()) {\n history.push(getStepRoom().getStepUrl());\n }\n basketContext.selectBasketRow(row);\n\n if (props.onEditPropertyClicked) {\n props.onEditPropertyClicked();\n }\n };\n const removeOnClickHandler = () => {\n if (currentStep !== getStepRoom()) {\n history.push(getStepRoom().getStepUrl());\n }\n basketContext.removeBasketRow(row);\n };\n\n const promoApplied = row.isPromoCodeValid();\n\n const shouldTextBeWhite = isAccent2ColorDark && isSelected;\n const textWhiteOr = (color = Color.Graphite) => {\n return shouldTextBeWhite ? Color.White : color;\n };\n\n return (\n <>\n {index >= 1 && <LineBreak noMargins darker />}\n <div key={row.getID()} className={'booking-engine-summary--row' + (isSelected ? ' --selected' : '')}>\n {showImages && (\n <div className=\"u-border-rounded\" style={{ height: '190px' }}>\n <ImageGallerySlider images={row.getRoom().getImages()} imageSize={ImageSize.Tiny} />\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={textWhiteOr(Color.DarkGrey)}>\n <strong>\n {t(Translation.Step.Date.Room)} {index + 1}\n </strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text color={textWhiteOr(Color.Navy)}>\n <strong>{rate?.getRoom().name}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {rate?.name}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Arrival)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Departure)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getDepartureDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--medium u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {[\n StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t),\n showChildren ? StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t) : null,\n hotel?.childConfiguration?.supportInfants ? StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t) : null,\n ]\n .filter((item) => !!item)\n .join(`, `)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Misc.Rates)} ({t(Translation.Misc.PerNight)})\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rate?.getAveragePrice(true)}</Currency>\n </Text>\n </div>\n {promoApplied && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.PromoCode)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n {row.getPromoCode()}\n </Text>\n </div>\n )}\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.General.RoomTotal)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{totalPrice}</Currency>\n </Text>\n </div>\n {!!rowFees && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Fees)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowFees}</Currency>\n </Text>\n </div>\n )}\n {!!rowTaxes && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Taxes)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowTaxes}</Currency>\n </Text>\n </div>\n )}\n <div className=\"u-marg-top u-marg-bottom u-flex justify-content-start\">\n {isSelected ? (\n <Tooltip title={t(Translation.Misc.Cancel)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={selectBasketRowOnClick} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </Tooltip>\n ) : (\n <Tooltip title={t(Translation.Step.Confirmation.EditThisProperty)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={editOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Edit)}\n </BEButton>\n </div>\n </Tooltip>\n )}\n\n <span className=\"u-pad-left--light u-pad-right--light\" style={{ color: Color.LightGrey }}>\n |\n </span>\n <Tooltip title={removeRate}>\n <div>\n <BEButton isText size=\"tiny\" primary disabled={isOnlyRate} onClick={removeOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </div>\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BESummaryRoomRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryRoomRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport BasketRow from '@/models/BasketRow';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\n\ninterface BESummaryRoomRowProps {\n index: number;\n row: BasketRow;\n showImages: boolean;\n\n onEditPropertyClicked?: () => void;\n}\n\nexport default function BESummaryRoomRow(props: BESummaryRoomRowProps) {\n const basketContext = useContext(BasketContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const { isAccent2ColorDark, hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n const history = useHistory();\n const { showChildren } = useSearchScopeHook();\n\n const { index, row, showImages } = props;\n\n const totalPrice = row.getTotalPrice(true);\n const rate = row.getRate();\n\n const isSelected = basketContext.selectedBasketRow?.getID() === row.getID();\n const isOnlyRate = basketContext.currentBasketRows.length === 1;\n\n const removeRate = t(isOnlyRate ? Translation.Step.Room.Summary.NoRemoveLastRate : Translation.Step.Room.Summary.RemoveThisRate);\n\n const rowFees = row.getRate()?.getTotalFees();\n const rowTaxes = row.getRate()?.getTotalTaxes();\n\n const cancelEditBasketRowOnClick = () => basketContext.clearSelectedRates(); //Set the selected basket row to null, ensuring that no row is selected for editing.\n const editOnClickHandler = () => {\n if (currentStep !== getStepRoom()) {\n history.push(getStepRoom().getStepUrl());\n }\n basketContext.selectBasketRow(row);\n\n if (props.onEditPropertyClicked) {\n props.onEditPropertyClicked();\n }\n };\n const removeOnClickHandler = () => {\n if (currentStep !== getStepRoom()) {\n history.push(getStepRoom().getStepUrl());\n }\n basketContext.removeBasketRow(row);\n };\n\n const promoApplied = row.isPromoCodeValid();\n\n const shouldTextBeWhite = isAccent2ColorDark && isSelected;\n const textWhiteOr = (color = Color.Graphite) => {\n return shouldTextBeWhite ? Color.White : color;\n };\n\n return (\n <>\n {index >= 1 && <LineBreak noMargins darker />}\n <div key={row.getID()} className={'booking-engine-summary--row' + (isSelected ? ' --selected' : '')}>\n {showImages && (\n <div className=\"u-border-rounded\" style={{ height: '190px' }}>\n <ImageGallerySlider images={row.getRoom().getImages()} imageSize={ImageSize.Tiny} />\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Label} color={textWhiteOr(Color.DarkGrey)}>\n <strong>\n {t(Translation.Step.Date.Room)} {index + 1}\n </strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text color={textWhiteOr(Color.Navy)}>\n <strong>{rate?.getRoom().name}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {rate?.name}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Arrival)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.Departure)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.Accent)}>\n {row.getDepartureDate()}\n </Text>\n </div>\n <div className=\"u-marg-bottom--medium u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {[\n StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t),\n showChildren ? StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t) : null,\n hotel?.childConfiguration?.supportInfants ? StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t) : null,\n ]\n .filter((item) => !!item)\n .join(`, `)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Misc.Rates)} ({t(Translation.Misc.PerNight)})\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rate?.getAveragePrice(true)}</Currency>\n </Text>\n </div>\n {promoApplied && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Date.PromoCode)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n {row.getPromoCode()}\n </Text>\n </div>\n )}\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.General.RoomTotal)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{totalPrice}</Currency>\n </Text>\n </div>\n {!!rowFees && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Fees)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowFees}</Currency>\n </Text>\n </div>\n )}\n {!!rowTaxes && (\n <div className=\"u-marg-bottom--light u-flex\">\n <Text type={TextType.Small} color={textWhiteOr()}>\n {t(Translation.Step.Room.Summary.Taxes)}\n </Text>\n <Text type={TextType.Small} color={textWhiteOr(Color.DarkGrey)}>\n <Currency>{rowTaxes}</Currency>\n </Text>\n </div>\n )}\n <div className=\"u-marg-top u-marg-bottom u-flex justify-content-start\">\n {isSelected ? (\n <Tooltip title={t(Translation.Misc.Cancel)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={cancelEditBasketRowOnClick} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </Tooltip>\n ) : (\n <Tooltip title={t(Translation.Step.Confirmation.EditThisProperty)}>\n <div>\n <BEButton isText size=\"tiny\" primary onClick={editOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Edit)}\n </BEButton>\n </div>\n </Tooltip>\n )}\n\n <span className=\"u-pad-left--light u-pad-right--light\" style={{ color: Color.LightGrey }}>\n |\n </span>\n <Tooltip title={removeRate}>\n <div>\n <BEButton isText size=\"tiny\" primary disabled={isOnlyRate} onClick={removeOnClickHandler} textColor={textWhiteOr(Color.Accent)}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </div>\n </>\n );\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"]}
|
|
@@ -14,7 +14,7 @@ export interface BasketContextType {
|
|
|
14
14
|
startDate: dayjs.Dayjs;
|
|
15
15
|
endDate: dayjs.Dayjs;
|
|
16
16
|
isLoadingPriceQuote: boolean;
|
|
17
|
-
addBasketRow: (row: BasketRow
|
|
17
|
+
addBasketRow: (row: BasketRow) => void;
|
|
18
18
|
addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;
|
|
19
19
|
getAllValidRows: () => BasketRow[];
|
|
20
20
|
getAllDatelessRows: () => BasketRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import type dayjs from 'dayjs';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n loadedPromotion: IPromotion | null;\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow
|
|
1
|
+
{"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import type dayjs from 'dayjs';\nimport React from 'react';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n loadedPromotion: IPromotion | null;\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow) => void;\n addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;\n\n getAllValidRows: () => BasketRow[];\n getAllDatelessRows: () => BasketRow[];\n\n getNumberOfAdults: (withTranslation: boolean) => number | string;\n getNumberOfChildren: (withTranslation: boolean) => number | string;\n getNumberOfInfants: (withTranslation: boolean) => number | string;\n getNumberOfRooms: (withTranslation: boolean) => number | string;\n\n getTotalPrice: (getOrigianl?: boolean) => any;\n getTotalDeposit: () => number;\n getTotalFees: () => number;\n getTotalPayNow: () => number;\n getTotalPayLater: () => number;\n\n updateBasketRow: (row: BasketRow, updateGlobalDates?: boolean) => void;\n removeBasketRow: (row: BasketRow) => void;\n\n clearBasketRows: (confirm: boolean) => void;\n selectBasketRow: (row: BasketRow | null) => void;\n\n setStartDate: (date: dayjs.Dayjs) => void;\n setEndDate: (date: dayjs.Dayjs) => void;\n getBasketQuoteDetails: () => void;\n\n hasCheckedOut: boolean;\n reservationData: ReservationsDTO;\n booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;\n rollback: () => void;\n checkedOut: (data: ReservationsDTO) => void;\n clearSelectedRates: () => void;\n finish: () => void;\n\n getRowForAddon: (selectedAddon: Addon) => BasketAddonRow | undefined;\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => void;\n\n removeBasketAddonRow: (row: BasketAddonRow) => void;\n attemptSelectUnfilledRow: () => BasketRow | undefined;\n\n initBasketRows: (basketRows: BasketRow[]) => void;\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) {
|
|
@@ -199,14 +203,16 @@ function BasketContextWrapper(props) {
|
|
|
199
203
|
return count;
|
|
200
204
|
}
|
|
201
205
|
};
|
|
202
|
-
const getNextAvailableBasketRow = (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
206
|
+
const getNextAvailableBasketRow = (deletedBasketRow) => {
|
|
207
|
+
if (!currentBasketRows.length)
|
|
208
|
+
return null;
|
|
209
|
+
// Filter out the excluded basket row if provided
|
|
210
|
+
const filteredRows = deletedBasketRow ? currentBasketRows.filter((row) => row.getID() !== deletedBasketRow.getID()) : currentBasketRows;
|
|
211
|
+
// Find the first row that does not have a rate assigned
|
|
212
|
+
const availableRow = filteredRows.find((row) => !row.getRate());
|
|
213
|
+
// Return a row without a rate if found
|
|
214
|
+
// If no such row exists , return the last row in the list
|
|
215
|
+
return availableRow !== null && availableRow !== void 0 ? availableRow : filteredRows[filteredRows.length - 1];
|
|
210
216
|
};
|
|
211
217
|
const updateQueryParameters = (row) => {
|
|
212
218
|
if (!row)
|
|
@@ -234,6 +240,9 @@ function BasketContextWrapper(props) {
|
|
|
234
240
|
setStartDate(row.getStartDate());
|
|
235
241
|
setEndDate(row.getEndDate());
|
|
236
242
|
}
|
|
243
|
+
// Here we check if there is no promocode on the row. If there isn't this function will check for existing member details
|
|
244
|
+
// and automatically apply a member only promocode
|
|
245
|
+
checkAndApplyMemberOnlyPromo(row, true);
|
|
237
246
|
basketRowReducer({ method: 'Update', row });
|
|
238
247
|
};
|
|
239
248
|
const syncSelectedDateRange = (row) => {
|
|
@@ -270,16 +279,40 @@ function BasketContextWrapper(props) {
|
|
|
270
279
|
isLoadingPriceQuote,
|
|
271
280
|
loadedPromotion,
|
|
272
281
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
282
|
+
* Adds a new basket row and applies relevant updates:
|
|
283
|
+
* - Synchronizes the selected date range.
|
|
284
|
+
* - Applies any applicable member-only promotions.
|
|
285
|
+
* - Ensures proper selection logic for the basket row.
|
|
286
|
+
*
|
|
287
|
+
* Selection logic:
|
|
288
|
+
* - If the basket is empty, the newly added row is automatically selected.
|
|
289
|
+
* - If a row is already selected:
|
|
290
|
+
* - If the selected row has an assigned rate, update the selection to the new row.
|
|
291
|
+
* - Otherwise, keep the current selection (allowing continued editing of the existing row).
|
|
292
|
+
* - If no row is selected, set the new row as the selected row.
|
|
293
|
+
*
|
|
294
|
+
* @param {BasketRow} row - The basket row to add.
|
|
276
295
|
*/
|
|
277
|
-
addBasketRow: (row
|
|
296
|
+
addBasketRow: (row) => {
|
|
278
297
|
syncSelectedDateRange(row);
|
|
279
298
|
checkAndApplyMemberOnlyPromo(row);
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
299
|
+
// Determine if the basket is currently empty
|
|
300
|
+
const isEmptyRows = !currentBasketRows.length;
|
|
301
|
+
if (isEmptyRows) {
|
|
302
|
+
// If empty, set the newly added row as the selected basket row
|
|
303
|
+
setSelectedBasketRow(row);
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
if (selectedBasketRow) {
|
|
307
|
+
// Determine if the currently selected row has an assigned rate
|
|
308
|
+
const isSelectedRowAssignedRate = selectedBasketRow && selectedBasketRow.getRate();
|
|
309
|
+
if (isSelectedRowAssignedRate) {
|
|
310
|
+
// If the selected row has a rate, update the selection to the new row
|
|
311
|
+
setSelectedBasketRow(row);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
// If no row is currently selected, set the new row as the selected basket row
|
|
283
316
|
setSelectedBasketRow(row);
|
|
284
317
|
}
|
|
285
318
|
}
|
|
@@ -345,12 +378,17 @@ function BasketContextWrapper(props) {
|
|
|
345
378
|
react_1.default.createElement("strong", { className: "u-marg-left--light" }, rate.getRoom().name))),
|
|
346
379
|
});
|
|
347
380
|
}
|
|
348
|
-
const nextAvailable = getNextAvailableBasketRow(
|
|
349
|
-
if (nextAvailable) {
|
|
381
|
+
const nextAvailable = getNextAvailableBasketRow();
|
|
382
|
+
if (!(nextAvailable === null || nextAvailable === void 0 ? void 0 : nextAvailable.getRate())) {
|
|
383
|
+
// If the next available row does not have a rate assigned,
|
|
384
|
+
// set it as the selected basket row to allow rate assignment.
|
|
350
385
|
setSelectedBasketRow(nextAvailable);
|
|
351
386
|
}
|
|
352
387
|
else {
|
|
388
|
+
// If all rows already have a rate assigned
|
|
389
|
+
// Set the selected basket row to null, ensuring that no row is selected for editing.
|
|
353
390
|
setSelectedBasketRow(null);
|
|
391
|
+
// Determine whether the next step is an add-on selection step.
|
|
354
392
|
const isNextStepAddon = StepManager_1.default.getNextStepUrl((0, GetStepRoom_1.default)()) === StepAddon_1.default.getStepUrl();
|
|
355
393
|
if (isNextStepAddon) {
|
|
356
394
|
if (addons.length) {
|
|
@@ -459,10 +497,15 @@ function BasketContextWrapper(props) {
|
|
|
459
497
|
const rowsBeforeRemoval = currentBasketRows.length;
|
|
460
498
|
basketRowReducer({ method: 'Remove', row });
|
|
461
499
|
if (selectedBasketRow && row.getID() === selectedBasketRow.getID()) {
|
|
462
|
-
|
|
500
|
+
const availableBasketRow = getNextAvailableBasketRow(row);
|
|
501
|
+
if (availableBasketRow) {
|
|
502
|
+
setStartDate(availableBasketRow.getStartDate());
|
|
503
|
+
setEndDate(availableBasketRow.getEndDate());
|
|
504
|
+
}
|
|
505
|
+
setSelectedBasketRow(availableBasketRow);
|
|
463
506
|
}
|
|
464
507
|
if (rowsBeforeRemoval === 1) {
|
|
465
|
-
workingContext.addBasketRow(new BasketRow_1.default()
|
|
508
|
+
workingContext.addBasketRow(new BasketRow_1.default());
|
|
466
509
|
}
|
|
467
510
|
},
|
|
468
511
|
clearBasketRows: (confirm) => {
|
|
@@ -472,15 +515,22 @@ function BasketContextWrapper(props) {
|
|
|
472
515
|
},
|
|
473
516
|
updateBasketRow,
|
|
474
517
|
/**
|
|
475
|
-
*
|
|
518
|
+
* Selects the given basket row and updates all relevant inputs (e.g., start date and end date).
|
|
519
|
+
* - If the provided row is valid, it updates the selected row and sets the corresponding dates.
|
|
520
|
+
* - If the row is null or invalid, it attempts to select the next available basket row.
|
|
521
|
+
*
|
|
522
|
+
* @param {BasketRow | null} row - The basket row to be selected.
|
|
523
|
+
* @returns {Promise<void>} A promise that resolves when the selection is complete.
|
|
476
524
|
*/
|
|
477
525
|
selectBasketRow: (row) => __awaiter(this, void 0, void 0, function* () {
|
|
478
526
|
if (row && row.isValid()) {
|
|
479
527
|
setStartDate(row.getStartDate());
|
|
480
528
|
setEndDate(row.getEndDate());
|
|
529
|
+
// Update the selected basket row
|
|
481
530
|
setSelectedBasketRow(row);
|
|
482
531
|
}
|
|
483
532
|
else {
|
|
533
|
+
// If the row is invalid or null, select the next available basket row
|
|
484
534
|
setSelectedBasketRow(getNextAvailableBasketRow());
|
|
485
535
|
}
|
|
486
536
|
}),
|
|
@@ -525,6 +575,9 @@ function BasketContextWrapper(props) {
|
|
|
525
575
|
setReservationData(null);
|
|
526
576
|
setHasCheckedOut(false);
|
|
527
577
|
},
|
|
578
|
+
/**
|
|
579
|
+
* Set the selected basket row to null, ensuring that no row is selected for editing.
|
|
580
|
+
*/
|
|
528
581
|
clearSelectedRates: () => {
|
|
529
582
|
setSelectedBasketRow(null);
|
|
530
583
|
},
|
|
@@ -566,12 +619,21 @@ function BasketContextWrapper(props) {
|
|
|
566
619
|
removeBasketAddonRow: (row) => {
|
|
567
620
|
setBasketAddonRows((oldRows) => oldRows.filter((item) => item.getID() !== row.getID()));
|
|
568
621
|
},
|
|
622
|
+
/**
|
|
623
|
+
* Attempts to select the next available basket row that does not have a rate assigned.
|
|
624
|
+
* If such a row is found, it updates the selected basket row and returns it.
|
|
625
|
+
* Otherwise, it does nothing.
|
|
626
|
+
*
|
|
627
|
+
* @returns {BasketRow | undefined} The selected basket row without a rate, or undefined if none is found.
|
|
628
|
+
*/
|
|
569
629
|
attemptSelectUnfilledRow: () => {
|
|
570
630
|
const row = getNextAvailableBasketRow();
|
|
571
|
-
if (row) {
|
|
631
|
+
if (row && !(row === null || row === void 0 ? void 0 : row.getRate())) {
|
|
632
|
+
// Select the first available row without a rate and update the selected basket row
|
|
572
633
|
setSelectedBasketRow(row);
|
|
573
634
|
return row;
|
|
574
635
|
}
|
|
636
|
+
// No available unfilled row found, return undefined
|
|
575
637
|
},
|
|
576
638
|
};
|
|
577
639
|
return (react_1.default.createElement(contexts_1.BasketContext.Provider, { value: workingContext },
|