@roomstay/frontend 2.1.17 → 2.1.19
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/760.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +9 -0
- package/dist/src/api/AvailabilityAPI.js +12 -0
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +55 -15
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +2 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +13 -9
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -3
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +16 -14
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.d.ts +8 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +64 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -0
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +1 -1
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.d.ts +1 -0
- package/dist/src/components/generic/PromoCodeInput.js +1 -1
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/generic/Select/Select.d.ts +2 -1
- package/dist/src/components/generic/Select/Select.js +3 -3
- package/dist/src/components/generic/Select/Select.js.map +1 -1
- package/dist/src/components/generic/TextBox.d.ts +1 -0
- package/dist/src/components/generic/TextBox.js +1 -1
- package/dist/src/components/generic/TextBox.js.map +1 -1
- package/dist/src/components/navigation/Header.js +2 -3
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.d.ts +6 -3
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +9 -19
- package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js +28 -15
- package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +8 -9
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/index.d.ts +22 -22
- package/dist/src/contexts/index.js +22 -22
- package/dist/src/contexts/index.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +0 -2
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +2 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/stories/BookingWizard.stories.d.ts +1 -0
- package/dist/src/stories/BookingWizard.stories.js +12 -19
- package/dist/src/stories/BookingWizard.stories.js.map +1 -1
- package/dist/src/stories/Select.stories.d.ts +1 -0
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/RSCompany.js +2 -2
- package/dist/tests/offline/entry/RSCompany.js.map +1 -1
- package/package.json +1 -1
|
@@ -46,7 +46,6 @@ const Portal_1 = require("../generic/Portal/Portal");
|
|
|
46
46
|
const MemberPortalFeature_1 = __importDefault(require("../../providers/feature/MemberPortalFeature"));
|
|
47
47
|
const Select_1 = require("../generic/Select/Select");
|
|
48
48
|
const SmallSpinner_1 = __importDefault(require("../generic/loader/SmallSpinner"));
|
|
49
|
-
const ImageProvider_1 = __importStar(require("../../providers/ImageProvider"));
|
|
50
49
|
const UnauthenticatedUserModal = react_1.default.lazy(() => Promise.resolve().then(() => __importStar(require('../generic/modal/SigninModal/UnauthenticatedUserModal'))).then(({ UnauthenticatedUserModal }) => ({
|
|
51
50
|
default: UnauthenticatedUserModal,
|
|
52
51
|
})));
|
|
@@ -128,9 +127,9 @@ function Header() {
|
|
|
128
127
|
cancelled = true;
|
|
129
128
|
};
|
|
130
129
|
}, [hotel, hotel === null || hotel === void 0 ? void 0 : hotel.logo, ccx.logo, currentStep]);
|
|
131
|
-
let hotelImageElement = hotelLogo ? react_1.default.createElement("img", { src:
|
|
130
|
+
let hotelImageElement = hotelLogo ? react_1.default.createElement("img", { src: hotelLogo, alt: "Hotel Logo", className: "u-block" }) : hotel === null || hotel === void 0 ? void 0 : hotel.logo;
|
|
132
131
|
if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {
|
|
133
|
-
hotelImageElement = react_1.default.createElement("img", { src:
|
|
132
|
+
hotelImageElement = react_1.default.createElement("img", { src: hotelImageElement, alt: "Hotel Logo" });
|
|
134
133
|
}
|
|
135
134
|
const links = (react_1.default.createElement("ul", { className: "c-header__list" },
|
|
136
135
|
react_1.default.createElement("li", null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense, useContext, useEffect, useState } from 'react';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport { Link, NavLink } from 'react-router-dom';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\n\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport BEButton from '@/components/generic/BEButton';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FadeAnimation from '@/animations/Fade';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport DataLayer from '@/util/DataLayer';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n\n const loginAnchorEl = React.useRef<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n closeMobileMenuClickHandler();\n };\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n let hotelImageElement = hotelLogo ? <img src={ImageProvider.resizeImage(hotelLogo, ImageSize.Original)} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={ImageProvider.resizeImage(hotelImageElement, ImageSize.Original)} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink to=\"/hotel-info/\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White}>\n <strong>{t(Translation.Navigation.HotelInfo)}</strong>\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White}>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <strong className=\"u-marg-left--light\">{hotel?.phone}</strong>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={CurrencyProvider.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={loginAnchorEl}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={SmallSpinner}>\n {roomstayMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} anchorEl={loginAnchorEl.current} />\n ) : (\n <UnauthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} anchorEl={loginAnchorEl.current} />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense, useContext, useEffect, useState } from 'react';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport { Link, NavLink } from 'react-router-dom';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\n\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport BEButton from '@/components/generic/BEButton';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FadeAnimation from '@/animations/Fade';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport DataLayer from '@/util/DataLayer';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n\n const loginAnchorEl = React.useRef<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n closeMobileMenuClickHandler();\n };\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n let hotelImageElement = hotelLogo ? <img src={hotelLogo} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={hotelImageElement} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink to=\"/hotel-info/\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White}>\n <strong>{t(Translation.Navigation.HotelInfo)}</strong>\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White}>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <strong className=\"u-marg-left--light\">{hotel?.phone}</strong>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={CurrencyProvider.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={loginAnchorEl}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={SmallSpinner}>\n {roomstayMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} anchorEl={loginAnchorEl.current} />\n ) : (\n <UnauthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} anchorEl={loginAnchorEl.current} />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface AcknowledgementProps {
|
|
3
|
+
confirmationPolicyError: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const _default: React.ForwardRefExoticComponent<AcknowledgementProps & React.RefAttributes<unknown>>;
|
|
6
|
+
export default _default;
|
|
@@ -37,33 +37,23 @@ const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHe
|
|
|
37
37
|
const Alert_1 = __importStar(require("../../generic/Alert"));
|
|
38
38
|
const Icon_1 = require("../../generic/Icon/Icon");
|
|
39
39
|
const hooks_1 = require("../../../hooks/index.js");
|
|
40
|
-
|
|
41
|
-
const react_hook_form_1 = require("react-hook-form");
|
|
42
|
-
const StepConfirmationAcknowledgement = () => {
|
|
43
|
-
var _a;
|
|
40
|
+
exports.default = react_1.default.forwardRef(function StepConfirmationAcknowledgement(props, ref) {
|
|
44
41
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
42
|
+
const { confirmationPolicyError } = props;
|
|
45
43
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
46
|
-
const { control, getFieldState } = (0, react_hook_form_1.useFormContext)();
|
|
47
|
-
const confirmationPolicyError = (_a = getFieldState('isPolicyConfirmed').error) === null || _a === void 0 ? void 0 : _a.message;
|
|
48
44
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
49
45
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
50
46
|
react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Confirmation.Acknowledgement))),
|
|
51
47
|
react_1.default.createElement("div", null,
|
|
52
48
|
react_1.default.createElement(Checkbox_1.default, { label: t(Translation_1.Translation.Step.Confirmation.EmailSpecialOffers) })),
|
|
53
49
|
react_1.default.createElement("div", { className: "u-marg-top--light" },
|
|
54
|
-
react_1.default.createElement(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
value: ConfirmationVerifyFeature_1.default.isActive(),
|
|
60
|
-
message: t(Translation_1.Translation.Step.Confirmation.PrivacyPolicyError),
|
|
61
|
-
},
|
|
62
|
-
} })),
|
|
63
|
-
react_1.default.createElement(AutoAutoHeight_1.default, { open: !!confirmationPolicyError },
|
|
50
|
+
react_1.default.createElement(Checkbox_1.default, { ref: ref, label: react_1.default.createElement("div", null,
|
|
51
|
+
t(Translation_1.Translation.Step.Confirmation.IHaveUnderstoodPrivacyPolicy),
|
|
52
|
+
' ',
|
|
53
|
+
react_1.default.createElement("a", { style: { color: Color_1.Color.Accent }, className: "--underlined", href: hotel === null || hotel === void 0 ? void 0 : hotel.privacyPolicyUrl, target: "_blank", rel: "noreferrer" }, t(Translation_1.Translation.Step.Confirmation.PrivacyPolicy))) })),
|
|
54
|
+
react_1.default.createElement(AutoAutoHeight_1.default, { open: confirmationPolicyError },
|
|
64
55
|
react_1.default.createElement("div", { className: "u-flex u-marg-top" },
|
|
65
56
|
react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Danger, icon: Icon_1.IconType.Error },
|
|
66
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
67
|
-
};
|
|
68
|
-
exports.default = StepConfirmationAcknowledgement;
|
|
57
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Confirmation.PrivacyPolicyError)))))));
|
|
58
|
+
});
|
|
69
59
|
//# sourceMappingURL=StepConfirmationAcknowledgement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationAcknowledgement.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationAcknowledgement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"StepConfirmationAcknowledgement.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationAcknowledgement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,6EAAqD;AACrD,4DAAyD;AACzD,kEAA2D;AAC3D,iDAA+C;AAC/C,sFAA8D;AAC9D,wCAAqC;AACrC,iFAAyD;AACzD,oEAA8D;AAC9D,yDAA0D;AAC1D,2CAAkD;AAMlD,kBAAe,eAAK,CAAC,UAAU,CAAC,SAAS,+BAA+B,CAAC,KAA2B,EAAE,GAAQ;IAC1G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,uBAAuB,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAY,CAC1E;QACN;YACI,8BAAC,kBAAQ,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAI,CACtE;QACN,uCAAK,SAAS,EAAC,mBAAmB;YAC9B,8BAAC,kBAAQ,IACL,GAAG,EAAE,GAAG,EACR,KAAK,EACD;oBACK,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC;oBAAE,GAAG;oBACnE,qCAAG,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAC,cAAc,EAAC,IAAI,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,gBAAgB,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,IACtH,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAC/C,CACF,GAEZ,CACA;QACN,8BAAC,wBAAc,IAAC,IAAI,EAAE,uBAAuB;YACzC,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;oBAC/C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAQ,CACpF,CACN,CACO,CAClB,CACN,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from '@/translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useTranslation } from 'react-i18next';\nimport Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport { Color } from '@/util/Color';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ninterface AcknowledgementProps {\n confirmationPolicyError: boolean;\n}\n\nexport default React.forwardRef(function StepConfirmationAcknowledgement(props: AcknowledgementProps, ref: any) {\n const { t } = useTranslation();\n const { confirmationPolicyError } = props;\n const { hotel } = useCurrentHotel();\n\n return (\n <>\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.Acknowledgement)}</Headline>\n </div>\n <div>\n <Checkbox label={t(Translation.Step.Confirmation.EmailSpecialOffers)} />\n </div>\n <div className=\"u-marg-top--light\">\n <Checkbox\n ref={ref}\n label={\n <div>\n {t(Translation.Step.Confirmation.IHaveUnderstoodPrivacyPolicy)}{' '}\n <a style={{ color: Color.Accent }} className=\"--underlined\" href={hotel?.privacyPolicyUrl} target=\"_blank\" rel=\"noreferrer\">\n {t(Translation.Step.Confirmation.PrivacyPolicy)}\n </a>\n </div>\n }\n />\n </div>\n <AutoAutoHeight open={confirmationPolicyError}>\n <div className=\"u-flex u-marg-top\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.PrivacyPolicyError)}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n </>\n );\n});\n"]}
|
|
@@ -35,8 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
const react_1 =
|
|
39
|
-
const react_2 = require("react");
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
40
39
|
const Headline_1 = __importDefault(require("../../generic/Headline"));
|
|
41
40
|
const Translation_1 = require("translations/Translation");
|
|
42
41
|
const Text_1 = __importStar(require("../../generic/Text"));
|
|
@@ -63,7 +62,6 @@ const ConfirmationVerifyFeature_1 = __importDefault(require("../../../providers/
|
|
|
63
62
|
const TextBox_1 = __importDefault(require("../../generic/TextBox"));
|
|
64
63
|
const ShowIATANumberOnCheckoutFeature_1 = __importDefault(require("../../../providers/feature/ShowIATANumberOnCheckoutFeature"));
|
|
65
64
|
const PlanpayPaymentMethod_1 = require("./PlanpayPaymentMethod");
|
|
66
|
-
const TextArea_1 = __importDefault(require("../../generic/TextArea"));
|
|
67
65
|
const ConfirmationStepContext_1 = require("contexts/ConfirmationStepContext/ConfirmationStepContext");
|
|
68
66
|
const ConfirmationQuery_1 = require("../../../hooks/ConfirmationQuery");
|
|
69
67
|
const LargeLoader_1 = __importDefault(require("../../generic/loader/LargeLoader"));
|
|
@@ -74,19 +72,24 @@ const AcceptablePaymentCard_1 = __importDefault(require("./PaymentDetails/Accept
|
|
|
74
72
|
const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
|
|
75
73
|
const hooks_1 = require("../../../hooks/index.js");
|
|
76
74
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
75
|
+
const StepConfirmationCommentsComponent_1 = require("./StepConfirmationCommentsComponent");
|
|
77
76
|
function StepConfirmationForm() {
|
|
78
|
-
const [differenceWarning, setDifferenceWarning] = (0,
|
|
77
|
+
const [differenceWarning, setDifferenceWarning] = (0, react_1.useState)({
|
|
79
78
|
differences: [],
|
|
80
79
|
warnings: [],
|
|
81
80
|
});
|
|
82
|
-
const
|
|
81
|
+
const formContext = (0, react_1.useContext)(contexts_1.ConfirmationFormContext);
|
|
82
|
+
const [source, setSource] = (0, react_1.useState)('');
|
|
83
|
+
const [confirmationPolicyError, setConfirmationPolicyError] = (0, react_1.useState)(false);
|
|
84
|
+
const confirmationPolicy = (0, react_1.useRef)(null);
|
|
85
|
+
const commentTextbox = (0, react_1.useRef)(null);
|
|
83
86
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
84
87
|
const { queryPaymentMethod, queryRoomstayId, queryPlanpayCheckoutId } = (0, ConfirmationQuery_1.useConfirmationQuery)();
|
|
85
88
|
const context = (0, contexts_1.useBookingEngine)();
|
|
86
89
|
const methods = (0, react_hook_form_1.useFormContext)();
|
|
87
90
|
const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = (0, ConfirmationStepContext_1.useConfirmationStep)();
|
|
88
91
|
const basketContext = (0, contexts_1.useBasket)();
|
|
89
|
-
const tokenizerRef = (0,
|
|
92
|
+
const tokenizerRef = (0, react_1.useRef)(null);
|
|
90
93
|
const history = (0, react_router_dom_1.useHistory)();
|
|
91
94
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
92
95
|
const toPaymentPayload = (paymentMethod) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -114,7 +117,7 @@ function StepConfirmationForm() {
|
|
|
114
117
|
}
|
|
115
118
|
return payment;
|
|
116
119
|
});
|
|
117
|
-
(0,
|
|
120
|
+
(0, react_1.useEffect)(() => {
|
|
118
121
|
var _a;
|
|
119
122
|
const validatedPaymentMethod = Object.values(core_1.EBookingPaymentMethod).includes(queryPaymentMethod)
|
|
120
123
|
? queryPaymentMethod
|
|
@@ -153,7 +156,22 @@ function StepConfirmationForm() {
|
|
|
153
156
|
return false;
|
|
154
157
|
});
|
|
155
158
|
const handleBook = (paymentMethod, onSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
156
|
-
|
|
159
|
+
var _b;
|
|
160
|
+
yield (book === null || book === void 0 ? void 0 : book(() => __awaiter(this, void 0, void 0, function* () { return toPaymentPayload(paymentMethod); }), (_b = commentTextbox.current) === null || _b === void 0 ? void 0 : _b.value, () => __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
var _c;
|
|
162
|
+
if (ConfirmationVerifyFeature_1.default.isActive() && !((_c = confirmationPolicy === null || confirmationPolicy === void 0 ? void 0 : confirmationPolicy.current) === null || _c === void 0 ? void 0 : _c.checked)) {
|
|
163
|
+
setConfirmationPolicyError(true);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
let adhocValid = true;
|
|
167
|
+
formContext === null || formContext === void 0 ? void 0 : formContext.errorChecks.forEach((check) => {
|
|
168
|
+
if (!check().validate()) {
|
|
169
|
+
adhocValid = false;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
if (!adhocValid) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
157
175
|
try {
|
|
158
176
|
if (paymentMethod === core_1.EBookingPaymentMethod.Card)
|
|
159
177
|
yield tokenizerRef.current.getTokenizedCode();
|
|
@@ -199,12 +217,7 @@ function StepConfirmationForm() {
|
|
|
199
217
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Confirmation.Inputs.IATANumberGuide))),
|
|
200
218
|
react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Step.Confirmation.Inputs.IATANumber), wide: true }, methods.register('IATANumber')))),
|
|
201
219
|
react_1.default.createElement(LineBreak_1.default, null))),
|
|
202
|
-
react_1.default.createElement(
|
|
203
|
-
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
204
|
-
react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Confirmation.Comments))),
|
|
205
|
-
react_1.default.createElement(TextArea_1.default, Object.assign({ style: {
|
|
206
|
-
resize: 'vertical',
|
|
207
|
-
}, disabled: paymentMethod === core_1.EBookingPaymentMethod.Planpay, placeholder: t(Translation_1.Translation.Step.Confirmation.Inputs.EnterSpecialRequestsHere) }, methods.register('comment')))),
|
|
220
|
+
react_1.default.createElement(StepConfirmationCommentsComponent_1.StepConfirmationCommentsComponent, { inputRef: commentTextbox }),
|
|
208
221
|
react_1.default.createElement(LineBreak_1.default, null),
|
|
209
222
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
210
223
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
@@ -276,7 +289,7 @@ function StepConfirmationForm() {
|
|
|
276
289
|
ConfirmationVerifyFeature_1.default.isActive() && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
277
290
|
react_1.default.createElement(LineBreak_1.default, null),
|
|
278
291
|
react_1.default.createElement("div", null,
|
|
279
|
-
react_1.default.createElement(StepConfirmationAcknowledgement_1.default,
|
|
292
|
+
react_1.default.createElement(StepConfirmationAcknowledgement_1.default, { ref: confirmationPolicy, confirmationPolicyError: confirmationPolicyError })))),
|
|
280
293
|
react_1.default.createElement("div", { className: "u-flex u-marg-top--heavy justify-content-end" },
|
|
281
294
|
react_1.default.createElement(NextStepButton_1.default, { disabled: paymentMethod === core_1.EBookingPaymentMethod.Planpay || isLoading, text: t(Translation_1.Translation.Step.Confirmation.ConfirmReservation), history: null, isLoading: isLoading, currentStep: StepConfirmation_1.default, onClick: onNextStepClicked })))),
|
|
282
295
|
react_1.default.createElement(ErrorModal_1.default, { open: !!apiErrors, onClose: clearApiErrors },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport LineBreak from '@/components/generic/LineBreak';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { useTranslation } from 'react-i18next';\nimport { useBasket, useBookingEngine } from '@frontend/contexts';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport { useHistory } from 'react-router-dom';\nimport ErrorModal from '@/components/generic/modal/ErrorModal';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\n\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport BEButton from '@/components/generic/BEButton';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport TextBox from '@/components/generic/TextBox';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { PlanpayPaymentMethod } from './PlanpayPaymentMethod';\nimport { ConfirmationFormValues, FBookSuccessCallback } from '@/models/Confirmation';\nimport TextArea from '../../generic/TextArea';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport BasketRowDifferences from '../../../models/BasketRowDifferences';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport StepConfirmationPaymentDetails from './PaymentDetails/StepConfirmationPaymentDetails';\nimport { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';\nimport RadioButtonGroup from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs from 'dayjs';\n\nexport default function StepConfirmationForm() {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n\n const [source, setSource] = useState('');\n\n const { t } = useTranslation();\n const { queryPaymentMethod, queryRoomstayId, queryPlanpayCheckoutId } = useConfirmationQuery();\n const context = useBookingEngine();\n const methods = useFormContext<ConfirmationFormValues>();\n const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = useConfirmationStep();\n const basketContext = useBasket();\n const tokenizerRef = useRef<any | null>(null);\n const history = useHistory();\n const { hotel } = useCurrentHotel();\n\n const toPaymentPayload = async (paymentMethod: EBookingPaymentMethod): Promise<IBookingPayment> => {\n let payment: IBookingPayment;\n switch (paymentMethod) {\n case EBookingPaymentMethod.Planpay: {\n const params = new URLSearchParams(window.location.search);\n params.set('roomstayId', '{{rsId}}');\n params.set('session', context.sessionProvider.getCurrentSessionID().toString());\n params.set('paymentMethod', EBookingPaymentMethod.Planpay);\n const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;\n payment = {\n Method: EBookingPaymentMethod.Planpay,\n PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,\n RedirectUrl: redirectURL,\n };\n break;\n }\n default:\n payment = {\n Method: EBookingPaymentMethod.Card,\n PaymentCard: await tokenizerRef.current?.getTokenizedCode(),\n };\n }\n\n return payment;\n };\n\n useEffect(() => {\n const validatedPaymentMethod = Object.values(EBookingPaymentMethod).includes(queryPaymentMethod as EBookingPaymentMethod)\n ? (queryPaymentMethod as EBookingPaymentMethod)\n : EBookingPaymentMethod.Card;\n methods.setValue('paymentMethod', validatedPaymentMethod);\n handleChangePaymentMethod(validatedPaymentMethod);\n if (isBackFromPlanpay) {\n if (queryRoomstayId === basketContext.reservationData?.roomstayId) {\n onPlaypayCallback(validatedPaymentMethod);\n } else {\n rollbackReservation?.();\n }\n }\n return () => {\n if (!isBackFromPlanpay) rollbackReservation?.();\n };\n }, []);\n\n const onPlaypayCallback = async (paymentMethod: EBookingPaymentMethod) => {\n await commitReservation?.(basketContext.reservationData);\n };\n\n const paymentMethod = methods.watch('paymentMethod');\n\n context.engine\n .getSessionProvider()\n .getSession()\n .then((session) => {\n setSource(session.source);\n });\n\n const returnToPickRooms = async () => {\n // TODO: What if StepRoom doesn't exist?\n history.push(StepRoom.getStepUrl());\n };\n\n const onNextStepClicked = async () => {\n await handleBook(paymentMethod, async (resData) => commitReservation?.(resData));\n return false;\n };\n\n const handleBook = async (paymentMethod: EBookingPaymentMethod, onSuccess?: FBookSuccessCallback): Promise<void> => {\n await book?.(\n async () => toPaymentPayload(paymentMethod),\n async (): Promise<boolean> => {\n try {\n if (paymentMethod === EBookingPaymentMethod.Card) await tokenizerRef.current.getTokenizedCode();\n return true;\n } catch (e) {\n return false;\n }\n },\n (validationResult) => {\n if (validationResult) {\n setDifferenceWarning(validationResult);\n }\n },\n onSuccess\n );\n };\n\n const handleChangePaymentMethod = async (paymentMethod: EBookingPaymentMethod) => {\n if (paymentMethod !== EBookingPaymentMethod.Planpay) {\n await rollbackReservation?.();\n }\n };\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {source === 'inline' ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>Travel Agent</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...methods.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.Comments)}</Headline>\n </div>\n <TextArea\n style={{\n resize: 'vertical',\n }}\n disabled={paymentMethod === EBookingPaymentMethod.Planpay}\n placeholder={t(Translation.Step.Confirmation.Inputs.EnterSpecialRequestsHere)}\n {...methods.register('comment')}\n />\n </div>\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.PaymentInformation)}</Headline>\n </div>\n <Controller\n control={methods.control}\n name=\"paymentMethod\"\n render={({ field: { onChange, value } }) => {\n return (\n <>\n <div>\n <RadioButtonGroup<EBookingPaymentMethod>\n options={[\n {\n value: EBookingPaymentMethod.Card,\n label: (\n <div className=\"u-flex u-flex-align-center\">\n <div className=\"u-marg-right--light\">{t(Translation.Step.Confirmation.CardLabel)}</div>\n <AcceptablePaymentCard\n isDefault={(cardKey: any) => {\n return true;\n }}\n style={{\n height: 16,\n width: 24,\n borderRadius: 2.5,\n border: '0.5px solid #DFE1E5',\n marginRight: 4,\n }}\n />\n </div>\n ),\n renderContent: () => <StepConfirmationPaymentDetails ref={tokenizerRef} />,\n },\n {\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 .filter(({ value }) => hotel?.paymentMethods?.includes(value))\n .filter(\n ({ value }) =>\n value !== EBookingPaymentMethod.Planpay ||\n (hotel?.planpay?.minDaysShowPlanpay &&\n dayjs(basketContext.startDate).diff(dayjs(), 'day') > hotel?.planpay?.minDaysShowPlanpay)\n )}\n value={value}\n onChange={async (code: EBookingPaymentMethod) => {\n onChange(code);\n await handleChangePaymentMethod(code);\n if (code === EBookingPaymentMethod.Planpay) {\n await handleBook(code);\n }\n }}\n />\n </div>\n </>\n );\n }}\n />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>Secured</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </div>\n <LineBreak />\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement />\n </div>\n </>\n )}\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading}\n text={t(Translation.Step.Confirmation.ConfirmReservation)}\n history={null}\n isLoading={isLoading}\n currentStep={StepConfirmation}\n onClick={onNextStepClicked}\n />\n </div>\n </>\n )}\n\n <ErrorModal open={!!apiErrors} onClose={clearApiErrors}>\n <Text>{apiErrors}</Text>\n </ErrorModal>\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n history.push(StepRoom.getStepUrl());\n }}\n onProceed={async () => {\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n setDifferenceWarning({\n differences: [],\n warnings: [],\n });\n } else {\n await commitReservation?.(basketContext.reservationData);\n }\n }}\n />\n </form>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport LineBreak from '@/components/generic/LineBreak';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmationFormContext, useBasket, useBookingEngine } from '@frontend/contexts';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport { useHistory } from 'react-router-dom';\nimport ErrorModal from '@/components/generic/modal/ErrorModal';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\n\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport BEButton from '@/components/generic/BEButton';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport TextBox from '@/components/generic/TextBox';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { PlanpayPaymentMethod } from './PlanpayPaymentMethod';\nimport { ConfirmationFormValues, FBookSuccessCallback } from '@/models/Confirmation';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport BasketRowDifferences from '../../../models/BasketRowDifferences';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport StepConfirmationPaymentDetails from './PaymentDetails/StepConfirmationPaymentDetails';\nimport { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';\nimport RadioButtonGroup from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs from 'dayjs';\nimport { StepConfirmationCommentsComponent } from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\n\nexport default function StepConfirmationForm() {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n const formContext = useContext(ConfirmationFormContext);\n const [source, setSource] = useState('');\n const [confirmationPolicyError, setConfirmationPolicyError] = useState(false);\n const confirmationPolicy = useRef<HTMLInputElement | null>(null);\n const commentTextbox = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n const { t } = useTranslation();\n const { queryPaymentMethod, queryRoomstayId, queryPlanpayCheckoutId } = useConfirmationQuery();\n const context = useBookingEngine();\n const methods = useFormContext<ConfirmationFormValues>();\n const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = useConfirmationStep();\n const basketContext = useBasket();\n const tokenizerRef = useRef<any | null>(null);\n const history = useHistory();\n const { hotel } = useCurrentHotel();\n\n const toPaymentPayload = async (paymentMethod: EBookingPaymentMethod): Promise<IBookingPayment> => {\n let payment: IBookingPayment;\n switch (paymentMethod) {\n case EBookingPaymentMethod.Planpay: {\n const params = new URLSearchParams(window.location.search);\n params.set('roomstayId', '{{rsId}}');\n params.set('session', context.sessionProvider.getCurrentSessionID().toString());\n params.set('paymentMethod', EBookingPaymentMethod.Planpay);\n const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;\n payment = {\n Method: EBookingPaymentMethod.Planpay,\n PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,\n RedirectUrl: redirectURL,\n };\n break;\n }\n default:\n payment = {\n Method: EBookingPaymentMethod.Card,\n PaymentCard: await tokenizerRef.current?.getTokenizedCode(),\n };\n }\n\n return payment;\n };\n\n useEffect(() => {\n const validatedPaymentMethod = Object.values(EBookingPaymentMethod).includes(queryPaymentMethod as EBookingPaymentMethod)\n ? (queryPaymentMethod as EBookingPaymentMethod)\n : EBookingPaymentMethod.Card;\n methods.setValue('paymentMethod', validatedPaymentMethod);\n handleChangePaymentMethod(validatedPaymentMethod);\n if (isBackFromPlanpay) {\n if (queryRoomstayId === basketContext.reservationData?.roomstayId) {\n onPlaypayCallback(validatedPaymentMethod);\n } else {\n rollbackReservation?.();\n }\n }\n return () => {\n if (!isBackFromPlanpay) rollbackReservation?.();\n };\n }, []);\n\n const onPlaypayCallback = async (paymentMethod: EBookingPaymentMethod) => {\n await commitReservation?.(basketContext.reservationData);\n };\n\n const paymentMethod = methods.watch('paymentMethod');\n\n context.engine\n .getSessionProvider()\n .getSession()\n .then((session) => {\n setSource(session.source);\n });\n\n const returnToPickRooms = async () => {\n // TODO: What if StepRoom doesn't exist?\n history.push(StepRoom.getStepUrl());\n };\n\n const onNextStepClicked = async () => {\n await handleBook(paymentMethod, async (resData) => commitReservation?.(resData));\n return false;\n };\n\n const handleBook = async (paymentMethod: EBookingPaymentMethod, onSuccess?: FBookSuccessCallback): Promise<void> => {\n await book?.(\n async () => toPaymentPayload(paymentMethod),\n commentTextbox.current?.value,\n async (): Promise<boolean> => {\n if (ConfirmationVerifyFeature.isActive() && !confirmationPolicy?.current?.checked) {\n setConfirmationPolicyError(true);\n return false;\n }\n let adhocValid = true;\n formContext?.errorChecks.forEach((check) => {\n if (!check().validate()) {\n adhocValid = false;\n }\n });\n if (!adhocValid) {\n return false;\n }\n try {\n if (paymentMethod === EBookingPaymentMethod.Card) await tokenizerRef.current.getTokenizedCode();\n return true;\n } catch (e) {\n return false;\n }\n },\n (validationResult) => {\n if (validationResult) {\n setDifferenceWarning(validationResult);\n }\n },\n onSuccess\n );\n };\n\n const handleChangePaymentMethod = async (paymentMethod: EBookingPaymentMethod) => {\n if (paymentMethod !== EBookingPaymentMethod.Planpay) {\n await rollbackReservation?.();\n }\n };\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {source === 'inline' ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>Travel Agent</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...methods.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationCommentsComponent inputRef={commentTextbox} />\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.PaymentInformation)}</Headline>\n </div>\n <Controller\n control={methods.control}\n name=\"paymentMethod\"\n render={({ field: { onChange, value } }) => {\n return (\n <>\n <div>\n <RadioButtonGroup<EBookingPaymentMethod>\n options={[\n {\n value: EBookingPaymentMethod.Card,\n label: (\n <div className=\"u-flex u-flex-align-center\">\n <div className=\"u-marg-right--light\">{t(Translation.Step.Confirmation.CardLabel)}</div>\n <AcceptablePaymentCard\n isDefault={(cardKey: any) => {\n return true;\n }}\n style={{\n height: 16,\n width: 24,\n borderRadius: 2.5,\n border: '0.5px solid #DFE1E5',\n marginRight: 4,\n }}\n />\n </div>\n ),\n renderContent: () => <StepConfirmationPaymentDetails ref={tokenizerRef} />,\n },\n {\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 .filter(({ value }) => hotel?.paymentMethods?.includes(value))\n .filter(\n ({ value }) =>\n value !== EBookingPaymentMethod.Planpay ||\n (hotel?.planpay?.minDaysShowPlanpay &&\n dayjs(basketContext.startDate).diff(dayjs(), 'day') > hotel?.planpay?.minDaysShowPlanpay)\n )}\n value={value}\n onChange={async (code: EBookingPaymentMethod) => {\n onChange(code);\n await handleChangePaymentMethod(code);\n if (code === EBookingPaymentMethod.Planpay) {\n await handleBook(code);\n }\n }}\n />\n </div>\n </>\n );\n }}\n />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>Secured</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </div>\n <LineBreak />\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement ref={confirmationPolicy} confirmationPolicyError={confirmationPolicyError} />\n </div>\n </>\n )}\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading}\n text={t(Translation.Step.Confirmation.ConfirmReservation)}\n history={null}\n isLoading={isLoading}\n currentStep={StepConfirmation}\n onClick={onNextStepClicked}\n />\n </div>\n </>\n )}\n\n <ErrorModal open={!!apiErrors} onClose={clearApiErrors}>\n <Text>{apiErrors}</Text>\n </ErrorModal>\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n history.push(StepRoom.getStepUrl());\n }}\n onProceed={async () => {\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n setDifferenceWarning({\n differences: [],\n warnings: [],\n });\n } else {\n await commitReservation?.(basketContext.reservationData);\n }\n }}\n />\n </form>\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FBookGetPaymentDetails, FBookSuccessCallback, FBookValidateFunction, FBookValidationCallback } from '../../models/Confirmation';
|
|
2
2
|
import ReservationsDTO from '../../models/Api/ReservationsDTO';
|
|
3
3
|
export interface ConfirmationContextProps {
|
|
4
|
-
book?: (getPaymentDetails: FBookGetPaymentDetails, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback, onSuccess?: FBookSuccessCallback) => Promise<void>;
|
|
4
|
+
book?: (getPaymentDetails: FBookGetPaymentDetails, comments?: string, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback, onSuccess?: FBookSuccessCallback) => Promise<void>;
|
|
5
5
|
commitReservation?: (resData: ReservationsDTO) => Promise<void>;
|
|
6
6
|
rollbackReservation?: () => Promise<void>;
|
|
7
7
|
isLoading?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationStepContextTypes.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.ts"],"names":[],"mappings":"","sourcesContent":["import { FBookGetPaymentDetails, FBookSuccessCallback, FBookValidateFunction, FBookValidationCallback } from '../../models/Confirmation';\nimport ReservationsDTO from '../../models/Api/ReservationsDTO';\nexport interface ConfirmationContextProps {\n book?: (\n getPaymentDetails: FBookGetPaymentDetails,\n preValidate?: FBookValidateFunction,\n onPostValidationError?: FBookValidationCallback,\n onSuccess?: FBookSuccessCallback\n ) => Promise<void>;\n commitReservation?: (resData: ReservationsDTO) => Promise<void>;\n rollbackReservation?: () => Promise<void>;\n\n isLoading?: boolean;\n apiErrors?: string;\n clearApiErrors?: () => void;\n isBackFromPlanpay?: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ConfirmationStepContextTypes.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.ts"],"names":[],"mappings":"","sourcesContent":["import { FBookGetPaymentDetails, FBookSuccessCallback, FBookValidateFunction, FBookValidationCallback } from '../../models/Confirmation';\nimport ReservationsDTO from '../../models/Api/ReservationsDTO';\nexport interface ConfirmationContextProps {\n book?: (\n getPaymentDetails: FBookGetPaymentDetails,\n comments?: string,\n preValidate?: FBookValidateFunction,\n onPostValidationError?: FBookValidationCallback,\n onSuccess?: FBookSuccessCallback\n ) => Promise<void>;\n commitReservation?: (resData: ReservationsDTO) => Promise<void>;\n rollbackReservation?: () => Promise<void>;\n\n isLoading?: boolean;\n apiErrors?: string;\n clearApiErrors?: () => void;\n isBackFromPlanpay?: boolean;\n}\n"]}
|
|
@@ -36,8 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.ConfirmationStepContextWrapper = void 0;
|
|
39
|
-
const react_1 =
|
|
40
|
-
const react_2 = require("react");
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
41
40
|
const BookingAPI_1 = __importDefault(require("../../api/BookingAPI"));
|
|
42
41
|
const contexts_1 = require("../index.js");
|
|
43
42
|
const hooks_1 = require("../../hooks/index.js");
|
|
@@ -50,12 +49,12 @@ const ConfirmationStepContext_1 = require("./ConfirmationStepContext");
|
|
|
50
49
|
const ConfirmationStepContextProvider = ConfirmationStepContext_1.ConfirmationStepContext.Provider;
|
|
51
50
|
const ConfirmationStepContextWrapper = ({ children }) => {
|
|
52
51
|
const { queryPaymentMethod, queryRoomstayId: queryReservationId, queryPlanpayCheckoutId } = (0, ConfirmationQuery_1.useConfirmationQuery)();
|
|
53
|
-
const [isLoading, setIsLoading] = (0,
|
|
54
|
-
const [apiErrors, setApiErrors] = (0,
|
|
52
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
53
|
+
const [apiErrors, setApiErrors] = (0, react_1.useState)('');
|
|
55
54
|
const methods = (0, react_hook_form_1.useForm)({
|
|
56
55
|
mode: 'onChange',
|
|
57
56
|
});
|
|
58
|
-
const basketContext = (0,
|
|
57
|
+
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
59
58
|
const basketRows = basketContext.getAllValidRows();
|
|
60
59
|
const basketAddonRows = basketContext.basketAddonRows;
|
|
61
60
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
@@ -99,7 +98,7 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
99
98
|
};
|
|
100
99
|
}
|
|
101
100
|
});
|
|
102
|
-
const onSubmit = (getPaymentDetails, preValidate, onPostValidationError, onSuccess) => (formValues) => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
+
const onSubmit = (getPaymentDetails, comments, preValidate, onPostValidationError, onSuccess) => (formValues) => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
102
|
var _a;
|
|
104
103
|
DataLayer_1.default.instance.sendInteraction('Complete Booking', DataLayer_1.InteractionType.BUTTON, DataLayer_1.InteractionStep.GUEST_DETAILS);
|
|
105
104
|
setIsLoading(true);
|
|
@@ -111,7 +110,7 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
111
110
|
}
|
|
112
111
|
const payment = yield getPaymentDetails();
|
|
113
112
|
try {
|
|
114
|
-
data = yield BookingAPI_1.default.Reservation.bookNow(basketRows, toUserProfiles(formValues), payment, basketAddonRows,
|
|
113
|
+
data = yield BookingAPI_1.default.Reservation.bookNow(basketRows, toUserProfiles(formValues), payment, basketAddonRows, comments || '', hotel === null || hotel === void 0 ? void 0 : hotel.hotelID);
|
|
115
114
|
basketContext.booked(data);
|
|
116
115
|
const validationResult = yield validateReservation(data);
|
|
117
116
|
if (validationResult) {
|
|
@@ -200,8 +199,8 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
200
199
|
}
|
|
201
200
|
});
|
|
202
201
|
const clearApiErrors = () => setApiErrors('');
|
|
203
|
-
const book = (getPaymentDetails, preValidate, onPostValidationError, onSuccess) => __awaiter(void 0, void 0, void 0, function* () {
|
|
204
|
-
yield methods.handleSubmit(onSubmit(getPaymentDetails, preValidate, onPostValidationError, onSuccess))();
|
|
202
|
+
const book = (getPaymentDetails, comments, preValidate, onPostValidationError, onSuccess) => __awaiter(void 0, void 0, void 0, function* () {
|
|
203
|
+
yield methods.handleSubmit(onSubmit(getPaymentDetails, comments, preValidate, onPostValidationError, onSuccess))();
|
|
205
204
|
});
|
|
206
205
|
return (react_1.default.createElement(react_hook_form_1.FormProvider, Object.assign({}, methods),
|
|
207
206
|
react_1.default.createElement(ConfirmationStepContextProvider, { value: {
|