@roomstay/frontend 1.4.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{661.bundle.js → 171.bundle.js} +1 -1
- package/dist/201.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/steps/room/RoomList.js +35 -0
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +13 -0
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/events/RoomstayEventManager.d.ts +1 -1
- package/dist/src/events/RoomstayEventManager.js.map +1 -1
- package/dist/src/events/actions/GuestSearchEvent.d.ts +7 -0
- package/dist/src/events/actions/GuestSearchEvent.js +15 -0
- package/dist/src/events/actions/GuestSearchEvent.js.map +1 -0
- package/dist/src/events/actions/InitialHotelDetailsEvent.d.ts +7 -0
- package/dist/src/events/actions/InitialHotelDetailsEvent.js +15 -0
- package/dist/src/events/actions/InitialHotelDetailsEvent.js.map +1 -0
- package/dist/src/events/actions/RoomListSearchEvent.d.ts +9 -0
- package/dist/src/events/actions/RoomListSearchEvent.js +16 -0
- package/dist/src/events/actions/RoomListSearchEvent.js.map +1 -0
- package/dist/src/events/index.d.ts +8 -0
- package/dist/src/events/index.js +8 -0
- package/dist/src/events/index.js.map +1 -1
- package/dist/src/events/views/FindReservationResultsViewEvent.d.ts +7 -0
- package/dist/src/events/views/FindReservationResultsViewEvent.js +15 -0
- package/dist/src/events/views/FindReservationResultsViewEvent.js.map +1 -0
- package/dist/src/events/views/FindReservationViewEvent.d.ts +5 -0
- package/dist/src/events/views/FindReservationViewEvent.js +14 -0
- package/dist/src/events/views/FindReservationViewEvent.js.map +1 -0
- package/dist/src/events/views/StepAddonViewEvent.d.ts +7 -0
- package/dist/src/events/views/StepAddonViewEvent.js +15 -0
- package/dist/src/events/views/StepAddonViewEvent.js.map +1 -0
- package/dist/src/events/views/StepDateViewEvent.d.ts +5 -0
- package/dist/src/events/views/StepDateViewEvent.js +14 -0
- package/dist/src/events/views/StepDateViewEvent.js.map +1 -0
- package/dist/src/events/views/StepHotelInfoViewEvent.d.ts +5 -0
- package/dist/src/events/views/StepHotelInfoViewEvent.js +14 -0
- package/dist/src/events/views/StepHotelInfoViewEvent.js.map +1 -0
- package/dist/src/events/views/StepHotelViewEvent.d.ts +5 -0
- package/dist/src/events/views/StepHotelViewEvent.js +14 -0
- package/dist/src/events/views/StepHotelViewEvent.js.map +1 -0
- package/dist/src/events/views/StepThanksViewEvent.d.ts +7 -0
- package/dist/src/events/views/StepThanksViewEvent.js +15 -0
- package/dist/src/events/views/StepThanksViewEvent.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +9 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/IEventReservation.d.ts +7 -0
- package/dist/src/models/Api/IEventReservation.js +3 -0
- package/dist/src/models/Api/IEventReservation.js.map +1 -0
- package/dist/src/models/Client/Hotel/Hotel.d.ts +11 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/RoomListSearch.d.ts +18 -0
- package/dist/src/models/RoomListSearch.js +3 -0
- package/dist/src/models/RoomListSearch.js.map +1 -0
- package/dist/src/models/SearchParameters.d.ts +8 -0
- package/dist/src/models/SearchParameters.js +3 -0
- package/dist/src/models/SearchParameters.js.map +1 -0
- package/dist/src/pages/findReservation/FindReservation.js +4 -0
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +27 -0
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +6 -0
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +8 -0
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +6 -0
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +9 -4
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +19 -0
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StepThanksViewEvent = void 0;
|
|
4
|
+
const RoomstayEvent_1 = require("../RoomstayEvent");
|
|
5
|
+
class StepThanksViewEvent extends RoomstayEvent_1.RoomstayEvent {
|
|
6
|
+
constructor(res) {
|
|
7
|
+
super();
|
|
8
|
+
this.reservations = res;
|
|
9
|
+
}
|
|
10
|
+
static getLabel() {
|
|
11
|
+
return 'View/Thanks';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.StepThanksViewEvent = StepThanksViewEvent;
|
|
15
|
+
//# sourceMappingURL=StepThanksViewEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepThanksViewEvent.js","sourceRoot":"/","sources":["src/events/views/StepThanksViewEvent.ts"],"names":[],"mappings":";;;AACA,oDAAiD;AAEjD,MAAa,mBAAoB,SAAQ,6BAAa;IAElD,YAAmB,GAAwB;QACvC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAXD,kDAWC","sourcesContent":["import { IEventReservation } from 'models/Api/IEventReservation';\nimport { RoomstayEvent } from '../RoomstayEvent';\n\nexport class StepThanksViewEvent extends RoomstayEvent {\n public reservations: IEventReservation[];\n public constructor(res: IEventReservation[]) {\n super();\n\n this.reservations = res;\n }\n\n static getLabel(): string {\n return 'View/Thanks';\n }\n}\n"]}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -66,6 +66,11 @@ export * from './translations/Translation';
|
|
|
66
66
|
export * from './util/Color';
|
|
67
67
|
export * from './hooks/CurrentHotelHook';
|
|
68
68
|
export * from './hooks/EventHook';
|
|
69
|
+
/** @deprecated use `roomstay.events` instead */
|
|
69
70
|
export { default as RoomstayEventManager } from './events/RoomstayEventManager';
|
|
71
|
+
export declare const events: {
|
|
72
|
+
on: (eventType: string | import("./events/RoomstayEvent").RoomstayEvent, callback: import("./events/RoomstayEventManager").RoomstayEventCallback) => boolean;
|
|
73
|
+
raise: (event: import("./events/RoomstayEvent").RoomstayEvent) => Promise<void>;
|
|
74
|
+
};
|
|
70
75
|
export * from './events/index';
|
|
71
76
|
export declare const Version: any;
|
package/dist/src/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.Version = exports.react = void 0;
|
|
13
|
+
exports.Version = exports.events = exports.react = void 0;
|
|
14
14
|
const StepConfirmation_1 = require("./pages/steps/StepConfirmation/StepConfirmation");
|
|
15
15
|
const StepDate_1 = require("./pages/steps/StepDate/StepDate");
|
|
16
16
|
const StepRoom_1 = require("./pages/steps/StepRoom/StepRoom");
|
|
@@ -19,6 +19,7 @@ const StepManager_1 = require("./util/StepManager");
|
|
|
19
19
|
// TODO: Look into resolving this.
|
|
20
20
|
// @ts-ignore
|
|
21
21
|
const ReactRaw = require("react");
|
|
22
|
+
const RoomstayEventManager_1 = require("./events/RoomstayEventManager");
|
|
22
23
|
// @ts-ignore
|
|
23
24
|
exports.react = ReactRaw;
|
|
24
25
|
var react_i18next_1 = require("react-i18next");
|
|
@@ -138,8 +139,13 @@ __exportStar(require("./util/Color"), exports);
|
|
|
138
139
|
// Hooks
|
|
139
140
|
__exportStar(require("./hooks/CurrentHotelHook"), exports);
|
|
140
141
|
__exportStar(require("./hooks/EventHook"), exports);
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
/** @deprecated use `roomstay.events` instead */
|
|
143
|
+
var RoomstayEventManager_2 = require("./events/RoomstayEventManager");
|
|
144
|
+
Object.defineProperty(exports, "RoomstayEventManager", { enumerable: true, get: function () { return RoomstayEventManager_2.default; } });
|
|
145
|
+
exports.events = {
|
|
146
|
+
on: RoomstayEventManager_1.default.addEvent,
|
|
147
|
+
raise: RoomstayEventManager_1.default.raise,
|
|
148
|
+
};
|
|
143
149
|
__exportStar(require("./events/index"), exports);
|
|
144
150
|
//@ts-ignore
|
|
145
151
|
exports.Version = RS_VERSION;
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,sFAA+E;AAC/E,8DAAuD;AACvD,8DAAuD;AACvD,oEAA6D;AAC7D,oDAA6C;AAE7C,kCAAkC;AAClC,aAAa;AACb,kCAAkC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import StepConfirmation from './pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from './pages/steps/StepDate/StepDate';\nimport StepRoom from './pages/steps/StepRoom/StepRoom';\nimport StepThanks from './pages/steps/StepThanks/StepThanks';\nimport StepManager from './util/StepManager';\n\n// TODO: Look into resolving this.\n// @ts-ignore\nimport * as ReactRaw from 'react';\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\n// @ts-ignore\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport * from './engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from './engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from './engines/RecentSearchesEngine/RecentSearchesEngine';\nexport * from './engines/CustomEngine/CustomEngine';\n\nexport { default as Icon } from './components/generic/Icon';\nexport * from './components/generic/Icon';\nexport * from './components/generic/Text';\n\nexport { default as TextBox } from './components/generic/TextBox';\nexport { default as TextArea } from './components/generic/TextArea';\nexport { default as InputGroup } from './components/generic/InputGroup/InputGroup';\nexport { default as RadioFields } from './components/generic/radio/RadioFields';\nexport { default as Checkbox } from './components/generic/Checkbox';\n\nexport { default as LineBreak } from './components/generic/LineBreak';\nexport { default as AutoAutoHeight } from './animations/AutoAutoHeight';\nexport { default as Headline } from './components/generic/Headline';\n\nexport * from './components/generic/Alert';\nexport { default as Alert } from './components/generic/Alert';\nexport { default as BEButton } from './components/generic/BEButton';\n\nexport { BE_NO_ROOMS_FOUND_BLOCK } from './components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from './components/steps/room/NoRoomsFoundBlock';\n\nexport { default as StepConfirmationCountrySelector } from './components/steps/confirmation/StepConfirmationCountrySelector';\n\nexport * from './components/steps/confirmation/StepConfirmationCommentsComponent';\nexport * from './components/summary/BESummaryPerkBlock';\n\nexport * from './components/summary/BESummary';\n\nexport * from './components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from './components/steps/room/StepRoomBestRateAlert';\n\n// Loaders\nexport { default as SmallSpinner } from './components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from './providers/LanguageProvider';\nexport * from './providers/CurrencyProvider';\nexport { default as CurrencyProvider } from './providers/CurrencyProvider';\nexport { default as FeatureProvider } from './providers/FeatureProvider';\nexport { default as RatePillProvider } from './providers/RatePillProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from './providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from './providers/feature/DatePickerTypeFeature';\nexport { default as FeaturedPromoFeature } from './providers/feature/FeaturedPromoFeature';\nexport { default as InlineAddonStepFeature } from './providers/feature/InlineAddonStepFeature';\nexport { default as RoomUpsellFeature } from './providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from './providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { default as E164PhoneNumberFieldFeature } from './providers/feature/E164PhoneNumberFieldFeature';\n\n// Contexts\nexport * from '@frontend/contexts';\n\nexport { default as ConfirmationFormContext } from './contexts/ConfirmationFormContext';\n\nexport { default as SessionProvider } from './providers/SessionProvider';\nexport * from './providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from './providers/RoomstayThemeEngine';\nexport { registerReplacement, withDI } from './providers/DIProvider';\n\nexport { default as DataLayer } from './util/DataLayer';\nexport * from './util/DataLayer';\n\n// Models\nexport * from './models/Client/Hotel/Hotel';\nexport * from './models/Client/Hotel/HotelPerk';\n\nexport * from './models/Client/Hotel/DistanceUnitType.types';\nexport * from './models/Client/Hotel/WeekdayStartsOn.types';\n\nexport * from './models/Client/Hotel/Company';\n\nexport { default as API } from './api/BookingAPI';\n\n// Steps\nexport { default as StepManager } from './util/StepManager';\n\nexport { default as StepAddon } from './pages/steps/StepAddon/StepAddon';\nexport { default as StepDate } from './pages/steps/StepDate/StepDate';\nexport { default as StepConfirmation } from './pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepHotel } from './pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from './pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from './pages/steps/StepThanks/StepThanks';\n\nexport * from './translations/Translation';\n\n// Util\n\nexport * from './util/Color';\n\n// Hooks\n\nexport * from './hooks/CurrentHotelHook';\nexport * from './hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from './events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\nexport * from './events/index';\n\n//@ts-ignore\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEventReservation.js","sourceRoot":"/","sources":["src/models/Api/IEventReservation.ts"],"names":[],"mappings":"","sourcesContent":["export type IEventReservation = {\n reservationId: string;\n checkInTime: string;\n checkOutTime: string;\n totalPrice: number;\n priceCurrency: string;\n};\n"]}
|
|
@@ -87,3 +87,14 @@ export declare type Hotel = ConfigHotel & {
|
|
|
87
87
|
isLoading: boolean;
|
|
88
88
|
};
|
|
89
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* Used for DetailsHotel event
|
|
92
|
+
*/
|
|
93
|
+
export declare type InitialHotelDetailsEventPayload = {
|
|
94
|
+
name: string;
|
|
95
|
+
hotelID: number | string;
|
|
96
|
+
hotelUrl: string;
|
|
97
|
+
currency: string;
|
|
98
|
+
language: Language;
|
|
99
|
+
address?: HotelAddress;
|
|
100
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":"","sourcesContent":["import type { Language } from '../../../providers/LanguageProvider';\nimport type { HotelPerk } from './HotelPerk';\nimport type { HotelRoomOverwrite } from './HotelRoomOverwrite';\nimport type { ReactChild } from 'react';\nimport type ColorProfile from './ColorProfile';\nimport type HotelAddress from './HotelAddress';\nimport type { HotelRoomsDTO, HotelServiceDTO } from '../../Api/HotelDTO';\nimport type { HasDatalayerTags } from './Company';\nimport type { TransportDistances } from '../../Api/HotelOverrideDTO';\nimport type { MemberOnlyModalInputs } from '../../../components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { DistanceUnitType } from './DistanceUnitType.types';\nimport type { WeekdayStartsOn } from './WeekdayStartsOn.types';\nimport type { HotelDataSource } from './HotelDataSource.types';\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?: string[];\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 /**\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"]}
|
|
1
|
+
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":"","sourcesContent":["import type { Language } from '../../../providers/LanguageProvider';\nimport type { HotelPerk } from './HotelPerk';\nimport type { HotelRoomOverwrite } from './HotelRoomOverwrite';\nimport type { ReactChild } from 'react';\nimport type ColorProfile from './ColorProfile';\nimport type HotelAddress from './HotelAddress';\nimport type { HotelRoomsDTO, HotelServiceDTO } from '../../Api/HotelDTO';\nimport type { HasDatalayerTags } from './Company';\nimport type { TransportDistances } from '../../Api/HotelOverrideDTO';\nimport type { MemberOnlyModalInputs } from '../../../components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { DistanceUnitType } from './DistanceUnitType.types';\nimport type { WeekdayStartsOn } from './WeekdayStartsOn.types';\nimport type { HotelDataSource } from './HotelDataSource.types';\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?: string[];\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 /**\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"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare type RoomListSearch = {
|
|
2
|
+
name: string;
|
|
3
|
+
code: string;
|
|
4
|
+
lowestPrice: number;
|
|
5
|
+
highestPrice: number;
|
|
6
|
+
currency: string;
|
|
7
|
+
rates: RoomRateSearch[];
|
|
8
|
+
};
|
|
9
|
+
export declare type RoomRateSearch = {
|
|
10
|
+
name: string;
|
|
11
|
+
code: string;
|
|
12
|
+
price: RoomRateSearchPrice;
|
|
13
|
+
};
|
|
14
|
+
export declare type RoomRateSearchPrice = {
|
|
15
|
+
averagePrice: number;
|
|
16
|
+
totalPrice: number;
|
|
17
|
+
currency: string;
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoomListSearch.js","sourceRoot":"/","sources":["src/models/RoomListSearch.ts"],"names":[],"mappings":"","sourcesContent":["export type RoomListSearch = {\n name: string;\n code: string;\n lowestPrice: number;\n highestPrice: number;\n currency: string;\n rates: RoomRateSearch[];\n};\n\nexport type RoomRateSearch = {\n name: string;\n code: string;\n price: RoomRateSearchPrice;\n};\n\nexport type RoomRateSearchPrice = {\n averagePrice: number;\n totalPrice: number;\n currency: string;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchParameters.js","sourceRoot":"/","sources":["src/models/SearchParameters.ts"],"names":[],"mappings":"","sourcesContent":["export type SearchParameters = {\n checkInTime: string;\n checkOutTime: string;\n numAdults: number;\n numChildren: number;\n numRooms: number;\n promoCode: string;\n};\n"]}
|
|
@@ -28,6 +28,7 @@ const LineBreak_1 = require("../../components/generic/LineBreak");
|
|
|
28
28
|
const hooks_1 = require("@frontend/hooks");
|
|
29
29
|
const Translation_1 = require("../../translations/Translation");
|
|
30
30
|
const StepManager_1 = require("../../util/StepManager");
|
|
31
|
+
const events_1 = require("../../events");
|
|
31
32
|
function FindReservation() {
|
|
32
33
|
const { hotel } = hooks_1.useCurrentHotel();
|
|
33
34
|
const { t } = react_i18next_1.useTranslation();
|
|
@@ -67,12 +68,15 @@ function FindReservation() {
|
|
|
67
68
|
const handleSubmitOnClick = () => {
|
|
68
69
|
handleSubmit(onSubmit)();
|
|
69
70
|
};
|
|
71
|
+
const { raise } = hooks_1.useEvent();
|
|
70
72
|
react_1.useEffect(() => {
|
|
71
73
|
const background = document.createElement('div');
|
|
72
74
|
background.classList.add('dbe-background');
|
|
73
75
|
background.style.backgroundImage = `url('${hotel === null || hotel === void 0 ? void 0 : hotel.heroImage}')`;
|
|
74
76
|
RoomstayThemeEngine_1.default.EngineContainer.classList.add('--transparent-bg');
|
|
75
77
|
RoomstayThemeEngine_1.default.EngineContainer.appendChild(background);
|
|
78
|
+
const event = new events_1.FindReservationViewEvent();
|
|
79
|
+
raise(event);
|
|
76
80
|
return () => {
|
|
77
81
|
try {
|
|
78
82
|
RoomstayThemeEngine_1.default.EngineContainer.removeChild(background);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindReservation.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservation.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React 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 { useState, useEffect } from 'react';\nimport { IconType } from '../../components/generic/Icon';\nimport API from '../../api/BookingAPI';\nimport AutoAutoHeight from '../../animations/AutoAutoHeight';\nimport Alert, { AlertType } from '../../components/generic/Alert';\nimport { useHistory } from 'react-router';\nimport RoomstayThemeEngine from '../../providers/RoomstayThemeEngine';\nimport LineBreak from '../../components/generic/LineBreak';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Translation } from '../../translations/Translation';\nimport StepManager from '../../util/StepManager';\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 } else {\n return null;\n }\n };\n\n const [isLoading, setIsLoading] = useState(false);\n const [apiErrorMessages, setApiErrorMessages] = useState('');\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)\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 const handleSubmitOnClick = () => {\n handleSubmit(onSubmit)();\n };\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 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 // TODO: Add a generic handler for this to avoid setting it in every new page\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel?.colors]);\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 return (\n <div className=\"u-pad-left u-pad-right\">\n <div className=\"container u-marg-top--heavy u-pad-bottom--massive\">\n <form onSubmit={handleSubmit(onSubmit)}>\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\">\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.DarkGrey}>\n <strong>{t(Translation.FindReservation.Confirmation)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"51244AB23101\"\n required={true}\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.DarkGrey}>\n <strong>{t(Translation.FindReservation.EmailAddress)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required={true}\n validationStatus={getValidationClass('Email')}\n name={'Email'}\n {...register('Email', {\n required: true,\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-flex justify-content-end w-100\">\n <BEButton\n primary={true}\n filled={true}\n mobileWidth={true}\n isLoading={isLoading}\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n onClick={handleSubmitOnClick}\n >\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 <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\n textColor={Color.Accent}\n primary={false}\n filled={false}\n mobileWidth={true}\n size=\"small\"\n icon={IconType.ArrowLeft2}\n iconPosition=\"left\"\n onClick={onBack}\n isText={true}\n >\n {t(Translation.FindReservation.Back)}\n </BEButton>\n </div>\n </div>\n </form>\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 * as React 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 { useState, useEffect } from 'react';\nimport { IconType } from '../../components/generic/Icon';\nimport API from '../../api/BookingAPI';\nimport AutoAutoHeight from '../../animations/AutoAutoHeight';\nimport Alert, { AlertType } from '../../components/generic/Alert';\nimport { useHistory } from 'react-router';\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 { FindReservationViewEvent } from '../../events';\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 } else {\n return null;\n }\n };\n\n const [isLoading, setIsLoading] = useState(false);\n const [apiErrorMessages, setApiErrorMessages] = useState('');\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)\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 handleSubmitOnClick = () => {\n handleSubmit(onSubmit)();\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 // TODO: Add a generic handler for this to avoid setting it in every new page\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel?.colors]);\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 return (\n <div className=\"u-pad-left u-pad-right\">\n <div className=\"container u-marg-top--heavy u-pad-bottom--massive\">\n <form onSubmit={handleSubmit(onSubmit)}>\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\">\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.DarkGrey}>\n <strong>{t(Translation.FindReservation.Confirmation)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"51244AB23101\"\n required={true}\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.DarkGrey}>\n <strong>{t(Translation.FindReservation.EmailAddress)}</strong>\n </Text>\n </div>\n <TextBox\n placeholder=\"example@mail.com\"\n required={true}\n validationStatus={getValidationClass('Email')}\n name={'Email'}\n {...register('Email', {\n required: true,\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\n message: t(Translation.FindReservation.InvalidEmailAddress),\n },\n })}\n />\n </div>\n <div className=\"u-flex justify-content-end w-100\">\n <BEButton\n primary={true}\n filled={true}\n mobileWidth={true}\n isLoading={isLoading}\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n onClick={handleSubmitOnClick}\n >\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 <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\n textColor={Color.Accent}\n primary={false}\n filled={false}\n mobileWidth={true}\n size=\"small\"\n icon={IconType.ArrowLeft2}\n iconPosition=\"left\"\n onClick={onBack}\n isText={true}\n >\n {t(Translation.FindReservation.Back)}\n </BEButton>\n </div>\n </div>\n </form>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -20,16 +20,21 @@ const react_i18next_1 = require("react-i18next");
|
|
|
20
20
|
const hooks_1 = require("@frontend/hooks");
|
|
21
21
|
const CommonAddonSummary_1 = require("components/steps/common/CommonAddonSummary/CommonAddonSummary");
|
|
22
22
|
const TotalCalculator_1 = require("util/TotalCalculator");
|
|
23
|
+
const events_1 = require("../../events");
|
|
24
|
+
const dayjs = require("dayjs");
|
|
25
|
+
const contexts_1 = require("@frontend/contexts");
|
|
23
26
|
function FindReservationResults() {
|
|
24
27
|
var _a;
|
|
25
28
|
const params = react_router_1.useParams();
|
|
26
29
|
const history = react_router_1.useHistory();
|
|
27
30
|
const { hotel } = hooks_1.useCurrentHotel();
|
|
31
|
+
const ccx = react_1.useContext(contexts_1.CompanyContext);
|
|
28
32
|
const { t } = react_i18next_1.useTranslation();
|
|
29
33
|
const [bookingInformation, setBookingInformation] = react_1.useState(null);
|
|
30
34
|
const [isLoading, setIsLoading] = react_1.useState(false);
|
|
31
35
|
const [cancellationMessage, setCancellationMessage] = react_1.useState('');
|
|
32
36
|
const [cancellationTrigger, setCancellationTrigger] = react_1.useState(0);
|
|
37
|
+
const [data, setData] = react_1.useState(null);
|
|
33
38
|
const pushHistoryOnClick = () => {
|
|
34
39
|
history.push('../');
|
|
35
40
|
};
|
|
@@ -42,6 +47,7 @@ function FindReservationResults() {
|
|
|
42
47
|
if (!isCancelled) {
|
|
43
48
|
setBookingInformation(data);
|
|
44
49
|
setIsLoading(false);
|
|
50
|
+
setData(data);
|
|
45
51
|
}
|
|
46
52
|
})
|
|
47
53
|
.catch(() => {
|
|
@@ -63,6 +69,27 @@ function FindReservationResults() {
|
|
|
63
69
|
}
|
|
64
70
|
return 0;
|
|
65
71
|
}, [bookingInformation]);
|
|
72
|
+
const { raise } = hooks_1.useEvent();
|
|
73
|
+
react_1.useEffect(() => {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
if (!data)
|
|
76
|
+
return;
|
|
77
|
+
const reservations = (_b = (_a = data.reservations) === null || _a === void 0 ? void 0 : _a.map((obj) => {
|
|
78
|
+
const nightKeys = Object.keys(obj.nights);
|
|
79
|
+
const dateFormat = 'YYYY-MM-DDTHH:mm:ss';
|
|
80
|
+
return {
|
|
81
|
+
reservationId: obj.reservationNumber,
|
|
82
|
+
checkInTime: dayjs(nightKeys[0]).format(dateFormat),
|
|
83
|
+
checkOutTime: dayjs(nightKeys[nightKeys.length - 1])
|
|
84
|
+
.add(1, 'day')
|
|
85
|
+
.format(dateFormat),
|
|
86
|
+
totalPrice: obj.total.afterTax,
|
|
87
|
+
priceCurrency: ccx.currentCurrency,
|
|
88
|
+
};
|
|
89
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
90
|
+
const event = new events_1.FindReservationResultsViewEvent(reservations);
|
|
91
|
+
raise(event);
|
|
92
|
+
}, [data]);
|
|
66
93
|
return (React.createElement("div", { className: "container u-pad--heavy-plus u-pad-left u-pad-right" }, isLoading ? (React.createElement(LargeLoader_1.default, null)) : (React.createElement(React.Fragment, null,
|
|
67
94
|
React.createElement("div", { className: "u-marg-bottom" },
|
|
68
95
|
React.createElement(BackButton_1.default, { onClick: pushHistoryOnClick })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindReservationResults.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservationResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useParams, useHistory } from 'react-router';\nimport { useEffect, useState, useCallback } from 'react';\nimport API from '../../api/BookingAPI';\nimport { Color } from '../../util/Color';\nimport ReservationsDTO, { ReservationDTO, ReservationAddonDTO } from '../../models/Api/ReservationsDTO';\nimport LargeLoader from '../../components/generic/loader/LargeLoader';\nimport AutoAutoHeight from '../../animations/AutoAutoHeight';\nimport Alert from '../../components/generic/Alert';\nimport ReservationRow from './ReservationRow';\nimport BackButton from '../../components/generic/BackButton';\nimport Headline from '../../components/generic/Headline';\nimport LineBreak from '../../components/generic/LineBreak';\nimport Text, { TextType } from '../../components/generic/Text';\nimport Currency from '../../components/generic/Currency';\nimport { Translation } from '../../translations/Translation';\nimport { TextAlign } from '../../util/TextAlignment';\nimport { useTranslation } from 'react-i18next';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CommonAddonSummary } from 'components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { calculateTotalForReservation } from 'util/TotalCalculator';\n\nexport default function FindReservationResults() {\n const params: any = useParams();\n const history = useHistory();\n\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const [bookingInformation, setBookingInformation] = useState<ReservationsDTO>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [cancellationMessage, setCancellationMessage] = useState('');\n const [cancellationTrigger, setCancellationTrigger] = useState(0);\n const pushHistoryOnClick = () => {\n history.push('../');\n };\n useEffect(() => {\n let isCancelled = false;\n\n setIsLoading(true);\n if (params?.ref) {\n API.Reservation.findReservation(params.ref, params.email, hotel.hotelID)\n .then((data: ReservationsDTO) => {\n if (!isCancelled) {\n setBookingInformation(data);\n setIsLoading(false);\n }\n })\n .catch(() => {\n history.push('/find-reservation/');\n });\n } else {\n history.push('/find-reservation/');\n }\n\n return () => {\n isCancelled = true;\n };\n }, [cancellationTrigger]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n const total = useCallback(() => {\n if (bookingInformation?.reservations) {\n return calculateTotalForReservation(bookingInformation);\n }\n\n return 0;\n }, [bookingInformation]);\n\n return (\n <div className=\"container u-pad--heavy-plus u-pad-left u-pad-right\">\n {isLoading ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom\">\n <BackButton onClick={pushHistoryOnClick} />\n </div>\n <Headline size=\"extra-large\">{t(Translation.FindReservation.YourItinerary)}</Headline>\n <Headline color={Color.DarkGrey}>#{bookingInformation?.itineraryNumber}</Headline>\n <div className=\"row u-marg-top--heavy\">\n <AutoAutoHeight open={!!cancellationMessage}>\n <Alert>{cancellationMessage}</Alert>\n </AutoAutoHeight>\n {bookingInformation?.reservations?.map((obj: ReservationDTO) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => addons.push({ ...addon, nights: nights.length }));\n }\n\n if (obj.comments) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return (\n <div className=\"col-lg-6\" key={obj.reservationNumber}>\n <ReservationRow reservation={obj} key={obj.reservationNumber} />\n </div>\n );\n })}\n </div>\n <LineBreak />\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index: number) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n <LineBreak />\n </>\n )}\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold={true} size={'large'} align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.IncludingTaxes)}\n </Text>\n </>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FindReservationResults.js","sourceRoot":"/","sources":["src/pages/findReservation/FindReservationResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useParams, useHistory } from 'react-router';\nimport { useContext, useEffect, useState, useCallback } from 'react';\nimport API from '../../api/BookingAPI';\nimport { Color } from '../../util/Color';\nimport ReservationsDTO, { ReservationDTO, ReservationAddonDTO } from '../../models/Api/ReservationsDTO';\nimport LargeLoader from '../../components/generic/loader/LargeLoader';\nimport AutoAutoHeight from '../../animations/AutoAutoHeight';\nimport Alert from '../../components/generic/Alert';\nimport ReservationRow from './ReservationRow';\nimport BackButton from '../../components/generic/BackButton';\nimport Headline from '../../components/generic/Headline';\nimport LineBreak from '../../components/generic/LineBreak';\nimport Text, { TextType } from '../../components/generic/Text';\nimport Currency from '../../components/generic/Currency';\nimport { Translation } from '../../translations/Translation';\nimport { TextAlign } from '../../util/TextAlignment';\nimport { useTranslation } from 'react-i18next';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { CommonAddonSummary } from 'components/steps/common/CommonAddonSummary/CommonAddonSummary';\nimport { calculateTotalForReservation } from 'util/TotalCalculator';\nimport { FindReservationResultsViewEvent } from '../../events';\nimport { IEventReservation } from 'models/Api/IEventReservation';\nimport * as dayjs from 'dayjs';\nimport { CompanyContext } from '@frontend/contexts';\n\nexport default function FindReservationResults() {\n const params: any = useParams();\n const history = useHistory();\n\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n\n const { t } = useTranslation();\n\n const [bookingInformation, setBookingInformation] = useState<ReservationsDTO>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [cancellationMessage, setCancellationMessage] = useState('');\n const [cancellationTrigger, setCancellationTrigger] = useState(0);\n\n const [data, setData] = useState(null);\n const pushHistoryOnClick = () => {\n history.push('../');\n };\n useEffect(() => {\n let isCancelled = false;\n\n setIsLoading(true);\n if (params?.ref) {\n API.Reservation.findReservation(params.ref, params.email, hotel.hotelID)\n .then((data: ReservationsDTO) => {\n if (!isCancelled) {\n setBookingInformation(data);\n setIsLoading(false);\n setData(data);\n }\n })\n .catch(() => {\n history.push('/find-reservation/');\n });\n } else {\n history.push('/find-reservation/');\n }\n\n return () => {\n isCancelled = true;\n };\n }, [cancellationTrigger]);\n\n const addons: ReservationAddonDTO[] = [];\n const comments: string[] = [];\n\n const total = useCallback(() => {\n if (bookingInformation?.reservations) {\n return calculateTotalForReservation(bookingInformation);\n }\n\n return 0;\n }, [bookingInformation]);\n\n const { raise } = useEvent();\n useEffect(() => {\n if (!data) return;\n\n const reservations: IEventReservation[] =\n data.reservations?.map((obj: ReservationDTO) => {\n const nightKeys = Object.keys(obj.nights);\n const dateFormat = 'YYYY-MM-DDTHH:mm:ss';\n\n return {\n reservationId: obj.reservationNumber,\n checkInTime: dayjs(nightKeys[0]).format(dateFormat),\n checkOutTime: dayjs(nightKeys[nightKeys.length - 1])\n .add(1, 'day')\n .format(dateFormat),\n totalPrice: obj.total.afterTax,\n priceCurrency: ccx.currentCurrency,\n };\n }) ?? [];\n\n const event = new FindReservationResultsViewEvent(reservations);\n raise(event);\n }, [data]);\n\n return (\n <div className=\"container u-pad--heavy-plus u-pad-left u-pad-right\">\n {isLoading ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom\">\n <BackButton onClick={pushHistoryOnClick} />\n </div>\n <Headline size=\"extra-large\">{t(Translation.FindReservation.YourItinerary)}</Headline>\n <Headline color={Color.DarkGrey}>#{bookingInformation?.itineraryNumber}</Headline>\n <div className=\"row u-marg-top--heavy\">\n <AutoAutoHeight open={!!cancellationMessage}>\n <Alert>{cancellationMessage}</Alert>\n </AutoAutoHeight>\n {bookingInformation?.reservations?.map((obj: ReservationDTO) => {\n if (obj.addons) {\n const nights = Object.keys(obj.nights);\n obj.addons.forEach((addon) => addons.push({ ...addon, nights: nights.length }));\n }\n\n if (obj.comments) {\n obj.comments.map((comment: string) => {\n comments.push(comment);\n });\n }\n\n return (\n <div className=\"col-lg-6\" key={obj.reservationNumber}>\n <ReservationRow reservation={obj} key={obj.reservationNumber} />\n </div>\n );\n })}\n </div>\n <LineBreak />\n <CommonAddonSummary addons={addons} />\n {comments.length >= 1 && (\n <>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Confirmation.Comments)}\n </Text>\n </div>\n {comments.map((comment, index: number) => (\n <Text key={index} type={TextType.Small}>\n {comment}\n </Text>\n ))}\n <LineBreak />\n </>\n )}\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold={true} size={'large'} align={TextAlign.Right}>\n <Currency>{total}</Currency>\n </Headline>\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey}>\n {t(Translation.Step.Thanks.IncludingTaxes)}\n </Text>\n </>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -17,6 +17,7 @@ const react_i18next_1 = require("react-i18next");
|
|
|
17
17
|
const Translation_1 = require("../../translations/Translation");
|
|
18
18
|
const ImageProvider_1 = require("../../providers/ImageProvider");
|
|
19
19
|
const RoomstayThemeEngine_1 = require("../../providers/RoomstayThemeEngine");
|
|
20
|
+
const events_1 = require("../../events");
|
|
20
21
|
function HotelInfo() {
|
|
21
22
|
var _a, _b, _c, _d, _e, _f;
|
|
22
23
|
const { hotel } = hooks_1.useCurrentHotel();
|
|
@@ -32,6 +33,11 @@ function HotelInfo() {
|
|
|
32
33
|
const openSliderOnClick = () => {
|
|
33
34
|
openSlider(4);
|
|
34
35
|
};
|
|
36
|
+
const { raise } = hooks_1.useEvent();
|
|
37
|
+
react_1.useEffect(() => {
|
|
38
|
+
const event = new events_1.StepHotelInfoViewEvent();
|
|
39
|
+
raise(event);
|
|
40
|
+
}, []);
|
|
35
41
|
react_1.useEffect(() => {
|
|
36
42
|
var _a, _b;
|
|
37
43
|
const newImages = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelInfo.js","sourceRoot":"/","sources":["src/pages/hotel/HotelInfo.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Color } from '../../util/Color';\nimport Icon, { IconType } from '../../components/generic/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 } from '@frontend/hooks';\nimport BEButton from '../../components/generic/BEButton';\nimport { useHistory } from 'react-router';\nimport StepManager from '../../util/StepManager';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '../../translations/Translation';\nimport ImageProvider, { ImageSize } from '../../providers/ImageProvider';\nimport RoomstayThemeEngine from '../../providers/RoomstayThemeEngine';\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, city, 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 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 // TODO: Add a generic handler for this to avoid setting it in every new page\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel?.colors]);\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(--color-accent-1)' }}>\n {hotel?.name}\n </a>\n </span>\n </li>\n <li className=\"u-flex\">\n <BEButton icon={IconType.ArrowRight} primary={true} filled={true} 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={true}>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} />}</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={true}>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\n icon={IconType.Check}\n color={Color.White}\n backgroundColor={Color.Accent}\n borderRadius={'round'}\n noPadding={true}\n size=\"16px\"\n />\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={true}>Policies</Headline>\n </div>\n <Text type={TextType.Small}>\n <a href={hotel?.policies} target=\"_blank\" style={{ color: hotel?.colors.accent }}>\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={true}>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 * as React from 'react';\nimport { Color } from '../../util/Color';\nimport Icon, { IconType } from '../../components/generic/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';\nimport StepManager from '../../util/StepManager';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '../../translations/Translation';\nimport ImageProvider, { ImageSize } from '../../providers/ImageProvider';\nimport RoomstayThemeEngine from '../../providers/RoomstayThemeEngine';\nimport { StepHotelInfoViewEvent } from '../../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, city, 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 // TODO: Add a generic handler for this to avoid setting it in every new page\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel?.colors]);\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(--color-accent-1)' }}>\n {hotel?.name}\n </a>\n </span>\n </li>\n <li className=\"u-flex\">\n <BEButton icon={IconType.ArrowRight} primary={true} filled={true} 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={true}>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} />}</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={true}>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\n icon={IconType.Check}\n color={Color.White}\n backgroundColor={Color.Accent}\n borderRadius={'round'}\n noPadding={true}\n size=\"16px\"\n />\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={true}>Policies</Headline>\n </div>\n <Text type={TextType.Small}>\n <a href={hotel?.policies} target=\"_blank\" style={{ color: hotel?.colors.accent }}>\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={true}>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"]}
|
|
@@ -14,10 +14,18 @@ const Translation_1 = require("../../../translations/Translation");
|
|
|
14
14
|
const ScreenSize_1 = require("../../../util/ScreenSize");
|
|
15
15
|
const StepRoomHotelDetails_1 = require("../../../components/steps/room/StepRoomHotelDetails");
|
|
16
16
|
const contexts_1 = require("@frontend/contexts");
|
|
17
|
+
const hooks_1 = require("@frontend/hooks");
|
|
18
|
+
const events_1 = require("../../../events");
|
|
17
19
|
function StepAddonComponent() {
|
|
18
20
|
const context = react_1.useContext(contexts_1.BookingEngineContext);
|
|
19
21
|
const { currentStep } = react_1.useContext(contexts_1.FullPageEngineContext);
|
|
22
|
+
const { currentBasketRows } = react_1.useContext(contexts_1.BasketContext);
|
|
20
23
|
const { t } = react_i18next_1.useTranslation();
|
|
24
|
+
const { raise } = hooks_1.useEvent();
|
|
25
|
+
react_1.useEffect(() => {
|
|
26
|
+
const event = new events_1.StepAddonViewEvent(currentBasketRows);
|
|
27
|
+
raise(event);
|
|
28
|
+
}, []);
|
|
21
29
|
return (React.createElement("div", { className: "container" },
|
|
22
30
|
React.createElement(BEMobileSummary_1.default, null),
|
|
23
31
|
React.createElement("div", { className: 'row' + (context.screenSize > ScreenSize_1.default.ExtraLarge ? ' no-gutters' : '') },
|