@roomstay/frontend 2.1.33 → 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 +1 -1
- 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 -2
- 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 -2
- 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/559.bundle.js +0 -1
- package/dist/848.bundle.js +0 -1
- package/dist/962.bundle.js +0 -1
- package/dist/main.bundle.js.LICENSE.txt +0 -5
- 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/test.bundle.js.LICENSE.txt +0 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BaseAPI from './BaseAPI';
|
|
2
|
-
import HotelDTO from '../models/Api/HotelDTO';
|
|
2
|
+
import { HotelDTO } from '../models/Api/HotelDTO';
|
|
3
3
|
import { Language } from '../providers/LanguageProvider';
|
|
4
4
|
import { Hotel } from '../models/Client/Hotel/Hotel';
|
|
5
5
|
import { HotelOverrideDTO } from '../models/Api/HotelOverrideDTO';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAEzD,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEK,cAAS,GAAG,CAAO,IAAc,EAAE,KAAa,EAAqB,EAAE;YAC1E,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AA1CD,2BA0CC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport HotelDTO from '@/models/Api/HotelDTO';\nimport { Language } from '@/providers/LanguageProvider';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n\n public fetchData = async (lang: Language, hotel?: Hotel): Promise<HotelDTO> => {\n const hotelID = hotel?.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAEzD,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEK,cAAS,GAAG,CAAO,IAAc,EAAE,KAAa,EAAqB,EAAE;YAC1E,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AA1CD,2BA0CC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport { Language } from '@/providers/LanguageProvider';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n\n public fetchData = async (lang: Language, hotel?: Hotel): Promise<HotelDTO> => {\n const hotelID = hotel?.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n}\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import BaseAPI from './BaseAPI';
|
|
2
2
|
import BasketRow from '../models/BasketRow';
|
|
3
3
|
import UserProfile from '../models/UserProfile';
|
|
4
|
-
import PaymentCard from '../models/PaymentCard';
|
|
5
4
|
import ReservationsDTO from '../models/Api/ReservationsDTO';
|
|
6
5
|
import BasketAddonRow from '../models/BasketAddonRow';
|
|
7
6
|
import { IBookingPayment } from '@roomstay/core';
|
|
@@ -9,11 +8,6 @@ export declare enum EPaymentMethod {
|
|
|
9
8
|
PLANPAY = "Planpay",
|
|
10
9
|
CARD = "Card"
|
|
11
10
|
}
|
|
12
|
-
export interface IPayment {
|
|
13
|
-
Type: EPaymentMethod;
|
|
14
|
-
PlanpayCheckoutId?: string;
|
|
15
|
-
PaymentCard?: PaymentCard;
|
|
16
|
-
}
|
|
17
11
|
export default class ReservationAPI extends BaseAPI {
|
|
18
12
|
private storedReservations;
|
|
19
13
|
bookNow: (basketRows: BasketRow[], userProfiles: UserProfile[], payment: IBookingPayment, addonRows: BasketAddonRow[], comments: string, hotelId: string, specialReq?: string | undefined) => Promise<ReservationsDTO>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqD;
|
|
1
|
+
{"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport BasketRow from '@/models/BasketRow';\nimport UserProfile from '@/models/UserProfile';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { IBookingPayment } from '@roomstay/core';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n specialReq: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n RoomType: row.getRoom().code,\n RatePlan: row.getRate()?.code,\n PromoCode: row.getPromoCode(),\n Adults: row.getAdults(),\n Children: row.getChildren(),\n CheckInDate: row.getStartDate().format('YYYY-MM-DD'),\n CheckOutDate: row.getEndDate().format('YYYY-MM-DD'),\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n Code: addon.code,\n StartDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.RatePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.StartTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.Quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.Adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.Children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.PricingType = addon.pricingType;\n }\n\n return response;\n });\n\n return this.post(\n APIEndpoint.Reservations,\n {\n Rooms: rooms,\n Services: addons,\n SpecialRequest: specialReq,\n Comments: comments,\n Profiles: userProfiles,\n Payment: payment,\n },\n hotelId\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email: encodeURIComponent(email) }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email: encodeURIComponent(email) }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getEventsFromHotelId = exports.getEventsForCity = void 0;
|
|
16
|
+
const BaseAPI_1 = __importDefault(require("../BaseAPI"));
|
|
17
|
+
const cachedCityEvents = {};
|
|
18
|
+
const getEventsForCity = (city) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
+
const headers = yield BaseAPI_1.default.getBaseHeaders();
|
|
20
|
+
if (cachedCityEvents[city]) {
|
|
21
|
+
return cachedCityEvents[city];
|
|
22
|
+
}
|
|
23
|
+
cachedCityEvents[city] = (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
try {
|
|
25
|
+
const response = yield fetch(`${EVENTS_API_URL}?city=${city}`, { headers });
|
|
26
|
+
const responseJson = yield response.json();
|
|
27
|
+
return responseJson.data;
|
|
28
|
+
}
|
|
29
|
+
catch (ex) {
|
|
30
|
+
console.log(`Error fetching events for ${city}: `, ex);
|
|
31
|
+
}
|
|
32
|
+
return [];
|
|
33
|
+
}))();
|
|
34
|
+
return cachedCityEvents[city];
|
|
35
|
+
});
|
|
36
|
+
exports.getEventsForCity = getEventsForCity;
|
|
37
|
+
const cachedHotelEvents = {};
|
|
38
|
+
const getEventsFromHotelId = (hotelId, unixStartTime) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
const hotelEventKey = hotelId + unixStartTime;
|
|
40
|
+
const headers = yield BaseAPI_1.default.getBaseHeaders();
|
|
41
|
+
if (cachedHotelEvents[hotelEventKey]) {
|
|
42
|
+
return cachedHotelEvents[hotelEventKey];
|
|
43
|
+
}
|
|
44
|
+
cachedHotelEvents[hotelEventKey] = (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
try {
|
|
46
|
+
const response = yield fetch(`${EVENTS_API_URL}hotel/${hotelId}?${unixStartTime
|
|
47
|
+
? new URLSearchParams({
|
|
48
|
+
unixStartTime: unixStartTime === null || unixStartTime === void 0 ? void 0 : unixStartTime.toString(),
|
|
49
|
+
})
|
|
50
|
+
: ''}`, { headers });
|
|
51
|
+
const responseJson = yield response.json();
|
|
52
|
+
return responseJson.data;
|
|
53
|
+
}
|
|
54
|
+
catch (ex) {
|
|
55
|
+
console.log(`Error fetching events for hotelID ${hotelId}: `, ex);
|
|
56
|
+
throw new Error();
|
|
57
|
+
}
|
|
58
|
+
}))();
|
|
59
|
+
return cachedHotelEvents[hotelEventKey];
|
|
60
|
+
});
|
|
61
|
+
exports.getEventsFromHotelId = getEventsFromHotelId;
|
|
62
|
+
//# sourceMappingURL=EventsServiceAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventsServiceAPI.js","sourceRoot":"/","sources":["src/api/events-service/EventsServiceAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4DAAoC;AAIpC,MAAM,gBAAgB,GAAyE,EAAE,CAAC;AAE3F,MAAM,gBAAgB,GAAG,CAAO,IAAY,EAA6B,EAAE;IAC9E,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,cAAc,EAAE,CAAC;IAE/C,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;QACxB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAS,EAAE;QACjC,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,SAAS,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAE5E,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,OAAO,YAAY,CAAC,IAAI,CAAC;SAC5B;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;SAC1D;QAED,OAAO,EAAE,CAAC;IACd,CAAC,CAAA,CAAC,EAAE,CAAC;IAEL,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAA,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B;AAEF,MAAM,iBAAiB,GAAoE,EAAE,CAAC;AACvF,MAAM,oBAAoB,GAAG,CAAO,OAAe,EAAE,aAAsB,EAA6B,EAAE;IAC7G,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,cAAc,EAAE,CAAC;IAE/C,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE;QAClC,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;KAC3C;IAED,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,GAAS,EAAE;QAC3C,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,GAAG,cAAc,SAAS,OAAO,IAC7B,aAAa;gBACT,CAAC,CAAC,IAAI,eAAe,CAAC;oBAChB,aAAa,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE;iBAC3C,CAAC;gBACJ,CAAC,CAAC,EACV,EAAE,EACF,EAAE,OAAO,EAAE,CACd,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,OAAO,YAAY,CAAC,IAAI,CAAC;SAC5B;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YAElE,MAAM,IAAI,KAAK,EAAE,CAAC;SACrB;IACL,CAAC,CAAA,CAAC,EAAE,CAAC;IAEL,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAjCW,QAAA,oBAAoB,wBAiC/B","sourcesContent":["import type { IRoomstayEvent } from '@roomstay/core';\nimport BaseAPI from '@/api/BaseAPI';\n\ndeclare const EVENTS_API_URL: string;\n\nconst cachedCityEvents: { [cityName: string]: IRoomstayEvent[] | Promise<IRoomstayEvent[]> } = {};\n\nexport const getEventsForCity = async (city: string): Promise<IRoomstayEvent[]> => {\n const headers = await BaseAPI.getBaseHeaders();\n\n if (cachedCityEvents[city]) {\n return cachedCityEvents[city];\n }\n\n cachedCityEvents[city] = (async () => {\n try {\n const response = await fetch(`${EVENTS_API_URL}?city=${city}`, { headers });\n\n const responseJson = await response.json();\n\n return responseJson.data;\n } catch (ex) {\n console.log(`Error fetching events for ${city}: `, ex);\n }\n\n return [];\n })();\n\n return cachedCityEvents[city];\n};\n\nconst cachedHotelEvents: { [key: string]: IRoomstayEvent[] | Promise<IRoomstayEvent[]> } = {};\nexport const getEventsFromHotelId = async (hotelId: string, unixStartTime?: number): Promise<IRoomstayEvent[]> => {\n const hotelEventKey = hotelId + unixStartTime;\n\n const headers = await BaseAPI.getBaseHeaders();\n\n if (cachedHotelEvents[hotelEventKey]) {\n return cachedHotelEvents[hotelEventKey];\n }\n\n cachedHotelEvents[hotelEventKey] = (async () => {\n try {\n const response = await fetch(\n `${EVENTS_API_URL}hotel/${hotelId}?${\n unixStartTime\n ? new URLSearchParams({\n unixStartTime: unixStartTime?.toString(),\n })\n : ''\n }`,\n { headers }\n );\n\n const responseJson = await response.json();\n\n return responseJson.data;\n } catch (ex) {\n console.log(`Error fetching events for hotelID ${hotelId}: `, ex);\n\n throw new Error();\n }\n })();\n\n return cachedHotelEvents[hotelEventKey];\n};\n"]}
|
|
@@ -0,0 +1,97 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
39
|
+
const EventsServiceAPI_1 = require("../../api/events-service/EventsServiceAPI");
|
|
40
|
+
const EventCarousel_1 = __importDefault(require("../generic/Event/EventCarousel"));
|
|
41
|
+
const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
|
|
42
|
+
const contexts_1 = require("../../contexts");
|
|
43
|
+
const EventsHelper = __importStar(require("../../util/EventsHelper"));
|
|
44
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
45
|
+
const EventCarouselContainer = ({ hotelId, defaultExpanded, checkInDate }) => {
|
|
46
|
+
const [loadedEvents, setLoadedEvents] = (0, react_1.useState)([]);
|
|
47
|
+
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
48
|
+
const isMobile = beContext.screenSize <= ScreenSize_1.default.Medium;
|
|
49
|
+
const unixStartTime = (0, dayjs_1.default)(checkInDate).valueOf();
|
|
50
|
+
const getEventsFromStorage = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
let cachedEvent = undefined;
|
|
52
|
+
try {
|
|
53
|
+
cachedEvent = yield EventsHelper.read(hotelId, unixStartTime);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
console.log(e);
|
|
57
|
+
}
|
|
58
|
+
return cachedEvent || undefined;
|
|
59
|
+
});
|
|
60
|
+
const getEventsFromApi = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
if (!hotelId) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
return (0, EventsServiceAPI_1.getEventsFromHotelId)(hotelId, unixStartTime).then(EventsHelper.getValidEvents);
|
|
65
|
+
});
|
|
66
|
+
const getEvents = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
+
// const cachedEvents = await getEventsFromStorage();
|
|
68
|
+
// if (cachedEvents && EventsHelper.isCachedEventValid(cachedEvents)) {
|
|
69
|
+
// const validEvents = EventsHelper.getValidEvents(cachedEvents.events);
|
|
70
|
+
// EventsHelper.write({
|
|
71
|
+
// expired: cachedEvents.expired,
|
|
72
|
+
// events: validEvents,
|
|
73
|
+
// });
|
|
74
|
+
// setLoadedEvents(validEvents);
|
|
75
|
+
// } else {
|
|
76
|
+
// TODO: Commented out event caching temporarily
|
|
77
|
+
const newEvents = yield getEventsFromApi();
|
|
78
|
+
if (newEvents) {
|
|
79
|
+
EventsHelper.write(hotelId, unixStartTime, {
|
|
80
|
+
expired: (0, dayjs_1.default)().add(1, 'd').valueOf(),
|
|
81
|
+
events: newEvents,
|
|
82
|
+
});
|
|
83
|
+
setLoadedEvents(EventsHelper.getApplicableEvents(newEvents));
|
|
84
|
+
}
|
|
85
|
+
// }
|
|
86
|
+
});
|
|
87
|
+
(0, react_1.useEffect)(() => {
|
|
88
|
+
if (hotelId) {
|
|
89
|
+
getEvents();
|
|
90
|
+
}
|
|
91
|
+
}, [hotelId]);
|
|
92
|
+
if (!loadedEvents.length)
|
|
93
|
+
return null;
|
|
94
|
+
return react_1.default.createElement(EventCarousel_1.default, { small: isMobile, data: loadedEvents, defaultExpanded: defaultExpanded });
|
|
95
|
+
};
|
|
96
|
+
exports.default = EventCarouselContainer;
|
|
97
|
+
//# sourceMappingURL=EventCarouselContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventCarouselContainer.js","sourceRoot":"/","sources":["src/components/Event/EventCarouselContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmE;AAEnE,4EAA6E;AAC7E,6FAAqE;AACrE,mEAA2C;AAC3C,yCAAkD;AAElD,kEAAoD;AACpD,kDAA0B;AAQ1B,MAAM,sBAAsB,GAAoC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE;IAC1G,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC;IAE3D,MAAM,aAAa,GAAG,IAAA,eAAK,EAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAEnD,MAAM,oBAAoB,GAAG,GAA6C,EAAE;QACxE,IAAI,WAAW,GAAqC,SAAS,CAAC;QAC9D,IAAI;YACA,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SACjE;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,OAAO,WAAW,IAAI,SAAS,CAAC;IACpC,CAAC,CAAA,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAChC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,OAAO,IAAA,uCAAoB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC1F,CAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QACzB,qDAAqD;QACrD,uEAAuE;QACvE,4EAA4E;QAC5E,2BAA2B;QAC3B,yCAAyC;QACzC,+BAA+B;QAC/B,UAAU;QACV,oCAAoC;QACpC,WAAW;QACX,gDAAgD;QAEhD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE3C,IAAI,SAAS,EAAE;YACX,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;gBACvC,OAAO,EAAE,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;gBACtC,MAAM,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,eAAe,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;SAChE;QACD,IAAI;IACR,CAAC,CAAA,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE;YACT,SAAS,EAAE,CAAC;SACf;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,8BAAC,uBAAa,IAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAAC;AACpG,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC","sourcesContent":["import React, { FC, useContext, useEffect, useState } from 'react';\nimport { IRoomstayEvent } from '@roomstay/core';\nimport { getEventsFromHotelId } from '@/api/events-service/EventsServiceAPI';\nimport EventCarousel from '@/components/generic/Event/EventCarousel';\nimport ScreenSize from '@/util/ScreenSize';\nimport { BookingEngineContext } from '@/contexts';\nimport type { ICachedEvents } from '@/util/EventsHelper';\nimport * as EventsHelper from '@/util/EventsHelper';\nimport dayjs from 'dayjs';\n\ninterface EventCarouselContainerProps {\n defaultExpanded?: boolean;\n hotelId: string;\n checkInDate: string;\n}\n\nconst EventCarouselContainer: FC<EventCarouselContainerProps> = ({ hotelId, defaultExpanded, checkInDate }) => {\n const [loadedEvents, setLoadedEvents] = useState<IRoomstayEvent[]>([]);\n\n const beContext = useContext(BookingEngineContext);\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const unixStartTime = dayjs(checkInDate).valueOf();\n\n const getEventsFromStorage = async (): Promise<ICachedEvents | undefined> => {\n let cachedEvent: ICachedEvents | undefined | null = undefined;\n try {\n cachedEvent = await EventsHelper.read(hotelId, unixStartTime);\n } catch (e) {\n console.log(e);\n }\n return cachedEvent || undefined;\n };\n\n const getEventsFromApi = async () => {\n if (!hotelId) {\n return;\n }\n\n return getEventsFromHotelId(hotelId, unixStartTime).then(EventsHelper.getValidEvents);\n };\n\n const getEvents = async () => {\n // const cachedEvents = await getEventsFromStorage();\n // if (cachedEvents && EventsHelper.isCachedEventValid(cachedEvents)) {\n // const validEvents = EventsHelper.getValidEvents(cachedEvents.events);\n // EventsHelper.write({\n // expired: cachedEvents.expired,\n // events: validEvents,\n // });\n // setLoadedEvents(validEvents);\n // } else {\n // TODO: Commented out event caching temporarily\n\n const newEvents = await getEventsFromApi();\n\n if (newEvents) {\n EventsHelper.write(hotelId, unixStartTime, {\n expired: dayjs().add(1, 'd').valueOf(),\n events: newEvents,\n });\n setLoadedEvents(EventsHelper.getApplicableEvents(newEvents));\n }\n // }\n };\n\n useEffect(() => {\n if (hotelId) {\n getEvents();\n }\n }, [hotelId]);\n\n if (!loadedEvents.length) return null;\n\n return <EventCarousel small={isMobile} data={loadedEvents} defaultExpanded={defaultExpanded} />;\n};\n\nexport default EventCarouselContainer;\n"]}
|
|
@@ -49,6 +49,7 @@ const contexts_1 = require("../../../contexts/index.js");
|
|
|
49
49
|
const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
|
|
50
50
|
const Validation_1 = require("../../../util/Validation");
|
|
51
51
|
const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
|
|
52
|
+
const hooks_1 = require("../../../hooks/index.js");
|
|
52
53
|
const LabelAndInputGroup = (props) => {
|
|
53
54
|
const { label, component, error } = props;
|
|
54
55
|
return (react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
@@ -59,7 +60,8 @@ const LabelAndInputGroup = (props) => {
|
|
|
59
60
|
};
|
|
60
61
|
const ForgotPasswordForm = (props) => {
|
|
61
62
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
62
|
-
const { cognitoLoginState, loading: cognitoLoading,
|
|
63
|
+
const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
|
|
64
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
63
65
|
const { register, formState, handleSubmit, watch, setError } = (0, react_hook_form_1.useForm)({
|
|
64
66
|
mode: 'onSubmit',
|
|
65
67
|
});
|
|
@@ -77,20 +79,32 @@ const ForgotPasswordForm = (props) => {
|
|
|
77
79
|
const forgotPasswordStates = [contexts_1.CognitoLoginState.ForgotPassword, contexts_1.CognitoLoginState.CodeMismatch];
|
|
78
80
|
const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState);
|
|
79
81
|
const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
+
var _a;
|
|
80
83
|
setIsLoading(true);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
try {
|
|
85
|
+
if (areResettingPassword) {
|
|
86
|
+
const state = yield resetPassword(values.email, values.code, values.password, { hotel });
|
|
87
|
+
if (state === contexts_1.CognitoLoginState.CodeMismatch)
|
|
88
|
+
setError('code', {
|
|
89
|
+
message: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),
|
|
90
|
+
});
|
|
91
|
+
else
|
|
92
|
+
(_a = props.onDone) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const state = yield forgotPassword(values.email, { hotel });
|
|
96
|
+
if (state === contexts_1.CognitoLoginState.UserNotFound) {
|
|
97
|
+
setError('email', {
|
|
98
|
+
message: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (ex) {
|
|
104
|
+
console.error(ex);
|
|
87
105
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (state === contexts_1.CognitoLoginState.UserNotFound)
|
|
91
|
-
setError('email', {
|
|
92
|
-
message: 'User could not be found',
|
|
93
|
-
});
|
|
106
|
+
finally {
|
|
107
|
+
setIsLoading(false);
|
|
94
108
|
}
|
|
95
109
|
});
|
|
96
110
|
const onCancelPressed = () => {
|
|
@@ -103,26 +117,26 @@ const ForgotPasswordForm = (props) => {
|
|
|
103
117
|
react_1.default.createElement(Headline_1.default, { color: Color_1.Color.Navy, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Navigation.ForgotPassword.Title)),
|
|
104
118
|
areResettingPassword && (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Success }, t(Translation_1.Translation.Navigation.ForgotPassword.CodeSent)))),
|
|
105
119
|
react_1.default.createElement("form", { onSubmit: handleSubmit(onSubmit) },
|
|
106
|
-
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Label), error: formState.errors.email, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder), required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: areResettingPassword } }, register('email', {
|
|
120
|
+
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Label), error: formState.errors.email, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder), required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: areResettingPassword || isLoading || cognitoLoading } }, register('email', {
|
|
107
121
|
required: true,
|
|
108
|
-
pattern: Validation_1.
|
|
122
|
+
pattern: (0, Validation_1.makeEmailPatternRule)(t),
|
|
109
123
|
}))) }),
|
|
110
124
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: areResettingPassword },
|
|
111
|
-
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label), error: formState.errors.code, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder), validationStatus: getValidationClass('code') }, register('code', {
|
|
112
|
-
required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
|
|
125
|
+
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label), error: formState.errors.code, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder), validationStatus: getValidationClass('code'), inputProps: { disabled: isLoading || cognitoLoading } }, register('code', {
|
|
126
|
+
required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label)),
|
|
113
127
|
}))) }),
|
|
114
|
-
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label), error: formState.errors.password, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder), validationStatus: getValidationClass('password') }, register('password', {
|
|
115
|
-
required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
|
|
116
|
-
pattern: Validation_1.
|
|
128
|
+
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label), error: formState.errors.password, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder), validationStatus: getValidationClass('password'), inputProps: { disabled: isLoading || cognitoLoading } }, register('password', {
|
|
129
|
+
required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label)),
|
|
130
|
+
pattern: (0, Validation_1.makePasswordPatternRule)(t),
|
|
117
131
|
}))) }),
|
|
118
|
-
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label), error: formState.errors.confirmPassword, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder), validationStatus: getValidationClass('confirmPassword') }, register('confirmPassword', {
|
|
119
|
-
required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
|
|
132
|
+
react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label), error: formState.errors.confirmPassword, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder), validationStatus: getValidationClass('confirmPassword'), inputProps: { disabled: isLoading || cognitoLoading } }, register('confirmPassword', {
|
|
133
|
+
required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),
|
|
120
134
|
validate: {
|
|
121
|
-
isSame: (0, Validation_1.
|
|
135
|
+
isSame: (0, Validation_1.isPasswordMatch)(t)(watch('password')),
|
|
122
136
|
},
|
|
123
137
|
}))) })),
|
|
124
138
|
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
125
|
-
react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, wide: true, htmlType: "submit", isLoading: cognitoLoading }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label))),
|
|
139
|
+
react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, wide: true, htmlType: "submit", isLoading: cognitoLoading || isLoading }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label))),
|
|
126
140
|
react_1.default.createElement("div", { className: "u-marg-top u-align-center" },
|
|
127
141
|
react_1.default.createElement(BEButton_1.default, { isText: true, onClick: onCancelPressed, size: "small" }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label))))));
|
|
128
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport { Color } from '@/util/Color';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { FieldError, useForm } from 'react-hook-form';\nimport BEButton from '@/components/generic/BEButton';\nimport { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { emailPatternRule, isPassWordMatch, makeRequiredRule, passwordPatternRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, error, login, confirmAccount, forgotPassword, resetPassword, reset } = useContext(AuthenticationContext);\n\n const { register, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password);\n if (state === CognitoLoginState.CodeMismatch)\n setError('code', {\n message: 'Invalid verification code provided, please try again.',\n });\n } else {\n const state = await forgotPassword(values.email);\n if (state === CognitoLoginState.UserNotFound)\n setError('email', {\n message: 'User could not be found',\n });\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword }}\n {...register('email', {\n required: true,\n pattern: emailPatternRule,\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n {...register('code', {\n required: makeRequiredRule(areResettingPassword),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: makeRequiredRule(areResettingPassword),\n pattern: passwordPatternRule,\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n {...register('confirmPassword', {\n required: makeRequiredRule(areResettingPassword),\n validate: {\n isSame: isPassWordMatch(watch('password')),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport { Color } from '@/util/Color';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { FieldError, useForm } from 'react-hook-form';\nimport BEButton from '@/components/generic/BEButton';\nimport { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { isPasswordMatch, makeEmailPatternRule, makePasswordPatternRule, makeRequiredRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n onDone?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset } = useContext(AuthenticationContext);\n const { hotel } = useCurrentHotel();\n\n const { register, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n try {\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password, { hotel });\n if (state === CognitoLoginState.CodeMismatch)\n setError('code', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),\n });\n else props.onDone?.();\n } else {\n const state = await forgotPassword(values.email, { hotel });\n if (state === CognitoLoginState.UserNotFound) {\n setError('email', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),\n });\n }\n }\n } catch (ex) {\n console.error(ex);\n } finally {\n setIsLoading(false);\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword || isLoading || cognitoLoading }}\n {...register('email', {\n required: true,\n pattern: makeEmailPatternRule(t),\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('code', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('password', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('confirmPassword', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),\n validate: {\n isSame: isPasswordMatch(t)(watch('password')),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading || isLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export type SignInFormProps = {
|
|
2
3
|
onForgotPassword?: () => void;
|
|
3
4
|
onSignedIn?: () => void;
|
|
5
|
+
onDone?: () => void;
|
|
4
6
|
};
|
|
5
|
-
export declare const SignInForm:
|
|
6
|
-
export {};
|
|
7
|
+
export declare const SignInForm: FC<SignInFormProps>;
|
|
@@ -22,15 +22,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
25
34
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
36
|
};
|
|
28
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
38
|
exports.SignInForm = void 0;
|
|
30
|
-
const react_1 =
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
31
40
|
const react_hook_form_1 = require("react-hook-form");
|
|
32
41
|
const react_i18next_1 = require("react-i18next");
|
|
33
|
-
const react_2 = require("react");
|
|
34
42
|
const Translation_1 = require("translations/Translation");
|
|
35
43
|
const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
|
|
36
44
|
const contexts_1 = require("../../../contexts/index.js");
|
|
@@ -42,12 +50,12 @@ const Icon_1 = require("../../generic/Icon/Icon");
|
|
|
42
50
|
const TextBox_1 = __importDefault(require("../../generic/TextBox"));
|
|
43
51
|
const BEButton_1 = __importDefault(require("../../generic/BEButton"));
|
|
44
52
|
const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
|
|
53
|
+
const hooks_1 = require("../../../hooks/index.js");
|
|
45
54
|
const SignInForm = (props) => {
|
|
46
55
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
47
|
-
const {
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
const [apiErrorMessages, setApiErrorMessages] = (0, react_2.useState)('');
|
|
56
|
+
const { error, login, reset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
|
|
57
|
+
const { loading } = (0, contexts_1.useMemberContext)();
|
|
58
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
51
59
|
const { register, formState, handleSubmit, clearErrors } = (0, react_hook_form_1.useForm)({
|
|
52
60
|
mode: 'onSubmit',
|
|
53
61
|
});
|
|
@@ -62,13 +70,20 @@ const SignInForm = (props) => {
|
|
|
62
70
|
}
|
|
63
71
|
}
|
|
64
72
|
};
|
|
65
|
-
const onSubmit = (values) => {
|
|
73
|
+
const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
+
var _a;
|
|
75
|
+
if (loading)
|
|
76
|
+
return;
|
|
66
77
|
clearErrors();
|
|
67
78
|
reset();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
79
|
+
try {
|
|
80
|
+
yield login(values.email, values.password, { hotel });
|
|
81
|
+
(_a = props.onDone) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
82
|
+
}
|
|
83
|
+
catch (ex) {
|
|
84
|
+
console.error(ex);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
72
87
|
const onInvalid = () => {
|
|
73
88
|
reset();
|
|
74
89
|
};
|
|
@@ -94,8 +109,11 @@ const SignInForm = (props) => {
|
|
|
94
109
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
95
110
|
react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
96
111
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, bold: true }, t(Translation_1.Translation.Navigation.SignIn.EmailAddress))),
|
|
97
|
-
react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: "example@mail.com", required: true, validationStatus: getValidationClass('email') }, register('email', {
|
|
98
|
-
required: {
|
|
112
|
+
react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: "example@mail.com", required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: loading } }, register('email', {
|
|
113
|
+
required: {
|
|
114
|
+
message: `${t(Translation_1.Translation.Navigation.SignIn.EmailAddress)} is required`,
|
|
115
|
+
value: true,
|
|
116
|
+
},
|
|
99
117
|
pattern: {
|
|
100
118
|
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
|
|
101
119
|
message: t(Translation_1.Translation.FindReservation.InvalidEmailAddress),
|
|
@@ -104,7 +122,7 @@ const SignInForm = (props) => {
|
|
|
104
122
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
105
123
|
react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
106
124
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, bold: true }, t(Translation_1.Translation.Navigation.SignIn.Password))),
|
|
107
|
-
react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, validationStatus: getValidationClass('password') }, register('password', {
|
|
125
|
+
react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ inputProps: { disabled: loading }, placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, validationStatus: getValidationClass('password') }, register('password', {
|
|
108
126
|
required: { message: 'Password is required', value: true },
|
|
109
127
|
minLength: { message: 'Password must be at least 8 characters long', value: 8 },
|
|
110
128
|
}))),
|