@roomstay/frontend 2.1.32 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/201.bundle.js +1 -1
- package/dist/213.bundle.js +1 -0
- package/dist/279.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/423.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/535.bundle.js +2 -0
- package/dist/548.bundle.js +1 -0
- package/dist/686.bundle.js +1 -0
- package/dist/855.bundle.js +1 -1
- package/dist/873.bundle.js +1 -1
- package/dist/882.bundle.js +1 -1
- package/dist/93.bundle.js +1 -0
- package/dist/972.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/HotelAPI.d.ts +1 -1
- package/dist/src/api/HotelAPI.js.map +1 -1
- package/dist/src/api/ReservationAPI.d.ts +0 -6
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
- package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
- package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
- package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
- package/dist/src/components/Event/EventCarouselContainer.js +97 -0
- package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
- package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
- package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
- package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
- package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
- package/dist/src/components/User/Forms/SignInForm.js +32 -14
- package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
- package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
- package/dist/src/components/User/Forms/SignUpForm.js +30 -26
- package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/Currency.js +5 -5
- package/dist/src/components/generic/Currency.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
- package/dist/src/components/generic/Event/EventCard.js +70 -0
- package/dist/src/components/generic/Event/EventCard.js.map +1 -0
- package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
- package/dist/src/components/generic/Event/EventCarousel.js +72 -0
- package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
- package/dist/src/components/generic/Headline.d.ts +2 -2
- package/dist/src/components/generic/Headline.js +8 -4
- package/dist/src/components/generic/Headline.js.map +1 -1
- package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
- package/dist/src/components/generic/Icon/Icon.js +4 -0
- package/dist/src/components/generic/Icon/Icon.js.map +1 -1
- package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
- package/dist/src/components/generic/Overlay/Overlay.js +50 -7
- package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
- package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
- package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
- package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
- package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
- package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
- package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.js +15 -18
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
- package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
- package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
- package/dist/src/components/generic/RecentSearchesCard.js +6 -5
- package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabLink.js +28 -3
- package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
- package/dist/src/components/generic/TextBox.js +1 -1
- package/dist/src/components/generic/TextBox.js.map +1 -1
- package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
- package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
- package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
- package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
- package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
- package/dist/src/components/generic/loader/LargeLoader.js +31 -6
- package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
- package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
- package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
- package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
- package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
- package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
- package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
- package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
- package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
- package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
- package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
- package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
- package/dist/src/components/generic/print/NoPrint.js +11 -0
- package/dist/src/components/generic/print/NoPrint.js.map +1 -0
- package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
- package/dist/src/components/generic/print/PrintOnly.js +11 -0
- package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
- package/dist/src/components/graphics/AddCard.d.ts +7 -0
- package/dist/src/components/graphics/AddCard.js +28 -0
- package/dist/src/components/graphics/AddCard.js.map +1 -0
- package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
- package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
- package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
- package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
- package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
- package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
- package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
- package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
- package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
- package/dist/src/components/members/EditMyProfile.js +19 -21
- package/dist/src/components/members/EditMyProfile.js.map +1 -1
- package/dist/src/components/navigation/Header.js +29 -9
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/navigation/StepSelector.js +2 -1
- package/dist/src/components/navigation/StepSelector.js.map +1 -1
- package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
- package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
- package/dist/src/components/reservation/EmptyReservation.js +3 -3
- package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
- package/dist/src/components/reservation/ReservationItem.js +45 -33
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/reservation/ReservationList.d.ts +2 -2
- package/dist/src/components/reservation/ReservationList.js +1 -1
- package/dist/src/components/reservation/ReservationList.js.map +1 -1
- package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
- package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
- package/dist/src/components/steps/addons/AddonCard.js +10 -12
- package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
- package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
- package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
- package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
- package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
- package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
- package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
- package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
- package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePicker.js +9 -9
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
- package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
- package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
- package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +5 -11
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
- package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
- package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
- package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
- package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
- package/dist/src/components/steps/room/InactivityWindow.js +3 -5
- package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
- package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
- package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
- package/dist/src/components/steps/room/RatesNotFound.js +6 -3
- package/dist/src/components/steps/room/RatesNotFound.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/StepRoomNextStepButton.d.ts +2 -1
- package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
- package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
- package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
- package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
- package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
- package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
- package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.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/BESummaryPerkBlock.js +4 -1
- package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
- package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
- package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
- package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
- package/dist/src/contexts/ConfirmationFormContext.js +0 -3
- package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +4 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +2 -1
- package/dist/src/engines/BaseEngine.js +1 -1
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
- package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
- package/dist/src/errors/GetAvailabilityError.js +10 -3
- package/dist/src/errors/GetAvailabilityError.js.map +1 -1
- package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
- package/dist/src/hooks/HistoryConsistentPush.js +12 -0
- package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
- package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
- package/dist/src/hooks/Query.js +2 -6
- package/dist/src/hooks/Query.js.map +1 -1
- package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
- package/dist/src/hooks/UpdateQueryParameters.js +16 -0
- package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
- package/dist/src/hooks/VGSHooks.d.ts +11 -1
- package/dist/src/hooks/VGSHooks.js +26 -11
- package/dist/src/hooks/VGSHooks.js.map +1 -1
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mockApi/HotelAPI.d.ts +1 -1
- package/dist/src/mockApi/HotelAPI.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +11 -3
- package/dist/src/models/Api/HotelDTO.js +17 -8
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
- package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
- package/dist/src/models/AppQueryParameters.d.ts +14 -0
- package/dist/src/models/AppQueryParameters.js +19 -0
- package/dist/src/models/AppQueryParameters.js.map +1 -0
- package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
- package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
- package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
- package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
- package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
- package/dist/src/models/Client/Hotel/Company.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
- package/dist/src/models/Client/Hotel/Hotel.js +3 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +1 -1
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
- package/dist/src/models/Room/Filters/Filter.js.map +1 -1
- package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
- package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
- package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
- package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
- package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
- package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
- package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
- package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
- package/dist/src/pages/account/AccountRouter.js +7 -9
- package/dist/src/pages/account/AccountRouter.js.map +1 -1
- package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
- package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
- package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
- package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
- package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
- package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
- package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
- package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.js +40 -23
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js +10 -9
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
- package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +6 -6
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/Step.d.ts +2 -2
- package/dist/src/pages/steps/Step.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
- package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
- package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
- package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
- package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
- package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
- package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
- package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
- package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
- package/dist/src/providers/FeatureProvider.js +2 -0
- package/dist/src/providers/FeatureProvider.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
- package/dist/src/providers/RoomstayThemeEngine.js +4 -18
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
- package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
- package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
- package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
- package/dist/src/stories/EventCarousel.stories.js +236 -0
- package/dist/src/stories/EventCarousel.stories.js.map +1 -0
- package/dist/src/stories/RadioButton.stories.d.ts +3 -3
- package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
- package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
- package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +196 -8
- package/dist/src/translations/Translation.js +198 -10
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +198 -10
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Color.d.ts +3 -0
- package/dist/src/util/Color.js +21 -1
- package/dist/src/util/Color.js.map +1 -1
- package/dist/src/util/CurrencyHelper.d.ts +11 -3
- package/dist/src/util/CurrencyHelper.js +306 -5
- package/dist/src/util/CurrencyHelper.js.map +1 -1
- package/dist/src/util/EventsHelper.d.ts +11 -0
- package/dist/src/util/EventsHelper.js +43 -0
- package/dist/src/util/EventsHelper.js.map +1 -0
- package/dist/src/util/StringHelper.d.ts +2 -2
- package/dist/src/util/StringHelper.js +5 -4
- package/dist/src/util/StringHelper.js.map +1 -1
- package/dist/src/util/TextAlignment.d.ts +2 -1
- package/dist/src/util/TextAlignment.js +1 -0
- package/dist/src/util/TextAlignment.js.map +1 -1
- package/dist/src/util/Validation.d.ts +17 -13
- package/dist/src/util/Validation.js +34 -18
- package/dist/src/util/Validation.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
- package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
- package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
- package/dist/tests/jest/events/EventManager.test.js +101 -0
- package/dist/tests/jest/events/EventManager.test.js.map +1 -0
- package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
- package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
- package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
- package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
- package/dist/tests/jest/models/RoomRate.test.js +133 -0
- package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
- package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
- package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
- package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
- package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
- package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
- package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
- package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
- package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
- package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
- package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
- package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
- package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
- package/dist/tests/offline/entry/RSCompany.js +7 -2
- package/dist/tests/offline/entry/RSCompany.js.map +1 -1
- package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
- package/dist/tests/offline/entry/ReactWrapper.js +140 -0
- package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
- package/dist/tests/offline/entry/allEngines.d.ts +1 -0
- package/dist/tests/offline/entry/allEngines.js +50 -0
- package/dist/tests/offline/entry/allEngines.js.map +1 -0
- package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
- package/dist/tests/offline/entry/components/TestPicker.js +214 -0
- package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
- package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
- package/dist/tests/offline/entry/context/EngineContext.js +37 -0
- package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
- package/dist/tests/setupTests.d.ts +0 -0
- package/dist/tests/setupTests.js +12 -0
- package/dist/tests/setupTests.js.map +1 -0
- package/dist/vendors.bundle.js +1 -1
- package/package.json +3 -3
- package/dist/14.bundle.js +0 -1
- package/dist/399.bundle.js +0 -2
- package/dist/559.bundle.js +0 -1
- package/dist/848.bundle.js +0 -1
- package/dist/962.bundle.js +0 -1
- package/dist/src/components/temp/Login.d.ts +0 -2
- package/dist/src/components/temp/Login.js +0 -79
- package/dist/src/components/temp/Login.js.map +0 -1
- /package/dist/{399.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +0 -0
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
26
|
exports.ExistingCardPicker = void 0;
|
|
7
|
-
const react_1 =
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
8
28
|
const LoggedInUserHook_1 = require("../../../../hooks/LoggedInUserHook");
|
|
9
|
-
const react_2 = require("react");
|
|
10
29
|
const contexts_1 = require("../../../../contexts/index.js");
|
|
11
30
|
const MemberCardItem_1 = require("../../../pages/Account/Card/MemberCardItem");
|
|
12
31
|
/*
|
|
@@ -14,9 +33,9 @@ const MemberCardItem_1 = require("../../../pages/Account/Card/MemberCardItem");
|
|
|
14
33
|
*/
|
|
15
34
|
const ExistingCardPicker = (props) => {
|
|
16
35
|
const { user } = (0, LoggedInUserHook_1.useMember)();
|
|
17
|
-
const { cards } = (0,
|
|
18
|
-
const [selectedCardId, setSelectedCardId] = (0,
|
|
19
|
-
(0,
|
|
36
|
+
const { cards } = (0, react_1.useContext)(contexts_1.RoomstayMemberContext);
|
|
37
|
+
const [selectedCardId, setSelectedCardId] = (0, react_1.useState)();
|
|
38
|
+
(0, react_1.useEffect)(() => {
|
|
20
39
|
if ((user === null || user === void 0 ? void 0 : user.defaultCard) && cards) {
|
|
21
40
|
for (const card of cards) {
|
|
22
41
|
if (user.defaultCard === card.cardId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExistingCardPicker.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExistingCardPicker.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+D;AAC/D,+DAAqD;AAErD,iDAA2D;AAC3D,mFAAgF;AAMhF;;EAEE;AACK,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,EAAE;IAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,4BAAS,GAAE,CAAC;IAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,GAAkC,CAAC;IAEvF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,KAAI,KAAK,EAAE;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE;oBAClC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpC,OAAO;iBACV;aACJ;SACJ;QAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;YACf,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACtC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC9C,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACH;QACI,2CACK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC;YAEF,OAAO,8BAAC,+BAAc,IAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;QACtH,CAAC,CAAC,CACA,CACP,CACN,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,kBAAkB,sBAsC7B","sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport { RoomstayMemberContext } from '@frontend/contexts';\nimport { MemberCardItem } from '@/components/pages/Account/Card/MemberCardItem';\n\ntype ExistingCardPicker = {\n onCardSelected: (card: IRoomstayMemberCards) => void;\n};\n\n/*\n Component assumes that parent checks if member is already logged in\n*/\nexport const ExistingCardPicker = (props: ExistingCardPicker) => {\n const { user } = useMember();\n\n const { cards } = useContext(RoomstayMemberContext);\n const [selectedCardId, setSelectedCardId] = useState<IRoomstayMemberCards['cardId']>();\n\n useEffect(() => {\n if (user?.defaultCard && cards) {\n for (const card of cards) {\n if (user.defaultCard === card.cardId) {\n setSelectedCardId(user.defaultCard);\n return;\n }\n }\n }\n\n if (cards?.length) {\n setSelectedCardId(cards[0].cardId);\n }\n }, [user, cards]);\n\n const onSelectedCardChanged = (newCard: string) => {\n setSelectedCardId(newCard);\n };\n\n return (\n <>\n <div>\n {cards?.map((card, index) => {\n const onClickCard = () => {\n onSelectedCardChanged(card.cardId);\n };\n\n return <MemberCardItem key={index} selected={selectedCardId === card.cardId} onClick={onClickCard} item={card} />;\n })}\n </div>\n </>\n );\n};\n"]}
|
package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const
|
|
3
|
-
export default _default;
|
|
2
|
+
export declare const StepConfirmationVGSPaymentInput: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js
CHANGED
|
@@ -26,8 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
|
|
30
|
-
const
|
|
29
|
+
exports.StepConfirmationVGSPaymentInput = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
31
|
const InputGroup_1 = __importDefault(require("../../../generic/InputGroup/InputGroup"));
|
|
32
32
|
const AutoAutoHeight_1 = __importDefault(require("../../../../animations/AutoAutoHeight"));
|
|
33
33
|
const Alert_1 = __importStar(require("../../../generic/Alert"));
|
|
@@ -38,13 +38,11 @@ const Translation_1 = require("translations/Translation");
|
|
|
38
38
|
const HotelDTO_1 = require("../../../../models/Api/HotelDTO");
|
|
39
39
|
const hooks_1 = require("../../../../hooks/index.js");
|
|
40
40
|
const VGSHooks_1 = require("../../../../hooks/VGSHooks");
|
|
41
|
-
const ExistingCardPicker_1 = require("./ExistingCardPicker");
|
|
42
41
|
const AcceptablePaymentCard_1 = __importDefault(require("./AcceptablePaymentCard"));
|
|
43
|
-
function
|
|
42
|
+
exports.StepConfirmationVGSPaymentInput = (0, react_1.forwardRef)(function ForwardedStepConfirmationVGSPaymentInput(props, ref) {
|
|
44
43
|
var _a;
|
|
45
44
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
46
|
-
const
|
|
47
|
-
const [errors, setErrors] = (0, react_2.useState)({});
|
|
45
|
+
const [errors, setErrors] = (0, react_1.useState)({});
|
|
48
46
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
49
47
|
const { focusElement } = (0, hooks_1.useWindowScroll)();
|
|
50
48
|
const vgsInputCss = {
|
|
@@ -55,7 +53,7 @@ function StepConfirmationPaymentDetails(props, ref) {
|
|
|
55
53
|
opacity: 1,
|
|
56
54
|
},
|
|
57
55
|
};
|
|
58
|
-
const { fields: [cardNumber, nameOnCard, expirationDate, securityCode],
|
|
56
|
+
const { fields: [cardNumber, nameOnCard, expirationDate, securityCode], vgsForm, } = (0, VGSHooks_1.useVgsCollect)([
|
|
59
57
|
{
|
|
60
58
|
label: t(Translation_1.Translation.Step.Confirmation.Inputs.CardNumber),
|
|
61
59
|
name: 'credit-card',
|
|
@@ -107,29 +105,29 @@ function StepConfirmationPaymentDetails(props, ref) {
|
|
|
107
105
|
let name = '';
|
|
108
106
|
switch (input) {
|
|
109
107
|
case 'credit-card':
|
|
110
|
-
name =
|
|
108
|
+
name = t(Translation_1.Translation.Step.Confirmation.Inputs.CardNumber);
|
|
111
109
|
break;
|
|
112
110
|
case 'expiration-date':
|
|
113
|
-
name =
|
|
111
|
+
name = t(Translation_1.Translation.Step.Confirmation.Inputs.CardExpiry);
|
|
114
112
|
break;
|
|
115
113
|
case 'security-code':
|
|
116
|
-
name =
|
|
114
|
+
name = t(Translation_1.Translation.Step.Confirmation.Inputs.SecurityCode);
|
|
117
115
|
break;
|
|
118
116
|
default:
|
|
119
|
-
name =
|
|
117
|
+
name = t(Translation_1.Translation.Step.Confirmation.Inputs.NameOnCard);
|
|
120
118
|
break;
|
|
121
119
|
}
|
|
122
120
|
newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];
|
|
123
121
|
});
|
|
124
122
|
setErrors(newErrors);
|
|
125
123
|
};
|
|
126
|
-
(0,
|
|
124
|
+
(0, react_1.useEffect)(() => {
|
|
127
125
|
var _a, _b;
|
|
128
126
|
if (errors && Object.keys(errors).length !== 0 && ((_a = cardNumber === null || cardNumber === void 0 ? void 0 : cardNumber.ref) === null || _a === void 0 ? void 0 : _a.current)) {
|
|
129
127
|
focusElement((_b = cardNumber === null || cardNumber === void 0 ? void 0 : cardNumber.ref) === null || _b === void 0 ? void 0 : _b.current);
|
|
130
128
|
}
|
|
131
129
|
}, [errors]);
|
|
132
|
-
(0,
|
|
130
|
+
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
133
131
|
getTokenizedCode: () => new Promise((resolve, reject) => {
|
|
134
132
|
if (vgsForm) {
|
|
135
133
|
vgsForm.submit('/post', {
|
|
@@ -141,10 +139,10 @@ function StepConfirmationPaymentDetails(props, ref) {
|
|
|
141
139
|
if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {
|
|
142
140
|
setErrorsOnFaults({
|
|
143
141
|
'expiration-date': {
|
|
144
|
-
errorMessages: [
|
|
142
|
+
errorMessages: [t(Translation_1.Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],
|
|
145
143
|
},
|
|
146
144
|
});
|
|
147
|
-
reject(
|
|
145
|
+
reject(t(Translation_1.Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));
|
|
148
146
|
return;
|
|
149
147
|
}
|
|
150
148
|
const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));
|
|
@@ -166,7 +164,7 @@ function StepConfirmationPaymentDetails(props, ref) {
|
|
|
166
164
|
}
|
|
167
165
|
}),
|
|
168
166
|
}));
|
|
169
|
-
const formRef = (0,
|
|
167
|
+
const formRef = (0, react_1.useRef)(null);
|
|
170
168
|
const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];
|
|
171
169
|
const cardTypes = ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.paymentCardTypes) !== null && _a !== void 0 ? _a : [])
|
|
172
170
|
.map((card) => {
|
|
@@ -180,34 +178,28 @@ function StepConfirmationPaymentDetails(props, ref) {
|
|
|
180
178
|
};
|
|
181
179
|
})
|
|
182
180
|
.filter((obj) => obj);
|
|
183
|
-
const onMemberCardSelected = (card) => {
|
|
184
|
-
// TODO:
|
|
185
|
-
};
|
|
186
181
|
return (react_1.default.createElement("div", null,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
182
|
+
inputNames.map((name) => {
|
|
183
|
+
const errorMessage = errors[name];
|
|
184
|
+
return (react_1.default.createElement(AutoAutoHeight_1.default, { open: !!errorMessage, key: name },
|
|
185
|
+
react_1.default.createElement("div", { className: "u-flex" },
|
|
186
|
+
react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Danger, icon: Icon_1.IconType.Error },
|
|
187
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, errorMessage)))));
|
|
188
|
+
}),
|
|
189
|
+
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
190
|
+
react_1.default.createElement(AcceptablePaymentCard_1.default, { isCurrent: (cardKey) => {
|
|
191
|
+
var _a;
|
|
192
|
+
return cardNumber.state.cardType !== null && ((_a = cardTypes[cardKey]) === null || _a === void 0 ? void 0 : _a.name) === cardNumber.state.cardType;
|
|
193
|
+
}, isDefault: (cardKey) => {
|
|
194
|
+
return cardNumber.state.cardType === null;
|
|
195
|
+
} })),
|
|
196
|
+
react_1.default.createElement("form", { ref: formRef },
|
|
197
|
+
react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
|
|
198
|
+
react_1.default.createElement("div", { className: cardNumber.getClasses(), ref: cardNumber.ref }),
|
|
204
199
|
react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
|
|
205
|
-
react_1.default.createElement("div", { className:
|
|
206
|
-
react_1.default.createElement(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
react_1.default.createElement("div", { className: nameOnCard.getClasses(), ref: nameOnCard.ref }))))));
|
|
211
|
-
}
|
|
212
|
-
exports.default = (0, react_2.forwardRef)(StepConfirmationPaymentDetails);
|
|
200
|
+
react_1.default.createElement("div", { className: expirationDate.getClasses(), ref: expirationDate.ref }),
|
|
201
|
+
react_1.default.createElement("div", { className: securityCode.getClasses(), ref: securityCode.ref }))),
|
|
202
|
+
react_1.default.createElement(InputGroup_1.default, { dimensions: "1" },
|
|
203
|
+
react_1.default.createElement("div", { className: nameOnCard.getClasses(), ref: nameOnCard.ref })))));
|
|
204
|
+
});
|
|
213
205
|
//# sourceMappingURL=StepConfirmationPaymentDetails.js.map
|
package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import PaymentCard from '@/models/PaymentCard';\nimport React from 'react';\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport { useCurrentHotel, useMember, useWindowScroll } from '@frontend/hooks';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport { ExistingCardPicker } from './ExistingCardPicker';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\n\ntype VGSInputType = 'card-number' | 'text' | 'card-expiration-date' | 'card-security-code';\n\nfunction StepConfirmationPaymentDetails(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const member = useMember();\n\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n triggerFieldUpdate,\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = 'Credit Card';\n break;\n case 'expiration-date':\n name = 'Expiration Date';\n break;\n case 'security-code':\n name = 'Security Code';\n break;\n default:\n name = 'Card Name';\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = JSON.parse(response.data);\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: ['Invalid - it must be in the format MM / YY or MM / YYYY'],\n },\n });\n reject('invalid expiration date');\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card: string) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n const onMemberCardSelected = (card: IRoomstayMemberCards) => {\n // TODO:\n };\n\n return (\n <div>\n <div>{!!member.user && <ExistingCardPicker onCardSelected={onMemberCardSelected} />}</div>\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n </div>\n );\n}\n\nexport default forwardRef(StepConfirmationPaymentDetails);\n"]}
|
|
1
|
+
{"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import PaymentCard from '@/models/PaymentCard';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport { useCurrentHotel, useWindowScroll } from '@frontend/hooks';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\n\nexport const StepConfirmationVGSPaymentInput = forwardRef(function ForwardedStepConfirmationVGSPaymentInput(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = t(Translation.Step.Confirmation.Inputs.CardNumber);\n break;\n case 'expiration-date':\n name = t(Translation.Step.Confirmation.Inputs.CardExpiry);\n break;\n case 'security-code':\n name = t(Translation.Step.Confirmation.Inputs.SecurityCode);\n break;\n default:\n name = t(Translation.Step.Confirmation.Inputs.NameOnCard);\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = JSON.parse(response.data);\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: [t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],\n },\n });\n reject(t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n return (\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n );\n});\n"]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const RadioButtonGroup_1 = __importDefault(require("../../generic/RadioButtonGroup/RadioButtonGroup"));
|
|
31
|
+
const core_1 = require("@roomstay/core");
|
|
32
|
+
const Translation_1 = require("../../../translations/Translation");
|
|
33
|
+
const StepConfirmationPaymentDetails_1 = require("./PaymentDetails/StepConfirmationPaymentDetails");
|
|
34
|
+
const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
|
|
35
|
+
const Text_1 = __importDefault(require("../../generic/Text"));
|
|
36
|
+
const Color_1 = require("../../../util/Color");
|
|
37
|
+
const Icon_1 = __importStar(require("../../generic/Icon/Icon"));
|
|
38
|
+
const PlanpayPaymentMethod_1 = require("./PlanpayPaymentMethod");
|
|
39
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
40
|
+
const react_hook_form_1 = require("react-hook-form");
|
|
41
|
+
const react_i18next_1 = require("react-i18next");
|
|
42
|
+
const hooks_1 = require("../../../hooks");
|
|
43
|
+
const contexts_1 = require("../../../contexts");
|
|
44
|
+
const InlinePaymentOption_1 = __importDefault(require("../../generic/PaymentCard/InlinePaymentOption"));
|
|
45
|
+
const PaymentInformation = ({ tokenizerRef, onChangeCb }) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
48
|
+
const methods = (0, react_hook_form_1.useFormContext)();
|
|
49
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
50
|
+
const basketContext = (0, contexts_1.useBasket)();
|
|
51
|
+
const { cards = [], roomstayMember } = (0, contexts_1.useMemberContext)();
|
|
52
|
+
const defaultCard = (0, react_1.useMemo)(() => cards.find((card) => card.cardId === (roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.defaultCard)), [cards, roomstayMember]);
|
|
53
|
+
const paymentMethod = methods.watch('paymentMethod');
|
|
54
|
+
const vgsCardInputOption = {
|
|
55
|
+
value: core_1.EBookingPaymentMethod.Card,
|
|
56
|
+
label: react_1.default.createElement(InlinePaymentOption_1.default, { active: paymentMethod === core_1.EBookingPaymentMethod.Card }),
|
|
57
|
+
renderContent: () => react_1.default.createElement(StepConfirmationPaymentDetails_1.StepConfirmationVGSPaymentInput, { ref: tokenizerRef }),
|
|
58
|
+
};
|
|
59
|
+
const options = [];
|
|
60
|
+
if (hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods.includes(core_1.EBookingPaymentMethod.Card)) {
|
|
61
|
+
let defaultCardOption;
|
|
62
|
+
// Reason this is split up is in case someone doesn't have a default card selected
|
|
63
|
+
// We still want to select the first card they have, if they have any.
|
|
64
|
+
if (cards.length) {
|
|
65
|
+
const selectedMemberCard = defaultCard ? defaultCard : cards[0];
|
|
66
|
+
defaultCardOption = {
|
|
67
|
+
value: selectedMemberCard.cardId,
|
|
68
|
+
label: react_1.default.createElement(InlinePaymentOption_1.default, { card: selectedMemberCard }),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
defaultCardOption = vgsCardInputOption;
|
|
73
|
+
}
|
|
74
|
+
const selectableStoredCardOptions = [];
|
|
75
|
+
if (cards.length) {
|
|
76
|
+
for (const memberCard of cards) {
|
|
77
|
+
selectableStoredCardOptions.push({
|
|
78
|
+
value: memberCard.cardId,
|
|
79
|
+
label: react_1.default.createElement(InlinePaymentOption_1.default, { card: memberCard }),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
selectableStoredCardOptions.push(vgsCardInputOption);
|
|
83
|
+
}
|
|
84
|
+
options.push(Object.assign(Object.assign({}, defaultCardOption), { options: selectableStoredCardOptions.length > 0 ? selectableStoredCardOptions : undefined }));
|
|
85
|
+
}
|
|
86
|
+
if ((hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods.includes(core_1.EBookingPaymentMethod.Planpay)) &&
|
|
87
|
+
((_a = hotel === null || hotel === void 0 ? void 0 : hotel.planpay) === null || _a === void 0 ? void 0 : _a.minDaysShowPlanpay) &&
|
|
88
|
+
(0, dayjs_1.default)(basketContext.startDate).diff((0, dayjs_1.default)(), 'day') > ((_b = hotel === null || hotel === void 0 ? void 0 : hotel.planpay) === null || _b === void 0 ? void 0 : _b.minDaysShowPlanpay)) {
|
|
89
|
+
options.push({
|
|
90
|
+
value: core_1.EBookingPaymentMethod.Planpay,
|
|
91
|
+
label: (react_1.default.createElement("div", { className: "u-flex u-flex-align-center" },
|
|
92
|
+
react_1.default.createElement("div", null, t(Translation_1.Translation.Step.Confirmation.PlanpayLabel)),
|
|
93
|
+
react_1.default.createElement("div", { className: "u-flex u-flex-align-center u-marg-left--light", style: {
|
|
94
|
+
borderRadius: '24px',
|
|
95
|
+
overflow: 'hidden',
|
|
96
|
+
} },
|
|
97
|
+
react_1.default.createElement("img", { height: 16, src: RoomstayThemeEngine_1.default.getImageAssetUrl('planpay-logo-small.svg'), alt: "" })),
|
|
98
|
+
!methods.formState.isValid && (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Graphite, className: "u-flex u-flex-align-center", style: {
|
|
99
|
+
color: '#313131',
|
|
100
|
+
fontSize: 10,
|
|
101
|
+
} },
|
|
102
|
+
react_1.default.createElement(Icon_1.default, { color: Color_1.Color.DarkGrey, icon: Icon_1.IconType.Info, className: "u-marg-right--lighter u-marg-left--light" }),
|
|
103
|
+
t(Translation_1.Translation.Step.Confirmation.PlanpayHelperText))))),
|
|
104
|
+
disabled: !methods.formState.isValid,
|
|
105
|
+
disabledReason: !methods.formState.isValid ? 'You must fill all the above details before proceeding with Planpay' : '',
|
|
106
|
+
renderContent: () => react_1.default.createElement(PlanpayPaymentMethod_1.PlanpayPaymentMethod, null),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return (react_1.default.createElement(react_hook_form_1.Controller, { control: methods.control, name: "paymentMethod", render: ({ field: { onChange, value } }) => {
|
|
110
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
111
|
+
react_1.default.createElement("div", null,
|
|
112
|
+
react_1.default.createElement(RadioButtonGroup_1.default, { options: options, value: value, onChange: (code) => {
|
|
113
|
+
onChange(code);
|
|
114
|
+
onChangeCb(code);
|
|
115
|
+
} }))));
|
|
116
|
+
} }));
|
|
117
|
+
};
|
|
118
|
+
exports.default = PaymentInformation;
|
|
119
|
+
//# sourceMappingURL=PaymentInformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentInformation.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentInformation.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, useMemo } from 'react';\nimport RadioButtonGroup, { IRadioButtonOption } from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport { Translation } from '@/translations/Translation';\nimport { StepConfirmationVGSPaymentInput } from '@/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport Text from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { PlanpayPaymentMethod } from '@/components/steps/confirmation/PlanpayPaymentMethod';\nimport dayjs from 'dayjs';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmationFormValues } from '@/models/Confirmation';\nimport { useCurrentHotel } from '@/hooks';\nimport { useBasket, useMemberContext } from '@/contexts';\nimport InlinePaymentOption from '@/components/generic/PaymentCard/InlinePaymentOption';\n\ninterface PaymentInformationProps {\n tokenizerRef: any;\n onChangeCb: (code: string) => void;\n}\n\nconst PaymentInformation: FC<PaymentInformationProps> = ({ tokenizerRef, onChangeCb }) => {\n const { t } = useTranslation();\n const methods = useFormContext<ConfirmationFormValues>();\n const { hotel } = useCurrentHotel();\n const basketContext = useBasket();\n\n const { cards = [], roomstayMember } = useMemberContext();\n const defaultCard = useMemo(() => cards.find((card) => card.cardId === roomstayMember?.defaultCard), [cards, roomstayMember]);\n\n const paymentMethod = methods.watch('paymentMethod');\n const vgsCardInputOption: IRadioButtonOption = {\n value: EBookingPaymentMethod.Card,\n label: <InlinePaymentOption active={paymentMethod === EBookingPaymentMethod.Card} />,\n renderContent: () => <StepConfirmationVGSPaymentInput ref={tokenizerRef} />,\n };\n\n const options: IRadioButtonOption[] = [];\n if (hotel?.paymentMethods.includes(EBookingPaymentMethod.Card)) {\n let defaultCardOption: IRadioButtonOption;\n // Reason this is split up is in case someone doesn't have a default card selected\n // We still want to select the first card they have, if they have any.\n if (cards.length) {\n const selectedMemberCard = defaultCard ? defaultCard : cards[0];\n\n defaultCardOption = {\n value: selectedMemberCard.cardId,\n label: <InlinePaymentOption card={selectedMemberCard} />,\n };\n } else {\n defaultCardOption = vgsCardInputOption;\n }\n\n const selectableStoredCardOptions = [];\n\n if (cards.length) {\n for (const memberCard of cards) {\n selectableStoredCardOptions.push({\n value: memberCard.cardId,\n label: <InlinePaymentOption card={memberCard} />,\n });\n }\n selectableStoredCardOptions.push(vgsCardInputOption);\n }\n\n options.push({\n ...defaultCardOption,\n options: selectableStoredCardOptions.length > 0 ? selectableStoredCardOptions : undefined,\n });\n }\n\n if (\n hotel?.paymentMethods.includes(EBookingPaymentMethod.Planpay) &&\n hotel?.planpay?.minDaysShowPlanpay &&\n dayjs(basketContext.startDate).diff(dayjs(), 'day') > hotel?.planpay?.minDaysShowPlanpay\n ) {\n options.push({\n value: EBookingPaymentMethod.Planpay,\n label: (\n <div className=\"u-flex u-flex-align-center\">\n <div>{t(Translation.Step.Confirmation.PlanpayLabel)}</div>\n <div\n className=\"u-flex u-flex-align-center u-marg-left--light\"\n style={{\n borderRadius: '24px',\n overflow: 'hidden',\n }}\n >\n <img height={16} src={RoomstayThemeEngine.getImageAssetUrl('planpay-logo-small.svg')} alt=\"\" />\n </div>\n {!methods.formState.isValid && (\n <Text\n color={Color.Graphite}\n className=\"u-flex u-flex-align-center\"\n style={{\n color: '#313131',\n fontSize: 10,\n }}\n >\n <Icon color={Color.DarkGrey} icon={IconType.Info} className=\"u-marg-right--lighter u-marg-left--light\" />\n {t(Translation.Step.Confirmation.PlanpayHelperText)}\n </Text>\n )}\n </div>\n ),\n disabled: !methods.formState.isValid,\n disabledReason: !methods.formState.isValid ? 'You must fill all the above details before proceeding with Planpay' : '',\n renderContent: () => <PlanpayPaymentMethod />,\n });\n }\n\n return (\n <Controller\n control={methods.control}\n name=\"paymentMethod\"\n render={({ field: { onChange, value } }) => {\n return (\n <>\n <div>\n <RadioButtonGroup\n options={options}\n value={value}\n onChange={(code) => {\n onChange(code);\n onChangeCb(code);\n }}\n />\n </div>\n </>\n );\n }}\n />\n );\n};\n\nexport default PaymentInformation;\n"]}
|
|
@@ -26,13 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const react_1 =
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
30
|
const SimpleModal_1 = __importStar(require("../../generic/modal/SimpleModal"));
|
|
31
31
|
const BEButton_1 = __importDefault(require("../../generic/BEButton"));
|
|
32
32
|
const Currency_1 = __importDefault(require("../../generic/Currency"));
|
|
33
33
|
const Text_1 = __importStar(require("../../generic/Text"));
|
|
34
34
|
const Color_1 = require("../../../util/Color");
|
|
35
|
-
const react_2 = require("react");
|
|
36
35
|
const contexts_1 = require("../../../contexts/index.js");
|
|
37
36
|
const Headline_1 = __importDefault(require("../../generic/Headline"));
|
|
38
37
|
const LineBreak_1 = __importDefault(require("../../generic/LineBreak"));
|
|
@@ -40,11 +39,14 @@ const Icon_1 = require("../../generic/Icon/Icon");
|
|
|
40
39
|
const Countdown_1 = __importDefault(require("../../generic/Countdown"));
|
|
41
40
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
42
41
|
const Pill_1 = __importStar(require("../../generic/Pill"));
|
|
42
|
+
const react_i18next_1 = require("react-i18next");
|
|
43
|
+
const Translation_1 = require("../../../translations/Translation");
|
|
43
44
|
function StepConfirmationCheckoutDifferencesModal(props) {
|
|
44
45
|
var _a, _b;
|
|
45
|
-
const basketContext = (0,
|
|
46
|
-
const
|
|
47
|
-
(0,
|
|
46
|
+
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
47
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
48
|
+
const [endTime, setEndTime] = (0, react_1.useState)((0, dayjs_1.default)().add(14, 'minute'));
|
|
49
|
+
(0, react_1.useEffect)(() => {
|
|
48
50
|
var _a;
|
|
49
51
|
let cancelled = false;
|
|
50
52
|
let timeout = null;
|
|
@@ -61,16 +63,16 @@ function StepConfirmationCheckoutDifferencesModal(props) {
|
|
|
61
63
|
};
|
|
62
64
|
}, [props.differences.length, (_a = props.warnings) === null || _a === void 0 ? void 0 : _a.length]);
|
|
63
65
|
const mobileFooter = (react_1.default.createElement("div", { className: "u-flex" },
|
|
64
|
-
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, onClick: props.onClose, isLoading: props.isLoading },
|
|
65
|
-
react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", onClick: props.onProceed, isLoading: props.isLoading },
|
|
66
|
-
return (react_1.default.createElement(SimpleModal_1.default, { open: !!props.differences.length || !!((_b = props.warnings) === null || _b === void 0 ? void 0 : _b.length), title:
|
|
66
|
+
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, onClick: props.onClose, isLoading: props.isLoading }, t(Translation_1.Translation.Step.Confirmation.TakeMeBack)),
|
|
67
|
+
react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", onClick: props.onProceed, isLoading: props.isLoading }, t(Translation_1.Translation.Step.Confirmation.ContinueWithReservation))));
|
|
68
|
+
return (react_1.default.createElement(SimpleModal_1.default, { open: !!props.differences.length || !!((_b = props.warnings) === null || _b === void 0 ? void 0 : _b.length), title: t(Translation_1.Translation.Step.Confirmation.YourTotalPriceHasChanged), mobileFooter: mobileFooter, desktopFooter: react_1.default.createElement("div", { className: "u-marg-heavy u-marg@m-" }, mobileFooter), size: SimpleModal_1.SimpleModalSize.Small, alignCenter: true },
|
|
67
69
|
react_1.default.createElement("div", { className: "u-marg-heavy u-marg@m-" },
|
|
68
70
|
react_1.default.createElement("div", { className: "row" },
|
|
69
71
|
react_1.default.createElement("div", { className: "col-md-8" },
|
|
70
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
72
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Confirmation.ConfirmationCheckoutTitle))),
|
|
71
73
|
react_1.default.createElement("div", { className: "col-md-4" },
|
|
72
74
|
react_1.default.createElement(Pill_1.default, { icon: Icon_1.IconType.Time, type: Pill_1.PillType.Primary },
|
|
73
|
-
react_1.default.createElement("span", { className: "u-marg-right--light" },
|
|
75
|
+
react_1.default.createElement("span", { className: "u-marg-right--light" }, t(Translation_1.Translation.Step.Confirmation.RevertsIn)),
|
|
74
76
|
react_1.default.createElement(Countdown_1.default, { endTimeDate: endTime })))),
|
|
75
77
|
react_1.default.createElement(LineBreak_1.default, null),
|
|
76
78
|
!!(props.differences && props.differences.length) &&
|
package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationCheckoutDifferencesModal.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"StepConfirmationCheckoutDifferencesModal.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport BEButton from '@/components/generic/BEButton';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { BasketContext } from '@frontend/contexts';\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Countdown from '@/components/generic/Countdown';\nimport dayjs from 'dayjs';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '@/translations/Translation';\n\ninterface StepConfirmationCheckoutDifferencesModalProps {\n differences: BasketRowDifferences[];\n warnings: string[];\n\n onClose: () => void;\n onProceed: () => void;\n isLoading?: boolean;\n}\n\nexport default function StepConfirmationCheckoutDifferencesModal(props: StepConfirmationCheckoutDifferencesModalProps) {\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n\n const [endTime, setEndTime] = useState(dayjs().add(14, 'minute'));\n\n useEffect(() => {\n let cancelled = false;\n let timeout: any = null;\n\n if (!!props.differences.length || !!props.warnings?.length) {\n timeout = setTimeout(() => {\n if (!cancelled) {\n props.onClose();\n }\n }, 740000);\n }\n\n return () => {\n cancelled = true;\n clearTimeout(timeout);\n };\n }, [props.differences.length, props.warnings?.length]);\n\n const mobileFooter = (\n <div className=\"u-flex\">\n <BEButton isText size=\"small\" icon={IconType.ArrowLeft} onClick={props.onClose} isLoading={props.isLoading}>\n {t(Translation.Step.Confirmation.TakeMeBack)}\n </BEButton>\n <BEButton primary filled icon={IconType.ArrowRight} iconPosition=\"right\" onClick={props.onProceed} isLoading={props.isLoading}>\n {t(Translation.Step.Confirmation.ContinueWithReservation)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n open={!!props.differences.length || !!props.warnings?.length}\n title={t(Translation.Step.Confirmation.YourTotalPriceHasChanged)}\n mobileFooter={mobileFooter}\n desktopFooter={<div className=\"u-marg-heavy u-marg@m-\">{mobileFooter}</div>}\n size={SimpleModalSize.Small}\n alignCenter\n >\n <div className=\"u-marg-heavy u-marg@m-\">\n <div className=\"row\">\n <div className=\"col-md-8\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.ConfirmationCheckoutTitle)}</Text>\n </div>\n <div className=\"col-md-4\">\n <Pill icon={IconType.Time} type={PillType.Primary}>\n <span className=\"u-marg-right--light\">{t(Translation.Step.Confirmation.RevertsIn)}</span>\n <Countdown endTimeDate={endTime} />\n </Pill>\n </div>\n </div>\n <LineBreak />\n {!!(props.differences && props.differences.length) &&\n props.differences.map((difference) => {\n const basketRow = basketContext.getAllValidRows().find((row) => row.getID() === difference.id);\n\n return (\n <div key={difference.id}>\n {!!basketRow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline>{basketRow.getRoom().name}</Headline>\n </div>\n <Text>{basketRow.getRate()?.name}</Text>\n </div>\n )}\n <div className=\"u-flex u-marg-bottom--light\">\n <Text type={TextType.Body}>\n <strong>Displayed price:</strong>\n </Text>\n <Text color={Color.Alert}>\n <Currency>{difference.totalPrice?.before}</Currency>\n </Text>\n </div>\n <div className=\"u-flex\">\n <Text type={TextType.Body}>\n <strong>Actual price:</strong>\n </Text>\n <Text color={Color.Success}>\n <Currency>{difference.totalPrice?.after}</Currency>\n </Text>\n </div>\n <LineBreak />\n </div>\n );\n })}\n {!!(props.warnings && props.warnings.length) &&\n props.warnings.map((warning: string, index: number) => {\n return <Text key={index}>{warning}</Text>;\n })}\n </div>\n </SimpleModal>\n );\n}\n"]}
|