@roomstay/frontend 2.1.15 → 2.1.17
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/535.bundle.js +2 -0
- package/dist/559.bundle.js +1 -1
- package/dist/760.bundle.js +1 -1
- package/dist/882.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/Icon/Icon.d.ts +1 -0
- package/dist/src/components/generic/Icon/Icon.js +5 -1
- package/dist/src/components/generic/Icon/Icon.js.map +1 -1
- package/dist/src/components/generic/InputGroup/InputGroup.js +4 -2
- package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
- package/dist/src/components/navigation/Header.js +15 -15
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/steps/addons/AddonCard.js +11 -11
- package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +2 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js +10 -10
- package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js.map +1 -1
- package/dist/src/components/steps/room/ImageGallerySlider.js +2 -1
- package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +21 -21
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js +17 -18
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +5 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.js +12 -12
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +7 -8
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/providers/ImageProvider.d.ts +2 -1
- package/dist/src/providers/ImageProvider.js +1 -0
- package/dist/src/providers/ImageProvider.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +6 -0
- package/dist/src/translations/Translation.js +6 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +6 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Color.js +1 -1
- package/dist/src/util/Color.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/RSCompany.js +1 -0
- package/dist/tests/offline/entry/RSCompany.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/399.bundle.js +0 -2
- /package/dist/{399.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAiBA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,yCAAqB,CAAA;AACzB,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B","sourcesContent":["import type { ReactChild } from 'react';\n\nimport type { Language } from '@/providers/LanguageProvider';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { MemberOnlyModalInputs } from '@/components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport type { PlanPayEnvironment } from '@planpay/web';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'X',\n}\n\nexport interface ConfigHotel extends HasDatalayerTags {\n hotelID: number | string;\n providerHotelID: string;\n\n /* Fields subject to change when pulled from API */\n name: string;\n description?: string;\n locationDescription?: string;\n\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n\n phone?: string;\n\n checkInTime?: string;\n checkOutTime?: string;\n\n paymentCardTypes?: EPaymentCardType[];\n\n policies?: string;\n\n maxOccupancy?: number;\n\n /* End of Changing Fields */\n\n startsWeekOnDay?: WeekdayStartsOn;\n\n hotelUrl: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultCurrency: string;\n defaultLanguage: Language;\n logo: string | ReactChild;\n heroImage: string;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n colors: ColorProfile;\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n\n crossSellHotelIds?: string[];\n\n googleMapsImage?: string;\n\n hideByLine?: boolean;\n\n /**\n * Wether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n\n /**\n * Distances for the Summary, and Hotel Info pages\n */\n transportDistances?: TransportDistances;\n\n distanceUnitType: DistanceUnitType;\n perks: HotelPerk[];\n\n vgsVaultName: string;\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n\n forwardFindReservationToSynxis?: boolean;\n\n additionalOptions?: { [name: string]: any };\n\n images?: string[];\n\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n\n paymentMethods: EBookingPaymentMethod[];\n\n planpay?: {\n minDaysShowPlanpay: number;\n env: PlanPayEnvironment;\n };\n\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n}\n\nexport type Hotel = ConfigHotel & {\n hotelID: string;\n\n hasLoadedDetails?: boolean;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n dataSource: HotelDataSource;\n\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAiBA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,yCAAqB,CAAA;AACzB,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B","sourcesContent":["import type { ReactChild } from 'react';\n\nimport type { Language } from '@/providers/LanguageProvider';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { MemberOnlyModalInputs } from '@/components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport type { PlanPayEnvironment } from '@planpay/web';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'X',\n}\n\nexport interface ConfigHotel extends HasDatalayerTags {\n hotelID: number | string;\n providerHotelID: string;\n\n /* Fields subject to change when pulled from API */\n name: string;\n shortName?: string;\n description?: string;\n locationDescription?: string;\n\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n\n phone?: string;\n\n checkInTime?: string;\n checkOutTime?: string;\n\n paymentCardTypes?: EPaymentCardType[];\n\n policies?: string;\n\n maxOccupancy?: number;\n\n /* End of Changing Fields */\n\n startsWeekOnDay?: WeekdayStartsOn;\n\n hotelUrl: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultCurrency: string;\n defaultLanguage: Language;\n logo: string | ReactChild;\n heroImage: string;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n colors: ColorProfile;\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n\n crossSellHotelIds?: string[];\n\n googleMapsImage?: string;\n\n hideByLine?: boolean;\n\n /**\n * Wether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n\n /**\n * Distances for the Summary, and Hotel Info pages\n */\n transportDistances?: TransportDistances;\n\n distanceUnitType: DistanceUnitType;\n perks: HotelPerk[];\n\n vgsVaultName: string;\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n\n forwardFindReservationToSynxis?: boolean;\n\n additionalOptions?: { [name: string]: any };\n\n images?: string[];\n\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n\n paymentMethods: EBookingPaymentMethod[];\n\n planpay?: {\n minDaysShowPlanpay: number;\n env: PlanPayEnvironment;\n };\n\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n}\n\nexport type Hotel = ConfigHotel & {\n hotelID: string;\n\n hasLoadedDetails?: boolean;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n dataSource: HotelDataSource;\n\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\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.EFindReservationPath = exports.QUERY_PARAM_NAME = void 0;
|
|
39
|
-
const react_1 =
|
|
40
|
-
const react_2 = require("react");
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
41
40
|
const react_i18next_1 = require("react-i18next");
|
|
42
41
|
const Headline_1 = __importDefault(require("../../components/generic/Headline"));
|
|
43
42
|
const TextBox_1 = __importDefault(require("../../components/generic/TextBox"));
|
|
@@ -61,6 +60,7 @@ const UnauthenticatedUserModal_1 = require("../../components/generic/modal/Signi
|
|
|
61
60
|
const MemberPortalFeature_1 = __importDefault(require("../../providers/feature/MemberPortalFeature"));
|
|
62
61
|
const Validation_1 = require("../../util/Validation");
|
|
63
62
|
const SmallSpinner_1 = __importDefault(require("../../components/generic/loader/SmallSpinner"));
|
|
63
|
+
const ImageProvider_1 = __importStar(require("../../providers/ImageProvider"));
|
|
64
64
|
const SignInForm = react_1.default.lazy(() => Promise.resolve().then(() => __importStar(require('../../components/User/Forms/SignInForm'))).then(({ SignInForm }) => ({
|
|
65
65
|
default: SignInForm,
|
|
66
66
|
})));
|
|
@@ -102,12 +102,12 @@ function FindReservation() {
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
const { path } = (0, react_router_dom_1.useParams)();
|
|
105
|
-
const firstTime = (0,
|
|
106
|
-
const nextViewingScreen = (0,
|
|
107
|
-
const [isLoading, setIsLoading] = (0,
|
|
108
|
-
const [apiErrorMessages, setApiErrorMessages] = (0,
|
|
109
|
-
const [viewingScreen, setViewingScreen] = (0,
|
|
110
|
-
(0,
|
|
105
|
+
const firstTime = (0, react_1.useRef)(true);
|
|
106
|
+
const nextViewingScreen = (0, react_1.useRef)(null);
|
|
107
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
108
|
+
const [apiErrorMessages, setApiErrorMessages] = (0, react_1.useState)('');
|
|
109
|
+
const [viewingScreen, setViewingScreen] = (0, react_1.useState)(pathToScreenMapping[path]);
|
|
110
|
+
(0, react_1.useEffect)(() => {
|
|
111
111
|
if (firstTime.current) {
|
|
112
112
|
firstTime.current = false;
|
|
113
113
|
setViewingScreen(pathToScreenMapping[path]);
|
|
@@ -132,10 +132,10 @@ function FindReservation() {
|
|
|
132
132
|
});
|
|
133
133
|
};
|
|
134
134
|
const { raise } = (0, hooks_1.useEvent)();
|
|
135
|
-
(0,
|
|
135
|
+
(0, react_1.useEffect)(() => {
|
|
136
136
|
const background = document.createElement('div');
|
|
137
137
|
background.classList.add('dbe-background');
|
|
138
|
-
background.style.backgroundImage = `url('${hotel === null || hotel === void 0 ? void 0 : hotel.heroImage}')`;
|
|
138
|
+
background.style.backgroundImage = `url('${(hotel === null || hotel === void 0 ? void 0 : hotel.heroImage) && ImageProvider_1.default.resizeImage(hotel === null || hotel === void 0 ? void 0 : hotel.heroImage, ImageProvider_1.ImageSize.Original)}')`;
|
|
139
139
|
RoomstayThemeEngine_1.default.EngineContainer.classList.add('--transparent-bg');
|
|
140
140
|
RoomstayThemeEngine_1.default.EngineContainer.appendChild(background);
|
|
141
141
|
const event = new events_1.FindReservationViewEvent();
|
|
@@ -150,7 +150,7 @@ function FindReservation() {
|
|
|
150
150
|
}
|
|
151
151
|
};
|
|
152
152
|
}, []);
|
|
153
|
-
(0,
|
|
153
|
+
(0, react_1.useEffect)(() => {
|
|
154
154
|
if (hotel === null || hotel === void 0 ? void 0 : hotel.forwardFindReservationToSynxis) {
|
|
155
155
|
window.open(`https://be.synxis.com/signin?hotel=` + hotel.hotelID);
|
|
156
156
|
}
|
|
@@ -246,7 +246,7 @@ function FindReservation() {
|
|
|
246
246
|
react_1.default.createElement("div", { className: "col-md-6 col-xl-4 u-fill-white u-pad--heavy u-shadow-accent-large u-border-rounded" },
|
|
247
247
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: true, startOpen: true },
|
|
248
248
|
react_1.default.createElement(Fade_1.default, { open: viewingScreen === 'Default', onExitCompletely: onExit }, defaultContents),
|
|
249
|
-
react_1.default.createElement(
|
|
249
|
+
react_1.default.createElement(react_1.Suspense, { fallback: SmallSpinner_1.default },
|
|
250
250
|
react_1.default.createElement(Fade_1.default, { open: viewingScreen === 'SignIn', onExitCompletely: onExit }, signInForm),
|
|
251
251
|
react_1.default.createElement(Fade_1.default, { open: viewingScreen === 'SignUp', onExitCompletely: onExit }, signUpForm),
|
|
252
252
|
react_1.default.createElement(Fade_1.default, { open: viewingScreen === 'ForgotPassword', onExitCompletely: onExit }, forgotPasswordForm))))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindReservation.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservation.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useEffect, useRef, useState, Suspense } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport TextBox from '@/components/generic/TextBox';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport BEButton from '@/components/generic/BEButton';\nimport { useForm } from 'react-hook-form';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport API from '@/api/BookingAPI';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { useHistory, useParams } from 'react-router-dom';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { Translation } from 'translations/Translation';\nimport StepManager from '@/util/StepManager';\nimport FadeAnimation from '@/animations/Fade';\nimport { FindReservationViewEvent } from '@frontend/events';\nimport { EViewingScreen } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { EMAIL_REGEX } from '@/util/Validation';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\n\nconst SignInForm = React.lazy(() =>\n import('@/components/User/Forms/SignInForm').then(({ SignInForm }) => ({\n default: SignInForm,\n }))\n);\nconst SignUpForm = React.lazy(() =>\n import('@/components/User/Forms/SignUpForm').then(({ SignUpForm }) => ({\n default: SignUpForm,\n }))\n);\nconst ForgotPasswordForm = React.lazy(() =>\n import('@/components/User/Forms/ForgotPasswordForm').then(({ ForgotPasswordForm }) => ({\n default: ForgotPasswordForm,\n }))\n);\n\nexport const QUERY_PARAM_NAME = 'path';\n\nexport enum EFindReservationPath {\n FindReservation = 'find-reservation',\n Login = 'login',\n Register = 'register',\n Forgot = 'forgot',\n}\n\nconst pathToScreenMapping: { [path in EFindReservationPath]: EViewingScreen } = {\n [EFindReservationPath.FindReservation]: EViewingScreen.Default,\n [EFindReservationPath.Login]: EViewingScreen.SignIn,\n [EFindReservationPath.Register]: EViewingScreen.SignUp,\n [EFindReservationPath.Forgot]: EViewingScreen.ForgotPassword,\n};\n\ninterface IQueryParams {\n [QUERY_PARAM_NAME]: EFindReservationPath;\n}\n\nexport default function FindReservation() {\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const { register, formState, handleSubmit, getValues } = useForm({\n mode: 'onChange',\n });\n\n const errors = formState.errors;\n\n const getValidationClass = (name: string) => {\n if (errors && formState.touchedFields[name]) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const { path }: IQueryParams = useParams<IQueryParams>();\n const firstTime = useRef<boolean>(true);\n const nextViewingScreen = useRef<EViewingScreen | null>(null);\n\n const [isLoading, setIsLoading] = useState(false);\n const [apiErrorMessages, setApiErrorMessages] = useState('');\n const [viewingScreen, setViewingScreen] = useState<EViewingScreen | null>(pathToScreenMapping[path]);\n\n useEffect(() => {\n if (firstTime.current) {\n firstTime.current = false;\n setViewingScreen(pathToScreenMapping[path]);\n } else {\n setViewingScreen(null);\n nextViewingScreen.current = pathToScreenMapping[path];\n }\n }, [path]);\n\n const history = useHistory();\n\n const onSubmit = () => {\n setIsLoading(true);\n setApiErrorMessages('');\n\n API.Reservation.findReservation(getValues('Ref'), getValues('Email'), hotel?.hotelID as string)\n .then((data) => {\n history.push(`/find-reservation/${getValues('Ref')}/${getValues('Email')}`);\n })\n .catch(({ Message }) => {\n console.log(Message);\n setApiErrorMessages(Message);\n setIsLoading(false);\n });\n };\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const background = document.createElement('div');\n background.classList.add('dbe-background');\n background.style.backgroundImage = `url('${hotel?.heroImage}')`;\n\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n RoomstayThemeEngine.EngineContainer.appendChild(background);\n\n const event = new FindReservationViewEvent();\n raise(event);\n\n return () => {\n try {\n RoomstayThemeEngine.EngineContainer.removeChild(background);\n RoomstayThemeEngine.EngineContainer.classList.remove('--transparent-bg');\n } catch (ex) {\n console.log('Unable to remove bg');\n }\n };\n }, []);\n\n useEffect(() => {\n if (hotel?.forwardFindReservationToSynxis) {\n window.open(`https://be.synxis.com/signin?hotel=` + hotel.hotelID);\n }\n }, [hotel]);\n\n const onBack = async () => {\n history.push(StepManager.getFirstStep().getStepUrl());\n };\n\n const handleSubmitOnClick = () => {\n handleSubmit(onSubmit)();\n };\n\n const onSignInClicked = () => {\n history.push(`/${EFindReservationPath.Login}`);\n };\n\n const onBackToItineraryClicked = () => {\n history.push(`/${EFindReservationPath.FindReservation}`);\n };\n\n const onSignUpClicked = () => {\n history.push(`/${EFindReservationPath.Register}`);\n };\n\n const onForgotPasswordClicked = () => {\n history.push(`/${EFindReservationPath.Forgot}`);\n };\n\n const onExit = () => {\n setViewingScreen(nextViewingScreen.current);\n };\n\n const defaultContents = (\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"u-marg-bottom--heavy\">\n <Headline size=\"extra-large\">{t(Translation.FindReservation.FindYourReservation)}</Headline>\n </div>\n <AutoAutoHeight open={!!apiErrorMessages}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{apiErrorMessages}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy}>\n <strong>{t(Translation.FindReservation.Confirmation)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"51244AB23101\"\n required\n validationStatus={getValidationClass('Ref')}\n {...register('Ref', {\n required: true,\n })}\n />\n </div>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy}>\n <strong>{t(Translation.FindReservation.EmailAddress)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required\n validationStatus={getValidationClass('Email')}\n {...register('Email', {\n required: true,\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-flex justify-content-end w-100\">\n <BEButton primary filled mobileWidth isLoading={isLoading} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={handleSubmitOnClick}>\n {t(Translation.FindReservation.FindReservation)}\n </BEButton>\n <button type=\"submit\" className=\"u-none\">\n {t(Translation.FindReservation.Submit)}\n </button>\n </div>\n <LineBreak />\n {MemberPortalFeature.isActive() && (\n <div className=\"u-marg-bottom--heavy\">\n <BEButton isText primary size=\"small\" onClick={onSignInClicked}>\n Or sign in for more\n </BEButton>\n </div>\n )}\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.FindReservation.Question)}</strong>\n </Text>\n </div>\n <Text type={TextType.Small}>{t(Translation.FindReservation.Answer1)}</Text>\n <Text type={TextType.Small}>{t(Translation.FindReservation.Answer2)}</Text>\n <LineBreak />\n <BEButton textColor={Color.Accent} primary={false} filled={false} mobileWidth size=\"small\" icon={IconType.ArrowLeft2} iconPosition=\"left\" onClick={onBack} isText>\n {t(Translation.FindReservation.Back)}\n </BEButton>\n </form>\n );\n\n const signInForm = (\n <>\n <SignInForm onForgotPassword={onForgotPasswordClicked} />\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <BEButton isText primary size=\"small\" onClick={onBackToItineraryClicked}>\n Or use Confirmation/Itinerary Number\n </BEButton>\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n No online account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignUpClicked}>\n Sign up\n </BEButton>{' '}\n to save time on your next booking.\n </Text>\n </>\n );\n\n const signUpForm = (\n <>\n <SignUpForm />\n <LineBreak />\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n Already have an account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignInClicked}>\n Sign in\n </BEButton>{' '}\n to login with your account.\n </Text>\n </>\n );\n\n const forgotPasswordForm = (\n <>\n <ForgotPasswordForm onCancelled={onSignInClicked} />\n <LineBreak />\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n No online account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignUpClicked}>\n Sign up\n </BEButton>{' '}\n to save time on your next booking.\n </Text>\n </>\n );\n\n return (\n <div className=\"u-pad-left u-pad-right\">\n <div className=\"container u-marg-top--heavy u-pad-bottom--massive\">\n <div className=\"row u-pad-bottom--massive\">\n <div className=\"col-md-6 col-xl-4 u-fill-white u-pad--heavy u-shadow-accent-large u-border-rounded\">\n <AutoAutoHeight open startOpen>\n <FadeAnimation open={viewingScreen === 'Default'} onExitCompletely={onExit}>\n {defaultContents}\n </FadeAnimation>\n <Suspense fallback={SmallSpinner}>\n <FadeAnimation open={viewingScreen === 'SignIn'} onExitCompletely={onExit}>\n {signInForm}\n </FadeAnimation>\n <FadeAnimation open={viewingScreen === 'SignUp'} onExitCompletely={onExit}>\n {signUpForm}\n </FadeAnimation>\n <FadeAnimation open={viewingScreen === 'ForgotPassword'} onExitCompletely={onExit}>\n {forgotPasswordForm}\n </FadeAnimation>\n </Suspense>\n </AutoAutoHeight>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FindReservation.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservation.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport TextBox from '@/components/generic/TextBox';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport BEButton from '@/components/generic/BEButton';\nimport { useForm } from 'react-hook-form';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport API from '@/api/BookingAPI';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { useHistory, useParams } from 'react-router-dom';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { Translation } from 'translations/Translation';\nimport StepManager from '@/util/StepManager';\nimport FadeAnimation from '@/animations/Fade';\nimport { FindReservationViewEvent } from '@frontend/events';\nimport { EViewingScreen } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { EMAIL_REGEX } from '@/util/Validation';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\n\nconst SignInForm = React.lazy(() =>\n import('@/components/User/Forms/SignInForm').then(({ SignInForm }) => ({\n default: SignInForm,\n }))\n);\nconst SignUpForm = React.lazy(() =>\n import('@/components/User/Forms/SignUpForm').then(({ SignUpForm }) => ({\n default: SignUpForm,\n }))\n);\nconst ForgotPasswordForm = React.lazy(() =>\n import('@/components/User/Forms/ForgotPasswordForm').then(({ ForgotPasswordForm }) => ({\n default: ForgotPasswordForm,\n }))\n);\n\nexport const QUERY_PARAM_NAME = 'path';\n\nexport enum EFindReservationPath {\n FindReservation = 'find-reservation',\n Login = 'login',\n Register = 'register',\n Forgot = 'forgot',\n}\n\nconst pathToScreenMapping: { [path in EFindReservationPath]: EViewingScreen } = {\n [EFindReservationPath.FindReservation]: EViewingScreen.Default,\n [EFindReservationPath.Login]: EViewingScreen.SignIn,\n [EFindReservationPath.Register]: EViewingScreen.SignUp,\n [EFindReservationPath.Forgot]: EViewingScreen.ForgotPassword,\n};\n\ninterface IQueryParams {\n [QUERY_PARAM_NAME]: EFindReservationPath;\n}\n\nexport default function FindReservation() {\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const { register, formState, handleSubmit, getValues } = useForm({\n mode: 'onChange',\n });\n\n const errors = formState.errors;\n\n const getValidationClass = (name: string) => {\n if (errors && formState.touchedFields[name]) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const { path }: IQueryParams = useParams<IQueryParams>();\n const firstTime = useRef<boolean>(true);\n const nextViewingScreen = useRef<EViewingScreen | null>(null);\n\n const [isLoading, setIsLoading] = useState(false);\n const [apiErrorMessages, setApiErrorMessages] = useState('');\n const [viewingScreen, setViewingScreen] = useState<EViewingScreen | null>(pathToScreenMapping[path]);\n\n useEffect(() => {\n if (firstTime.current) {\n firstTime.current = false;\n setViewingScreen(pathToScreenMapping[path]);\n } else {\n setViewingScreen(null);\n nextViewingScreen.current = pathToScreenMapping[path];\n }\n }, [path]);\n\n const history = useHistory();\n\n const onSubmit = () => {\n setIsLoading(true);\n setApiErrorMessages('');\n\n API.Reservation.findReservation(getValues('Ref'), getValues('Email'), hotel?.hotelID as string)\n .then((data) => {\n history.push(`/find-reservation/${getValues('Ref')}/${getValues('Email')}`);\n })\n .catch(({ Message }) => {\n console.log(Message);\n setApiErrorMessages(Message);\n setIsLoading(false);\n });\n };\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const background = document.createElement('div');\n background.classList.add('dbe-background');\n background.style.backgroundImage = `url('${hotel?.heroImage && ImageProvider.resizeImage(hotel?.heroImage, ImageSize.Original)}')`;\n\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n RoomstayThemeEngine.EngineContainer.appendChild(background);\n\n const event = new FindReservationViewEvent();\n raise(event);\n\n return () => {\n try {\n RoomstayThemeEngine.EngineContainer.removeChild(background);\n RoomstayThemeEngine.EngineContainer.classList.remove('--transparent-bg');\n } catch (ex) {\n console.log('Unable to remove bg');\n }\n };\n }, []);\n\n useEffect(() => {\n if (hotel?.forwardFindReservationToSynxis) {\n window.open(`https://be.synxis.com/signin?hotel=` + hotel.hotelID);\n }\n }, [hotel]);\n\n const onBack = async () => {\n history.push(StepManager.getFirstStep().getStepUrl());\n };\n\n const handleSubmitOnClick = () => {\n handleSubmit(onSubmit)();\n };\n\n const onSignInClicked = () => {\n history.push(`/${EFindReservationPath.Login}`);\n };\n\n const onBackToItineraryClicked = () => {\n history.push(`/${EFindReservationPath.FindReservation}`);\n };\n\n const onSignUpClicked = () => {\n history.push(`/${EFindReservationPath.Register}`);\n };\n\n const onForgotPasswordClicked = () => {\n history.push(`/${EFindReservationPath.Forgot}`);\n };\n\n const onExit = () => {\n setViewingScreen(nextViewingScreen.current);\n };\n\n const defaultContents = (\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"u-marg-bottom--heavy\">\n <Headline size=\"extra-large\">{t(Translation.FindReservation.FindYourReservation)}</Headline>\n </div>\n <AutoAutoHeight open={!!apiErrorMessages}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{apiErrorMessages}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy}>\n <strong>{t(Translation.FindReservation.Confirmation)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"51244AB23101\"\n required\n validationStatus={getValidationClass('Ref')}\n {...register('Ref', {\n required: true,\n })}\n />\n </div>\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy}>\n <strong>{t(Translation.FindReservation.EmailAddress)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required\n validationStatus={getValidationClass('Email')}\n {...register('Email', {\n required: true,\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-flex justify-content-end w-100\">\n <BEButton primary filled mobileWidth isLoading={isLoading} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={handleSubmitOnClick}>\n {t(Translation.FindReservation.FindReservation)}\n </BEButton>\n <button type=\"submit\" className=\"u-none\">\n {t(Translation.FindReservation.Submit)}\n </button>\n </div>\n <LineBreak />\n {MemberPortalFeature.isActive() && (\n <div className=\"u-marg-bottom--heavy\">\n <BEButton isText primary size=\"small\" onClick={onSignInClicked}>\n Or sign in for more\n </BEButton>\n </div>\n )}\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.FindReservation.Question)}</strong>\n </Text>\n </div>\n <Text type={TextType.Small}>{t(Translation.FindReservation.Answer1)}</Text>\n <Text type={TextType.Small}>{t(Translation.FindReservation.Answer2)}</Text>\n <LineBreak />\n <BEButton textColor={Color.Accent} primary={false} filled={false} mobileWidth size=\"small\" icon={IconType.ArrowLeft2} iconPosition=\"left\" onClick={onBack} isText>\n {t(Translation.FindReservation.Back)}\n </BEButton>\n </form>\n );\n\n const signInForm = (\n <>\n <SignInForm onForgotPassword={onForgotPasswordClicked} />\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <BEButton isText primary size=\"small\" onClick={onBackToItineraryClicked}>\n Or use Confirmation/Itinerary Number\n </BEButton>\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n No online account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignUpClicked}>\n Sign up\n </BEButton>{' '}\n to save time on your next booking.\n </Text>\n </>\n );\n\n const signUpForm = (\n <>\n <SignUpForm />\n <LineBreak />\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n Already have an account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignInClicked}>\n Sign in\n </BEButton>{' '}\n to login with your account.\n </Text>\n </>\n );\n\n const forgotPasswordForm = (\n <>\n <ForgotPasswordForm onCancelled={onSignInClicked} />\n <LineBreak />\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n No online account?\n </Text>\n <Text type={TextType.Small}>\n <BEButton isText size=\"small\" primary onClick={onSignUpClicked}>\n Sign up\n </BEButton>{' '}\n to save time on your next booking.\n </Text>\n </>\n );\n\n return (\n <div className=\"u-pad-left u-pad-right\">\n <div className=\"container u-marg-top--heavy u-pad-bottom--massive\">\n <div className=\"row u-pad-bottom--massive\">\n <div className=\"col-md-6 col-xl-4 u-fill-white u-pad--heavy u-shadow-accent-large u-border-rounded\">\n <AutoAutoHeight open startOpen>\n <FadeAnimation open={viewingScreen === 'Default'} onExitCompletely={onExit}>\n {defaultContents}\n </FadeAnimation>\n <Suspense fallback={SmallSpinner}>\n <FadeAnimation open={viewingScreen === 'SignIn'} onExitCompletely={onExit}>\n {signInForm}\n </FadeAnimation>\n <FadeAnimation open={viewingScreen === 'SignUp'} onExitCompletely={onExit}>\n {signUpForm}\n </FadeAnimation>\n <FadeAnimation open={viewingScreen === 'ForgotPassword'} onExitCompletely={onExit}>\n {forgotPasswordForm}\n </FadeAnimation>\n </Suspense>\n </AutoAutoHeight>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -26,13 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const react_1 =
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
30
|
const Color_1 = require("../../util/Color");
|
|
31
31
|
const Icon_1 = __importStar(require("../../components/generic/Icon/Icon"));
|
|
32
32
|
const Text_1 = __importStar(require("../../components/generic/Text"));
|
|
33
33
|
const Headline_1 = __importDefault(require("../../components/generic/Headline"));
|
|
34
34
|
const HotelLocationMap_1 = __importDefault(require("../../components/generic/map/HotelLocationMap"));
|
|
35
|
-
const react_2 = require("react");
|
|
36
35
|
const fslightbox_react_1 = __importDefault(require("fslightbox-react"));
|
|
37
36
|
const TransportDistanceFromHotelBlock_1 = __importDefault(require("../../components/summary/TransportDistanceFromHotelBlock"));
|
|
38
37
|
const hooks_1 = require("../../hooks/index.js");
|
|
@@ -50,8 +49,8 @@ function HotelInfo() {
|
|
|
50
49
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
51
50
|
const imageUrl = hotel === null || hotel === void 0 ? void 0 : hotel.heroImage;
|
|
52
51
|
const { line1, line2, postalCode, country } = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.address) !== null && _a !== void 0 ? _a : {};
|
|
53
|
-
const [lightboxController, setLightboxController] = (0,
|
|
54
|
-
const [images, setImages] = (0,
|
|
52
|
+
const [lightboxController, setLightboxController] = (0, react_1.useState)({ toggler: false, slide: 1 });
|
|
53
|
+
const [images, setImages] = (0, react_1.useState)([]);
|
|
55
54
|
const openSlider = (slide) => {
|
|
56
55
|
setLightboxController((controller) => ({ toggler: !controller.toggler, slide: slide + 1 }));
|
|
57
56
|
};
|
|
@@ -59,11 +58,11 @@ function HotelInfo() {
|
|
|
59
58
|
openSlider(4);
|
|
60
59
|
};
|
|
61
60
|
const { raise } = (0, hooks_1.useEvent)();
|
|
62
|
-
(0,
|
|
61
|
+
(0, react_1.useEffect)(() => {
|
|
63
62
|
const event = new events_1.StepHotelInfoViewEvent();
|
|
64
63
|
raise(event);
|
|
65
64
|
}, []);
|
|
66
|
-
(0,
|
|
65
|
+
(0, react_1.useEffect)(() => {
|
|
67
66
|
var _a, _b;
|
|
68
67
|
const newImages = [];
|
|
69
68
|
if ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.images) === null || _a === void 0 ? void 0 : _a.length) {
|
|
@@ -89,7 +88,7 @@ function HotelInfo() {
|
|
|
89
88
|
return (react_1.default.createElement("div", { style: { backgroundImage: `url('${resizedUrl}')`, paddingTop: '75%' }, className: "c-images u-block u-w-100 u-marg-bottom u-marg-bottom--heavy", onClick: openSliderOnClickHandler }));
|
|
90
89
|
};
|
|
91
90
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
92
|
-
react_1.default.createElement("div", { style: { backgroundImage: `url('${imageUrl}')` }, className: "c-masthead has-tint" },
|
|
91
|
+
react_1.default.createElement("div", { style: { backgroundImage: `url('${imageUrl && ImageProvider_1.default.resizeImage(imageUrl, ImageProvider_1.ImageSize.Original)}')` }, className: "c-masthead has-tint" },
|
|
93
92
|
react_1.default.createElement("div", { className: "container" },
|
|
94
93
|
react_1.default.createElement("div", { className: "c-masthead__body u-fill-white u-pad--heavy u-shadow-accent" },
|
|
95
94
|
react_1.default.createElement("h1", { className: "c-masthead__header" }, hotel === null || hotel === void 0 ? void 0 : hotel.name),
|
|
@@ -183,7 +182,7 @@ function HotelInfo() {
|
|
|
183
182
|
react_1.default.createElement("span", null,
|
|
184
183
|
"+ ",
|
|
185
184
|
images.length - 5)))))))))),
|
|
186
|
-
!!(images === null || images === void 0 ? void 0 : images.length) && react_1.default.createElement(fslightbox_react_1.default, { toggler: lightboxController.toggler, slide: lightboxController.slide, sources: images, type: "image" })));
|
|
185
|
+
!!(images === null || images === void 0 ? void 0 : images.length) && (react_1.default.createElement(fslightbox_react_1.default, { toggler: lightboxController.toggler, slide: lightboxController.slide, sources: images.map((image) => ImageProvider_1.default.resizeImage(image, ImageProvider_1.ImageSize.Original)), type: "image" }))));
|
|
187
186
|
}
|
|
188
187
|
exports.default = HotelInfo;
|
|
189
188
|
//# sourceMappingURL=HotelInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelInfo.js","sourceRoot":"/","sources":["src/pages/hotel/HotelInfo.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Color } from '@/util/Color';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport { useState, useEffect } from 'react';\nimport FsLightbox from 'fslightbox-react';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport BEButton from '@/components/generic/BEButton';\nimport { useHistory } from 'react-router-dom';\nimport StepManager from '@/util/StepManager';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { StepHotelInfoViewEvent } from '@frontend/events';\n\nexport default function HotelInfo() {\n const { hotel } = useCurrentHotel();\n const history = useHistory();\n const { t } = useTranslation();\n\n const imageUrl = hotel?.heroImage;\n\n const { line1, line2, postalCode, country } = hotel?.address ?? {};\n\n const [lightboxController, setLightboxController] = useState({ toggler: false, slide: 1 });\n const [images, setImages] = useState<string[]>([]);\n\n const openSlider = (slide: number) => {\n setLightboxController((controller) => ({ toggler: !controller.toggler, slide: slide + 1 }));\n };\n const openSliderOnClick = () => {\n openSlider(4);\n };\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepHotelInfoViewEvent();\n raise(event);\n }, []);\n\n useEffect(() => {\n const newImages: string[] = [];\n\n if (hotel?.images?.length) {\n newImages.push(...hotel.images);\n } else if (hotel?.rooms) {\n for (const room of Object.values(hotel?.rooms)) {\n room.images?.forEach((image) => {\n newImages.push(image);\n });\n }\n }\n\n setImages(newImages);\n }, [hotel?.rooms]);\n\n const onBookNowClick = () => {\n history.push(StepManager.getFirstStep().getStepUrl());\n };\n\n const getImage = (index: number) => {\n const openSliderOnClickHandler = () => {\n openSlider(index);\n };\n\n const resizedUrl = ImageProvider.resizeImage(images[index], ImageSize.Small);\n\n return (\n <div\n style={{ backgroundImage: `url('${resizedUrl}')`, paddingTop: '75%' }}\n className=\"c-images u-block u-w-100 u-marg-bottom u-marg-bottom--heavy\"\n onClick={openSliderOnClickHandler}\n />\n );\n };\n\n return (\n <>\n <div style={{ backgroundImage: `url('${imageUrl}')` }} className=\"c-masthead has-tint\">\n <div className=\"container\">\n <div className=\"c-masthead__body u-fill-white u-pad--heavy u-shadow-accent\">\n <h1 className=\"c-masthead__header\">{hotel?.name}</h1>\n <h2 className=\"c-masthead__sub-header\">{hotel?.address?.country}</h2>\n </div>\n </div>\n </div>\n <div className=\"u-fill-snow u-pad--heavy-med u-pad-top-bottom--heavy@m-\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 u-flex align-items-center\">\n <ul>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Map} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </span>\n </li>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Phone} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">{hotel?.phone}</span>\n </li>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Hotel2} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">\n <a href={hotel?.hotelUrl} style={{ color: 'var(--rs-color-accent-1)' }}>\n {hotel?.name}\n </a>\n </span>\n </li>\n <li className=\"u-flex\">\n <BEButton icon={IconType.ArrowRight} primary filled iconPosition=\"right\" onClick={onBookNowClick}>\n {t(Translation.HotelInfo.BookNowButton)}\n </BEButton>\n </li>\n </ul>\n </div>\n <div className=\"col-md-6\">\n <div className=\"c-overlap\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy u-marg-top u-marg-top--heavy\" style={{ height: '240px' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-flex u-flex-column justify-content-center\">\n <TransportDistanceFromHotelBlock hotel={hotel} />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"u-pad u-pad--heavy-plus u-pad-top-bottom--heavy@m-\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-lg-6\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Headline bold>About</Headline>\n </div>\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: hotel?.description?.replace('\\r\\n', '<br/><br/>') || '' }} />\n </Text>\n {!!hotel?.locationDescription && (\n <>\n <div className=\"u-marg-top\">\n <Text type={TextType.Small}>\n <strong>Location</strong>\n </Text>\n </div>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: hotel?.locationDescription?.replace('\\r\\n', '<br/><br/>') }} />\n </Text>\n </>\n )}\n </div>\n {!!hotel?.perks?.length && (\n <>\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Text type={TextType.Small}>\n <strong>And you get all these for free:</strong>\n </Text>\n </div>\n <div className=\"row\">\n {hotel?.perks.map((perk) => {\n return (\n <div className=\"col-6 col-md-4\" key={perk.name}>\n <div className=\"u-flex u-marg-bottom\">\n <div className=\"room-perk-icon\">{perk.iconElement ? perk.iconElement : <Icon icon={perk.icon as IconType} />}</div>\n <span className=\"u-flex__item\">\n <Text type={TextType.Small}>{perk.name}</Text>\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n {!!hotel?.hotelServices?.length && (\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>Hotel Amenities</Headline>\n </div>\n <div className=\"row\">\n {hotel?.hotelServices.map((hotelService, index) => {\n return (\n <div key={index} className=\"col-md-6\">\n <div className=\"u-flex u-marg-bottom\">\n <Icon icon={IconType.Check} color={Color.White} backgroundColor={Color.Accent} borderRadius=\"round\" noPadding size=\"16px\" />\n <span className=\"u-flex__item u-marg-left--light\">\n <Text type={TextType.Small}>{hotelService.name}</Text>\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {!!hotel?.policies && (\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>Policies</Headline>\n </div>\n <Text type={TextType.Small}>\n <a href={hotel?.policies} target=\"_blank\" style={{ color: hotel?.colors.accent }} rel=\"noreferrer\">\n {hotel?.policies}\n </a>\n </Text>\n </div>\n )}\n </div>\n <div className=\"col-lg-6\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Headline bold>Gallery</Headline>\n </div>\n {images.length >= 1 && getImage(0)}\n <div className=\"row\">\n {[1, 2, 3].map((index) => {\n if (images.length > index) {\n return (\n <div key={index} className=\"col-6\">\n {getImage(index)}\n </div>\n );\n }\n })}\n {images.length > 5 && (\n <div className=\"col-6\">\n <div className=\"c-images c-images--more\" onClick={openSliderOnClick}>\n {getImage(4)}\n <span>+ {images.length - 5}</span>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n {!!images?.length && <FsLightbox toggler={lightboxController.toggler} slide={lightboxController.slide} sources={images} type=\"image\" />}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HotelInfo.js","sourceRoot":"/","sources":["src/pages/hotel/HotelInfo.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Color } from '@/util/Color';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport FsLightbox from 'fslightbox-react';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport BEButton from '@/components/generic/BEButton';\nimport { useHistory } from 'react-router-dom';\nimport StepManager from '@/util/StepManager';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { StepHotelInfoViewEvent } from '@frontend/events';\n\nexport default function HotelInfo() {\n const { hotel } = useCurrentHotel();\n const history = useHistory();\n const { t } = useTranslation();\n\n const imageUrl = hotel?.heroImage;\n\n const { line1, line2, postalCode, country } = hotel?.address ?? {};\n\n const [lightboxController, setLightboxController] = useState({ toggler: false, slide: 1 });\n const [images, setImages] = useState<string[]>([]);\n\n const openSlider = (slide: number) => {\n setLightboxController((controller) => ({ toggler: !controller.toggler, slide: slide + 1 }));\n };\n const openSliderOnClick = () => {\n openSlider(4);\n };\n\n const { raise } = useEvent();\n\n useEffect(() => {\n const event = new StepHotelInfoViewEvent();\n raise(event);\n }, []);\n\n useEffect(() => {\n const newImages: string[] = [];\n\n if (hotel?.images?.length) {\n newImages.push(...hotel.images);\n } else if (hotel?.rooms) {\n for (const room of Object.values(hotel?.rooms)) {\n room.images?.forEach((image) => {\n newImages.push(image);\n });\n }\n }\n\n setImages(newImages);\n }, [hotel?.rooms]);\n\n const onBookNowClick = () => {\n history.push(StepManager.getFirstStep().getStepUrl());\n };\n\n const getImage = (index: number) => {\n const openSliderOnClickHandler = () => {\n openSlider(index);\n };\n\n const resizedUrl = ImageProvider.resizeImage(images[index], ImageSize.Small);\n\n return (\n <div\n style={{ backgroundImage: `url('${resizedUrl}')`, paddingTop: '75%' }}\n className=\"c-images u-block u-w-100 u-marg-bottom u-marg-bottom--heavy\"\n onClick={openSliderOnClickHandler}\n />\n );\n };\n\n return (\n <>\n <div style={{ backgroundImage: `url('${imageUrl && ImageProvider.resizeImage(imageUrl, ImageSize.Original)}')` }} className=\"c-masthead has-tint\">\n <div className=\"container\">\n <div className=\"c-masthead__body u-fill-white u-pad--heavy u-shadow-accent\">\n <h1 className=\"c-masthead__header\">{hotel?.name}</h1>\n <h2 className=\"c-masthead__sub-header\">{hotel?.address?.country}</h2>\n </div>\n </div>\n </div>\n <div className=\"u-fill-snow u-pad--heavy-med u-pad-top-bottom--heavy@m-\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 u-flex align-items-center\">\n <ul>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Map} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </span>\n </li>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Phone} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">{hotel?.phone}</span>\n </li>\n <li className=\"u-flex u-marg-bottom--heavy\">\n <Icon icon={IconType.Hotel2} size=\"1.3em\" color={Color.Accent} />\n <span className=\"u-flex__item u-marg-left\">\n <a href={hotel?.hotelUrl} style={{ color: 'var(--rs-color-accent-1)' }}>\n {hotel?.name}\n </a>\n </span>\n </li>\n <li className=\"u-flex\">\n <BEButton icon={IconType.ArrowRight} primary filled iconPosition=\"right\" onClick={onBookNowClick}>\n {t(Translation.HotelInfo.BookNowButton)}\n </BEButton>\n </li>\n </ul>\n </div>\n <div className=\"col-md-6\">\n <div className=\"c-overlap\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy u-marg-top u-marg-top--heavy\" style={{ height: '240px' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-flex u-flex-column justify-content-center\">\n <TransportDistanceFromHotelBlock hotel={hotel} />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"u-pad u-pad--heavy-plus u-pad-top-bottom--heavy@m-\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-lg-6\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Headline bold>About</Headline>\n </div>\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: hotel?.description?.replace('\\r\\n', '<br/><br/>') || '' }} />\n </Text>\n {!!hotel?.locationDescription && (\n <>\n <div className=\"u-marg-top\">\n <Text type={TextType.Small}>\n <strong>Location</strong>\n </Text>\n </div>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: hotel?.locationDescription?.replace('\\r\\n', '<br/><br/>') }} />\n </Text>\n </>\n )}\n </div>\n {!!hotel?.perks?.length && (\n <>\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Text type={TextType.Small}>\n <strong>And you get all these for free:</strong>\n </Text>\n </div>\n <div className=\"row\">\n {hotel?.perks.map((perk) => {\n return (\n <div className=\"col-6 col-md-4\" key={perk.name}>\n <div className=\"u-flex u-marg-bottom\">\n <div className=\"room-perk-icon\">{perk.iconElement ? perk.iconElement : <Icon icon={perk.icon as IconType} />}</div>\n <span className=\"u-flex__item\">\n <Text type={TextType.Small}>{perk.name}</Text>\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n {!!hotel?.hotelServices?.length && (\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>Hotel Amenities</Headline>\n </div>\n <div className=\"row\">\n {hotel?.hotelServices.map((hotelService, index) => {\n return (\n <div key={index} className=\"col-md-6\">\n <div className=\"u-flex u-marg-bottom\">\n <Icon icon={IconType.Check} color={Color.White} backgroundColor={Color.Accent} borderRadius=\"round\" noPadding size=\"16px\" />\n <span className=\"u-flex__item u-marg-left--light\">\n <Text type={TextType.Small}>{hotelService.name}</Text>\n </span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {!!hotel?.policies && (\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Headline bold>Policies</Headline>\n </div>\n <Text type={TextType.Small}>\n <a href={hotel?.policies} target=\"_blank\" style={{ color: hotel?.colors.accent }} rel=\"noreferrer\">\n {hotel?.policies}\n </a>\n </Text>\n </div>\n )}\n </div>\n <div className=\"col-lg-6\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom u-marg-bottom--heavy\">\n <Headline bold>Gallery</Headline>\n </div>\n {images.length >= 1 && getImage(0)}\n <div className=\"row\">\n {[1, 2, 3].map((index) => {\n if (images.length > index) {\n return (\n <div key={index} className=\"col-6\">\n {getImage(index)}\n </div>\n );\n }\n })}\n {images.length > 5 && (\n <div className=\"col-6\">\n <div className=\"c-images c-images--more\" onClick={openSliderOnClick}>\n {getImage(4)}\n <span>+ {images.length - 5}</span>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n {!!images?.length && (\n <FsLightbox\n toggler={lightboxController.toggler}\n slide={lightboxController.slide}\n sources={images.map((image) => ImageProvider.resizeImage(image, ImageSize.Original))}\n type=\"image\"\n />\n )}\n </>\n );\n}\n"]}
|
|
@@ -9,6 +9,7 @@ var ImageSize;
|
|
|
9
9
|
ImageSize[ImageSize["Medium"] = 768] = "Medium";
|
|
10
10
|
ImageSize[ImageSize["Large"] = 1024] = "Large";
|
|
11
11
|
ImageSize[ImageSize["ExtraLarge"] = 1600] = "ExtraLarge";
|
|
12
|
+
ImageSize[ImageSize["Original"] = 1920] = "Original";
|
|
12
13
|
})(ImageSize = exports.ImageSize || (exports.ImageSize = {}));
|
|
13
14
|
class ImageProvider {
|
|
14
15
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageProvider.js","sourceRoot":"/","sources":["src/providers/ImageProvider.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"ImageProvider.js","sourceRoot":"/","sources":["src/providers/ImageProvider.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,2CAAU,CAAA;IACV,2CAAU,CAAA;IACV,6CAAW,CAAA;IACX,+CAAY,CAAA;IACZ,8CAAY,CAAA;IACZ,wDAAiB,CAAA;IACjB,oDAAe,CAAA;AACnB,CAAC,EARW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAQpB;AAED,MAAM,aAAa;IAAnB;QACY,aAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B;;WAEG;QACI,0BAAqB,GAAsD,CAAC,GAAW,EAAE,IAAe,EAAE,EAAE;YAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE/B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACnC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,MAAM,EAAE;oBACR,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC1B;gBAED,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;gBAC1B,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IAiCN,CAAC;IA/BW,UAAU,CAAC,GAAW,EAAE,IAAe;QAC3C,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,GAAW,EAAE,IAAe;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEtC,4CAA4C;QAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;gBACzB,OAAO,MAAM,CAAC;aACjB;YAED,OAAO,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;SAC7B;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,kBAAe,IAAI,aAAa,EAAE,CAAC","sourcesContent":["export enum ImageSize {\n Icon = 128,\n Tiny = 256,\n Small = 512,\n Medium = 768,\n Large = 1024,\n ExtraLarge = 1600,\n Original = 1920,\n}\n\nclass ImageProvider {\n private imageMap = new Map();\n /**\n * Only returns after image is successfully loaded\n */\n public getLazyLoadedImageUrl: (url: string, size: ImageSize) => Promise<string> = (url: string, size: ImageSize) => {\n const imageMap = this.imageMap;\n\n return new Promise<string>((resolve) => {\n const id = this.getImageID(url, size);\n\n const mapUrl = this.imageMap.get(id);\n if (mapUrl) {\n return resolve(mapUrl);\n }\n\n const image = new Image();\n image.addEventListener('load', () => {\n resolve(image.src);\n imageMap.set(id, image.src);\n });\n image.src = this.resizeImage(url, size);\n });\n };\n\n private getImageID(url: string, size: ImageSize) {\n return `${url}|${size}`;\n }\n\n /**\n * Converts an Image URL to a resized image URL.\n *\n * Right now we can only manipulate Roomstay hosted images in S3, so only where the source\n * image URL contains cdn.app.roomstay.io can we add the resize parameters.\n *\n * This function will simply pass through any URL not matching the criteria\n *\n * @param url string\n * @param size ImageSize\n * @returns\n */\n public resizeImage(url: string, size: ImageSize): string {\n const id = this.getImageID(url, size);\n\n // Only check if source is from roomstay cdn\n if (url.includes('cdn.app.roomstay.io')) {\n const mapUrl = this.imageMap.get(id);\n if (mapUrl && mapUrl !== '') {\n return mapUrl;\n }\n\n return url + '?w=' + size;\n }\n\n return url;\n }\n}\n\nexport default new ImageProvider();\n"]}
|
|
@@ -195,6 +195,11 @@ export declare const Translation: {
|
|
|
195
195
|
NextRoom: string;
|
|
196
196
|
MoreDetails: string;
|
|
197
197
|
ExcludingTaxes: string;
|
|
198
|
+
CrossSellBlock: {
|
|
199
|
+
AvailabilityNearBy1: string;
|
|
200
|
+
AvailabilityNearBy2: string;
|
|
201
|
+
DateUnavailable: string;
|
|
202
|
+
};
|
|
198
203
|
};
|
|
199
204
|
Addon: {
|
|
200
205
|
SelectServiceDate: string;
|
|
@@ -336,6 +341,7 @@ export declare const Translation: {
|
|
|
336
341
|
BestRatePerksAlert: string;
|
|
337
342
|
YouAreEditing: string;
|
|
338
343
|
YouAreEditingAlert: string;
|
|
344
|
+
BookDirect: string;
|
|
339
345
|
};
|
|
340
346
|
Perks: {
|
|
341
347
|
AndYouGetAll: string;
|
|
@@ -198,6 +198,11 @@ exports.Translation = {
|
|
|
198
198
|
NextRoom: 'Step.Room.NextRoom',
|
|
199
199
|
MoreDetails: 'Step.Room.MoreDetails',
|
|
200
200
|
ExcludingTaxes: 'Step.Room.ExcludingTaxes',
|
|
201
|
+
CrossSellBlock: {
|
|
202
|
+
AvailabilityNearBy1: 'Step.Room.CrossSellBlock.AvailabilityNearBy1',
|
|
203
|
+
AvailabilityNearBy2: 'Step.Room.CrossSellBlock.AvailabilityNearBy2',
|
|
204
|
+
DateUnavailable: 'Step.Room.CrossSellBlock.DateUnavailable',
|
|
205
|
+
},
|
|
201
206
|
},
|
|
202
207
|
Addon: {
|
|
203
208
|
SelectServiceDate: 'Step.Addon.SelectServiceDate',
|
|
@@ -339,6 +344,7 @@ exports.Translation = {
|
|
|
339
344
|
BestRatePerksAlert: 'Misc.Alerts.BestRatePerksAlert',
|
|
340
345
|
YouAreEditing: 'Misc.Alerts.YouAreEditing',
|
|
341
346
|
YouAreEditingAlert: 'Misc.Alerts.YouAreEditingAlert',
|
|
347
|
+
BookDirect: 'Misc.Alerts.BookDirect',
|
|
342
348
|
},
|
|
343
349
|
Perks: {
|
|
344
350
|
AndYouGetAll: 'Misc.Perks.AndYouGetAll',
|