@roomstay/frontend 2.2.5 → 2.3.0-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/115.bundle.js +1 -0
- package/dist/151.bundle.js +1 -0
- package/dist/201.bundle.js +1 -0
- package/dist/213.bundle.js +1 -0
- package/dist/279.bundle.js +1 -0
- package/dist/370.bundle.js +1 -0
- package/dist/387.bundle.js +1 -0
- package/dist/423.bundle.js +1 -0
- package/dist/446.bundle.js +1 -0
- package/dist/449.bundle.js +1 -0
- package/dist/535.bundle.js +2 -0
- package/dist/535.bundle.js.LICENSE.txt +30 -0
- package/dist/572.bundle.js +1 -0
- package/dist/619.bundle.js +1 -0
- package/dist/625.bundle.js +1 -0
- package/dist/686.bundle.js +1 -0
- package/dist/815.bundle.js +1 -0
- package/dist/855.bundle.js +1 -0
- package/dist/873.bundle.js +1 -0
- package/dist/903.bundle.js +1 -0
- package/dist/972.bundle.js +1 -0
- package/dist/975.bundle.js +1 -0
- package/dist/main.bundle.js +1 -0
- package/dist/src/components/generic/Tabs/TabContext.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabLink.js +10 -7
- package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabRouteContainer.js +3 -1
- package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
- package/dist/src/components/generic/Tabs/Tabs.d.ts +1 -0
- package/dist/src/components/generic/Tabs/Tabs.js +2 -11
- package/dist/src/components/generic/Tabs/Tabs.js.map +1 -1
- package/dist/src/components/generic/Tooltip/Tooltip.d.ts +2 -0
- package/dist/src/components/generic/Tooltip/Tooltip.js +2 -2
- package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
- package/dist/src/components/steps/room/RoomList.js +2 -119
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.d.ts +8 -0
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +97 -0
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -0
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.d.ts +1 -0
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +107 -0
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -0
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.d.ts +1 -0
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +43 -0
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.d.ts +1 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +56 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +8 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +90 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.d.ts +7 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +172 -0
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -0
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +2 -10
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +1 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +2 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.d.ts +8 -0
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +133 -0
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -0
- package/dist/src/models/Api/HotelDTO.d.ts +14 -0
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Room/Room.d.ts +8 -0
- package/dist/src/models/Room/Room.js +6 -0
- package/dist/src/models/Room/Room.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +4 -4
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.d.ts +15 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.js +30 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.js.map +1 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.d.ts +2 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +69 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.d.ts +1 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js +109 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js.map +1 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomValidator.d.ts +3 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomValidator.js +10 -0
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomValidator.js.map +1 -0
- package/dist/src/stories/BookingWizard.stories.js +2 -2
- package/dist/src/stories/BookingWizard.stories.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +0 -4
- package/dist/src/translations/Translation.js +0 -4
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +0 -4
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/DataLayer.js +1 -1
- package/dist/src/util/DataLayer.js.map +1 -1
- package/dist/test.bundle.js +1 -0
- package/dist/tests/offline/entry/{OfflineEngineDefaults.js → RSCompany.js} +52 -6
- package/dist/tests/offline/entry/RSCompany.js.map +1 -0
- package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
- package/dist/tests/offline/entry/{OfflineEngineWrapper.js → ReactWrapper.js} +21 -14
- package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
- package/dist/tests/offline/entry/{offline-entry.js → allEngines.js} +3 -3
- package/dist/tests/offline/entry/allEngines.js.map +1 -0
- package/dist/tests/offline/entry/components/TestPicker.js +2 -61
- package/dist/tests/offline/entry/components/TestPicker.js.map +1 -1
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +2 -2
- package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -1
- package/dist/vendors.bundle.js +2 -0
- package/dist/vendors.bundle.js.LICENSE.txt +80 -0
- package/package.json +2 -2
- package/dist/src/components/generic/Select.d.ts +0 -0
- package/dist/src/components/generic/Select.js +0 -2
- package/dist/src/components/generic/Select.js.map +0 -1
- package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +0 -1
- package/dist/tests/offline/entry/OfflineEngineWrapper.d.ts +0 -1
- package/dist/tests/offline/entry/OfflineEngineWrapper.js.map +0 -1
- package/dist/tests/offline/entry/offline-entry.js.map +0 -1
- package/dist/tests/offline/entry/pages/Inline/index.d.ts +0 -4
- package/dist/tests/offline/entry/pages/Inline/index.js +0 -96
- package/dist/tests/offline/entry/pages/Inline/index.js.map +0 -1
- /package/dist/tests/offline/entry/{OfflineEngineDefaults.d.ts → RSCompany.d.ts} +0 -0
- /package/dist/tests/offline/entry/{offline-entry.d.ts → allEngines.d.ts} +0 -0
|
@@ -16,6 +16,18 @@ export type HotelServiceDTO = {
|
|
|
16
16
|
export type HotelRoomsDTO = {
|
|
17
17
|
[roomTypeCode: string]: HotelRoomDTO;
|
|
18
18
|
};
|
|
19
|
+
export type HotelRoomGroupsDTO = {
|
|
20
|
+
groupName: string;
|
|
21
|
+
id: string;
|
|
22
|
+
filters: {
|
|
23
|
+
[id: string]: {
|
|
24
|
+
name: string;
|
|
25
|
+
type: 'select';
|
|
26
|
+
includeAllAbove: boolean;
|
|
27
|
+
options: any;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}[];
|
|
19
31
|
export type HotelRoomAmenitiesDTO = {
|
|
20
32
|
type: string;
|
|
21
33
|
description: string;
|
|
@@ -35,6 +47,7 @@ export type HotelRoomDTO = {
|
|
|
35
47
|
amenities: HotelRoomAmenitiesDTO[];
|
|
36
48
|
features: HotelRoomAmenitiesDTO[];
|
|
37
49
|
bedTypeOverride?: string;
|
|
50
|
+
roomGroupId?: string;
|
|
38
51
|
};
|
|
39
52
|
export type HotelDTO = {
|
|
40
53
|
id: number;
|
|
@@ -74,6 +87,7 @@ export type HotelDTO = {
|
|
|
74
87
|
hotelUrl?: string;
|
|
75
88
|
heroImage?: string;
|
|
76
89
|
images?: string[];
|
|
90
|
+
roomGroups: HotelRoomGroupsDTO;
|
|
77
91
|
};
|
|
78
92
|
export declare enum VGSCardName {
|
|
79
93
|
Visa = "visa",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA+D;
|
|
1
|
+
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA+D;AAgG/D,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import { DeepPartial } from 'react-hook-form';\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport { EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport type { EBookingPaymentMethod } from '@roomstay/core';\nimport type { PlanPayEnvironment } from '@planpay/web';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n minDaysShowPlanpay: number;\n env: PlanPayEnvironment;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n roomGroups: HotelRoomGroupsDTO;\n};\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
|
|
@@ -3,7 +3,7 @@ import type { Language } from '../../../providers/LanguageProvider';
|
|
|
3
3
|
import type { HotelPerk } from './HotelPerk';
|
|
4
4
|
import type { HotelRoomOverwrite } from './HotelRoomOverwrite';
|
|
5
5
|
import type HotelAddress from './HotelAddress';
|
|
6
|
-
import type { HotelRoomsDTO, HotelServiceDTO } from '../../Api/HotelDTO';
|
|
6
|
+
import type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '../../Api/HotelDTO';
|
|
7
7
|
import type { HasDatalayerTags } from './Company';
|
|
8
8
|
import type { TransportDistances } from '../../Api/HotelOverrideDTO';
|
|
9
9
|
import type { MemberOnlyModalInputs } from '../../../components/steps/room/MemberSignInModal/MemberSignInModal.types';
|
|
@@ -64,6 +64,7 @@ export interface AdminHotelConfig {
|
|
|
64
64
|
maxOccupancy?: number;
|
|
65
65
|
hideByLine?: boolean;
|
|
66
66
|
transportDistances?: TransportDistances;
|
|
67
|
+
roomGroups: HotelRoomGroupsDTO;
|
|
67
68
|
}
|
|
68
69
|
export interface ClientHotelConfig {
|
|
69
70
|
providerHotelID: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAgBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","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 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, IHotelColorScheme } from '@roomstay/core';\nimport type { PlanPayEnvironment } from '@planpay/web';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n minDaysShowPlanpay: number;\n env: PlanPayEnvironment;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n}\n\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: 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 defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n googleMapsImage?: string;\n /**\n * Wether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n /**\n * Distances for the Summary, and Hotel Info pages\n */\n perks: HotelPerk[];\n\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\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 * 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 interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\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":";;;AAgBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","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 HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelRoomGroupsDTO, 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, IHotelColorScheme } from '@roomstay/core';\nimport type { PlanPayEnvironment } from '@planpay/web';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n minDaysShowPlanpay: number;\n env: PlanPayEnvironment;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n\n roomGroups: HotelRoomGroupsDTO;\n}\n\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: 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 defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n googleMapsImage?: string;\n /**\n * Wether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n /**\n * Distances for the Summary, and Hotel Info pages\n */\n perks: HotelPerk[];\n\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\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 * 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 interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\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"]}
|
|
@@ -10,6 +10,10 @@ export interface IRoom {
|
|
|
10
10
|
occupancy: number;
|
|
11
11
|
images: string[];
|
|
12
12
|
rates: IRoomRate[];
|
|
13
|
+
roomGroupId?: string;
|
|
14
|
+
auxiliaryValues: {
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
};
|
|
13
17
|
}
|
|
14
18
|
export declare class Room implements RoomRateSortable, Serializable<Room, IRoom> {
|
|
15
19
|
id?: number;
|
|
@@ -19,6 +23,10 @@ export declare class Room implements RoomRateSortable, Serializable<Room, IRoom>
|
|
|
19
23
|
shortDescription?: string;
|
|
20
24
|
occupancy?: number;
|
|
21
25
|
images: string[];
|
|
26
|
+
roomGroupId?: string;
|
|
27
|
+
auxiliaryValues?: {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
22
30
|
private rates;
|
|
23
31
|
filteredRates?: RoomRate[];
|
|
24
32
|
constructor(props?: Partial<IRoom>);
|
|
@@ -4,6 +4,7 @@ exports.Room = void 0;
|
|
|
4
4
|
const RoomRate_1 = require("./RoomRate");
|
|
5
5
|
class Room {
|
|
6
6
|
constructor(props) {
|
|
7
|
+
this.auxiliaryValues = {};
|
|
7
8
|
this.getLowestPriceType = (raw = false) => {
|
|
8
9
|
var _a, _b;
|
|
9
10
|
return ((_b = (_a = (raw ? this.rates : this.filteredRates)
|
|
@@ -13,6 +14,7 @@ class Room {
|
|
|
13
14
|
};
|
|
14
15
|
this.rates = [];
|
|
15
16
|
this.images = [];
|
|
17
|
+
this.auxiliaryValues = {};
|
|
16
18
|
if (props) {
|
|
17
19
|
this.applyData(props);
|
|
18
20
|
}
|
|
@@ -93,6 +95,8 @@ class Room {
|
|
|
93
95
|
occupancy: this.occupancy,
|
|
94
96
|
rates: this.rates.map((rate) => rate.serialize()),
|
|
95
97
|
shortDescription: this.shortDescription,
|
|
98
|
+
roomGroupId: this.roomGroupId,
|
|
99
|
+
auxiliaryValues: this.auxiliaryValues,
|
|
96
100
|
};
|
|
97
101
|
return toSerialize;
|
|
98
102
|
}
|
|
@@ -112,6 +116,8 @@ class Room {
|
|
|
112
116
|
this.shortDescription = data.shortDescription;
|
|
113
117
|
this.filteredRates = newRates;
|
|
114
118
|
this.rates = newRates;
|
|
119
|
+
this.roomGroupId = data.roomGroupId;
|
|
120
|
+
this.auxiliaryValues = data.auxiliaryValues;
|
|
115
121
|
return this;
|
|
116
122
|
}
|
|
117
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":";;;AAAA,qDAAqF;
|
|
1
|
+
{"version":3,"file":"Room.js","sourceRoot":"/","sources":["src/models/Room/Room.ts"],"names":[],"mappings":"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","sourcesContent":["import { RoomRate, RoomRatePriceInclusion, IRoomRate } from '@/models/Room/RoomRate';\nimport RoomRateSortable from '@/models/Room/RoomRateSortable';\nimport { Serializable } from '@/models/Serializable';\n\nexport interface IRoom {\n id: number;\n\n code: string;\n name: string;\n longDescription: string;\n shortDescription: string;\n\n occupancy: number;\n\n images: string[];\n rates: IRoomRate[];\n roomGroupId?: string;\n auxiliaryValues: { [key: string]: any };\n}\n\nexport class Room implements RoomRateSortable, Serializable<Room, IRoom> {\n public id?: number;\n public code?: string;\n public name?: string;\n public longDescription?: string;\n public shortDescription?: string;\n\n public occupancy?: number;\n\n public images: string[];\n public roomGroupId?: string;\n public auxiliaryValues?: { [key: string]: any } = {};\n\n private rates: RoomRate[];\n\n public filteredRates?: RoomRate[];\n\n public constructor(props?: Partial<IRoom>) {\n this.rates = [];\n this.images = [];\n this.auxiliaryValues = {};\n\n if (props) {\n this.applyData(props);\n }\n }\n\n public getShortDescription(trim = true) {\n let shortDesc = this.shortDescription;\n\n if (trim) {\n shortDesc = (this.shortDescription?.length as number) > 97 ? this.shortDescription?.substr(0, 97) + '…' : this.shortDescription;\n }\n\n return shortDesc?.replace(/(<br>\\s*)+$/, '');\n }\n\n public getLongDescription() {\n return this.longDescription?.replace(/(<br>\\s*)+$/, '');\n }\n\n public applyData(data: Partial<IRoom>) {\n Object.keys(data).map((key: any) => {\n (this as any)[key] = (data as any)[key];\n }, this);\n\n this.filteredRates = this.rates;\n }\n\n public getLowestPriceType = (raw = false) => {\n return (\n ((raw ? this.rates : this.filteredRates) as RoomRate[])\n .reduce<RoomRate | null>((sum, rate) => {\n return sum && sum.getAveragePrice() < rate.getAveragePrice() ? sum : rate;\n }, null)\n ?.getPriceType() ?? RoomRatePriceInclusion.IncludingFeesAndTaxes\n );\n };\n\n public getLowestPrice(raw = false, rawPrice = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => {\n const avrg = rate.getAveragePrice(rawPrice);\n return sum < avrg && sum ? sum : avrg;\n }, 0) ?? 0\n );\n }\n\n public getHighestPrice(raw = false) {\n return (\n (raw ? this.rates : this.filteredRates)?.reduce<number>((sum: number, rate: RoomRate) => (sum > rate.getAveragePrice() && sum ? sum : rate.getAveragePrice()), 0) ?? 0\n );\n }\n\n public addRate(rate: RoomRate) {\n rate.setRoom(this);\n this.rates.push(rate);\n }\n\n public getImages(): string[] {\n if (this.images && this.images.length) {\n return this.images;\n }\n\n return [];\n }\n\n public getOriginalRates(): RoomRate[] {\n return this.rates;\n }\n\n public getRates(): RoomRate[] {\n return (this.filteredRates as RoomRate[]).sort((a, b) => {\n return a.isMemberOnly ? -1 : b.isMemberOnly ? 1 : 0;\n });\n }\n\n public getRate(code: string): RoomRate | null {\n for (const rate in this.rates) {\n if (code === this.rates[rate].code) {\n return this.rates[rate];\n }\n }\n\n return null;\n }\n\n public getSortValue() {\n return this.getLowestPrice();\n }\n\n public static fromData(data: any) {\n const room = new this();\n\n if (!data.images && data.imageUrls) {\n data.images = data.imageUrls;\n }\n\n room.applyData(data);\n\n return room;\n }\n\n public serialize() {\n const toSerialize: IRoom = {\n id: this.id,\n code: this.code,\n images: this.images,\n longDescription: this.longDescription,\n name: this.name,\n occupancy: this.occupancy,\n rates: this.rates.map((rate) => rate.serialize()),\n shortDescription: this.shortDescription,\n roomGroupId: this.roomGroupId,\n auxiliaryValues: this.auxiliaryValues,\n } as IRoom;\n\n return toSerialize;\n }\n\n public unSerialize(data: IRoom) {\n const newRates: RoomRate[] = data.rates?.map((serializedRate) => {\n const roomRate = new RoomRate();\n roomRate.unSerialize(serializedRate);\n\n return roomRate;\n });\n\n this.code = data.code;\n this.id = data.id;\n this.images = data.images;\n this.longDescription = data.longDescription;\n this.name = data.name;\n this.occupancy = data.occupancy;\n this.shortDescription = data.shortDescription;\n this.filteredRates = newRates;\n this.rates = newRates;\n\n this.roomGroupId = data.roomGroupId;\n this.auxiliaryValues = data.auxiliaryValues;\n\n return this;\n }\n}\n"]}
|
|
@@ -136,13 +136,13 @@ function HotelInfo() {
|
|
|
136
136
|
!!(hotel === null || hotel === void 0 ? void 0 : hotel.locationDescription) && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
137
137
|
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
138
138
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
139
|
-
react_1.default.createElement("strong", null,
|
|
139
|
+
react_1.default.createElement("strong", null, "Location"))),
|
|
140
140
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
141
141
|
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: (_d = hotel === null || hotel === void 0 ? void 0 : hotel.locationDescription) === null || _d === void 0 ? void 0 : _d.replace('\r\n', '<br/><br/>') } }))))),
|
|
142
142
|
!!((_e = hotel === null || hotel === void 0 ? void 0 : hotel.perks) === null || _e === void 0 ? void 0 : _e.length) && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
143
143
|
react_1.default.createElement("div", { className: "u-marg-bottom u-marg-bottom--heavy" },
|
|
144
144
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
145
|
-
react_1.default.createElement("strong", null,
|
|
145
|
+
react_1.default.createElement("strong", null, "And you get all these for free:"))),
|
|
146
146
|
react_1.default.createElement("div", { className: "row" }, hotel === null || hotel === void 0 ? void 0 : hotel.perks.map((perk) => {
|
|
147
147
|
return (react_1.default.createElement("div", { className: "col-6 col-md-4", key: perk.name },
|
|
148
148
|
react_1.default.createElement("div", { className: "u-flex u-marg-bottom" },
|
|
@@ -152,7 +152,7 @@ function HotelInfo() {
|
|
|
152
152
|
}))))),
|
|
153
153
|
!!((_f = hotel === null || hotel === void 0 ? void 0 : hotel.hotelServices) === null || _f === void 0 ? void 0 : _f.length) && (react_1.default.createElement("div", { className: "u-marg-bottom u-marg-bottom--heavy" },
|
|
154
154
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
155
|
-
react_1.default.createElement(Headline_1.default, { bold: true },
|
|
155
|
+
react_1.default.createElement(Headline_1.default, { bold: true }, "Hotel Amenities")),
|
|
156
156
|
react_1.default.createElement("div", { className: "row" }, hotel === null || hotel === void 0 ? void 0 : hotel.hotelServices.map((hotelService, index) => {
|
|
157
157
|
return (react_1.default.createElement("div", { key: index, className: "col-md-6" },
|
|
158
158
|
react_1.default.createElement("div", { className: "u-flex u-marg-bottom" },
|
|
@@ -162,7 +162,7 @@ function HotelInfo() {
|
|
|
162
162
|
})))),
|
|
163
163
|
!!(hotel === null || hotel === void 0 ? void 0 : hotel.policies) && (react_1.default.createElement("div", { className: "u-marg-bottom u-marg-bottom--heavy" },
|
|
164
164
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
165
|
-
react_1.default.createElement(Headline_1.default, { bold: true },
|
|
165
|
+
react_1.default.createElement(Headline_1.default, { bold: true }, "Policies")),
|
|
166
166
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
167
167
|
react_1.default.createElement("a", { href: hotel === null || hotel === void 0 ? void 0 : hotel.policies, target: "_blank", style: { color: hotel === null || hotel === void 0 ? void 0 : hotel.colors.accent }, rel: "noreferrer" }, hotel === null || hotel === void 0 ? void 0 : hotel.policies))))),
|
|
168
168
|
react_1.default.createElement("div", { className: "col-lg-6" },
|
|
@@ -1 +1 @@
|
|
|
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 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';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\n\nexport default function HotelInfo() {\n const { hotel } = useCurrentHotel();\n const historyConsistentPush = useHistoryConsistentPush();\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 }\n\n 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?.images, hotel?.rooms]);\n\n const onBookNowClick = () => {\n historyConsistentPush(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.Misc.BookNow)}\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>{t(Translation.Step.Hotel.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>{t(Translation.Step.Hotel.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>{t(Translation.Step.Hotel.AndYouGetAll)}</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>{t(Translation.Step.Hotel.HotelAmenities)}</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>{t(Translation.Step.Hotel.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>{t(Translation.Step.Hotel.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"]}
|
|
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 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';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\n\nexport default function HotelInfo() {\n const { hotel } = useCurrentHotel();\n const historyConsistentPush = useHistoryConsistentPush();\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 }\n\n 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?.images, hotel?.rooms]);\n\n const onBookNowClick = () => {\n historyConsistentPush(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.Misc.BookNow)}\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>{t(Translation.Step.Hotel.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>{t(Translation.Step.Hotel.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"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Company } from '../../../models/Client/Hotel/Company';
|
|
2
|
+
import { Hotel } from '../../../models/Client/Hotel/Hotel';
|
|
3
|
+
import Step from '../Step';
|
|
4
|
+
import { IHotelColorScheme } from '@roomstay/core';
|
|
5
|
+
import StepGroupedRoomLoader from './StepGroupedRoomLoader';
|
|
6
|
+
import StepGroupedRoomValidator from './StepGroupedRoomValidator';
|
|
7
|
+
declare class StepGroupedRoom extends Step {
|
|
8
|
+
constructor();
|
|
9
|
+
getComponent(): typeof StepGroupedRoomLoader;
|
|
10
|
+
getValidator(): StepGroupedRoomValidator;
|
|
11
|
+
getStepTranslation(): string;
|
|
12
|
+
getColorProfile(company: Company, hotel?: Hotel): IHotelColorScheme | undefined;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: StepGroupedRoom;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Translation_1 = require("translations/Translation");
|
|
7
|
+
const Step_1 = __importDefault(require("../Step"));
|
|
8
|
+
const StepGroupedRoomLoader_1 = __importDefault(require("./StepGroupedRoomLoader"));
|
|
9
|
+
const StepGroupedRoomValidator_1 = __importDefault(require("./StepGroupedRoomValidator"));
|
|
10
|
+
class StepGroupedRoom extends Step_1.default {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('room');
|
|
13
|
+
}
|
|
14
|
+
getComponent() {
|
|
15
|
+
return StepGroupedRoomLoader_1.default;
|
|
16
|
+
}
|
|
17
|
+
getValidator() {
|
|
18
|
+
return new StepGroupedRoomValidator_1.default();
|
|
19
|
+
}
|
|
20
|
+
getStepTranslation() {
|
|
21
|
+
return Translation_1.Translation.Navigation.Steps.Room;
|
|
22
|
+
}
|
|
23
|
+
getColorProfile(company, hotel) {
|
|
24
|
+
if (hotel) {
|
|
25
|
+
return hotel.colors;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.default = new StepGroupedRoom();
|
|
30
|
+
//# sourceMappingURL=StepGroupedRoom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepGroupedRoom.js","sourceRoot":"/","sources":["src/pages/steps/StepGroupedRoom/StepGroupedRoom.ts"],"names":[],"mappings":";;;;;AAEA,0DAAuD;AACvD,8DAAsC;AAEtC,gHAAwF;AACxF,0FAAkE;AAElE,MAAM,eAAgB,SAAQ,cAAI;IAC9B;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEM,YAAY;QACf,OAAO,+BAAqB,CAAC;IACjC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,kCAAwB,EAAE,CAAC;IAC1C,CAAC;IAEM,kBAAkB;QACrB,OAAO,yBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7C,CAAC;IAEM,eAAe,CAAC,OAAgB,EAAE,KAAa;QAClD,IAAI,KAAK,EAAE;YACP,OAAO,KAAK,CAAC,MAAM,CAAC;SACvB;IACL,CAAC;CACJ;AAED,kBAAe,IAAI,eAAe,EAAE,CAAC","sourcesContent":["import { Company } from '@/models/Client/Hotel/Company';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Translation } from 'translations/Translation';\nimport Step from '@/pages/steps/Step';\nimport { IHotelColorScheme } from '@roomstay/core';\nimport StepGroupedRoomLoader from '@/pages/steps/StepGroupedRoom/StepGroupedRoomLoader';\nimport StepGroupedRoomValidator from './StepGroupedRoomValidator';\n\nclass StepGroupedRoom extends Step {\n public constructor() {\n super('room');\n }\n\n public getComponent() {\n return StepGroupedRoomLoader;\n }\n\n public getValidator() {\n return new StepGroupedRoomValidator();\n }\n\n public getStepTranslation() {\n return Translation.Navigation.Steps.Room;\n }\n\n public getColorProfile(company: Company, hotel?: Hotel): IHotelColorScheme | undefined {\n if (hotel) {\n return hotel.colors;\n }\n }\n}\n\nexport default new StepGroupedRoom();\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const StepLayout_1 = require("../../../components/generic/Layout/StepLayout");
|
|
31
|
+
const BEMobileSummary_1 = __importDefault(require("../../../components/summary/BEMobileSummary"));
|
|
32
|
+
const BackButton_1 = __importDefault(require("../../../components/generic/BackButton"));
|
|
33
|
+
const Headline_1 = __importDefault(require("../../../components/generic/Headline"));
|
|
34
|
+
const StepRoomHotelDetails_1 = __importDefault(require("../../../components/steps/room/StepRoomHotelDetails"));
|
|
35
|
+
const ScreenSize_1 = __importDefault(require("../../../util/ScreenSize"));
|
|
36
|
+
const StepManager_1 = __importDefault(require("../../../util/StepManager"));
|
|
37
|
+
const contexts_1 = require("../../../contexts/index.js");
|
|
38
|
+
const react_i18next_1 = require("react-i18next");
|
|
39
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
40
|
+
const Translation_1 = require("../../../translations/Translation");
|
|
41
|
+
const LineBreak_1 = __importDefault(require("../../../components/generic/LineBreak"));
|
|
42
|
+
const StepRoomSummaryAndButton_1 = __importDefault(require("../../../components/steps/room/StepRoomSummaryAndButton"));
|
|
43
|
+
const UserSearchSummary_1 = require("../../../components/steps/room/UserSearchSummary/UserSearchSummary");
|
|
44
|
+
const TabGroupedRooms_1 = require("../../../components/steps/room/TabGroupedRooms/TabGroupedRooms");
|
|
45
|
+
const StepGroupedRoomComponent = () => {
|
|
46
|
+
const context = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
47
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
48
|
+
const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
|
|
49
|
+
return (react_1.default.createElement("div", { className: "container" },
|
|
50
|
+
react_1.default.createElement(BEMobileSummary_1.default, null),
|
|
51
|
+
react_1.default.createElement(StepLayout_1.StepLayoutContainer, null,
|
|
52
|
+
react_1.default.createElement(StepLayout_1.StepLayoutLeftContent, null,
|
|
53
|
+
context.screenSize > ScreenSize_1.default.Medium && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
54
|
+
react_1.default.createElement(react_router_dom_1.Link, { to: StepManager_1.default.getPreviousStepUrl(currentStep) },
|
|
55
|
+
react_1.default.createElement(BackButton_1.default, null)),
|
|
56
|
+
react_1.default.createElement("div", { className: "u-marg-top--light u-marg-bottom--heavy" },
|
|
57
|
+
react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Room.ChooseRoom))),
|
|
58
|
+
react_1.default.createElement(LineBreak_1.default, { smallMargins: true }))),
|
|
59
|
+
react_1.default.createElement(UserSearchSummary_1.UserSearchSummary, null),
|
|
60
|
+
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
61
|
+
react_1.default.createElement(TabGroupedRooms_1.TabGroupedRooms, null))),
|
|
62
|
+
context.screenSize > ScreenSize_1.default.Medium && (react_1.default.createElement(StepLayout_1.StepLayoutRightContent, null,
|
|
63
|
+
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
64
|
+
react_1.default.createElement(StepRoomHotelDetails_1.default, null)),
|
|
65
|
+
react_1.default.createElement("div", { className: "u-marg-top--heavy" },
|
|
66
|
+
react_1.default.createElement(StepRoomSummaryAndButton_1.default, null)))))));
|
|
67
|
+
};
|
|
68
|
+
exports.default = StepGroupedRoomComponent;
|
|
69
|
+
//# sourceMappingURL=StepGroupedRoomComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepGroupedRoomComponent.js","sourceRoot":"/","sources":["src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,uEAA4H;AAC5H,2FAAmE;AACnE,iFAAyD;AACzD,6EAAqD;AAErD,wGAAgF;AAEhF,mEAA2C;AAC3C,qEAA6C;AAC7C,iDAAiF;AACjF,iDAA+C;AAC/C,uDAAwC;AACxC,4DAAyD;AACzD,+EAAuD;AACvD,gHAAwF;AACxF,mGAAgG;AAChG,6FAA0F;AAE1F,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEjD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE1D,OAAO,CACH,uCAAK,SAAS,EAAC,WAAW;QACtB,8BAAC,yBAAe,OAAG;QACnB,8BAAC,gCAAmB;YAChB,8BAAC,kCAAqB;gBACjB,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC;oBACI,8BAAC,uBAAI,IAAC,EAAE,EAAE,qBAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC;wBACjD,8BAAC,oBAAU,OAAG,CACX;oBACP,uCAAK,SAAS,EAAC,wCAAwC;wBACnD,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAY,CAC7D;oBACN,8BAAC,mBAAS,IAAC,YAAY,SAAG,CAC3B,CACN;gBACD,8BAAC,qCAAiB,OAAG;gBAErB,uCAAK,SAAS,EAAC,YAAY;oBACvB,8BAAC,iCAAe,OAAG,CACjB,CACc;YACvB,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,CACvC,8BAAC,mCAAsB;gBACnB,uCAAK,SAAS,EAAC,YAAY;oBACvB,8BAAC,8BAAoB,OAAG,CACtB;gBACN,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,8BAAC,kCAAwB,OAAG,CAC1B,CACe,CAC5B,CACiB,CACpB,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,wBAAwB,CAAC","sourcesContent":["import React, { useContext } from 'react';\nimport { StepLayoutContainer, StepLayoutLeftContent, StepLayoutRightContent } from '@/components/generic/Layout/StepLayout';\nimport BEMobileSummary from '@/components/summary/BEMobileSummary';\nimport BackButton from '@/components/generic/BackButton';\nimport Headline from '@/components/generic/Headline';\n\nimport StepRoomHotelDetails from '@/components/steps/room/StepRoomHotelDetails';\n\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\nimport { BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from '@/translations/Translation';\nimport LineBreak from '@/components/generic/LineBreak';\nimport StepRoomSummaryAndButton from '@/components/steps/room/StepRoomSummaryAndButton';\nimport { UserSearchSummary } from '@/components/steps/room/UserSearchSummary/UserSearchSummary';\nimport { TabGroupedRooms } from '@/components/steps/room/TabGroupedRooms/TabGroupedRooms';\n\nconst StepGroupedRoomComponent = () => {\n const context = useContext(BookingEngineContext);\n\n const { t } = useTranslation();\n\n const { currentStep } = useContext(FullPageEngineContext);\n\n return (\n <div className=\"container\">\n <BEMobileSummary />\n <StepLayoutContainer>\n <StepLayoutLeftContent>\n {context.screenSize > ScreenSize.Medium && (\n <>\n <Link to={StepManager.getPreviousStepUrl(currentStep)}>\n <BackButton />\n </Link>\n <div className=\"u-marg-top--light u-marg-bottom--heavy\">\n <Headline bold>{t(Translation.Step.Room.ChooseRoom)}</Headline>\n </div>\n <LineBreak smallMargins />\n </>\n )}\n <UserSearchSummary />\n\n <div className=\"u-marg-top\">\n <TabGroupedRooms />\n </div>\n </StepLayoutLeftContent>\n {context.screenSize > ScreenSize.Medium && (\n <StepLayoutRightContent>\n <div className=\"u-marg-top\">\n <StepRoomHotelDetails />\n </div>\n <div className=\"u-marg-top--heavy\">\n <StepRoomSummaryAndButton />\n </div>\n </StepLayoutRightContent>\n )}\n </StepLayoutContainer>\n </div>\n );\n};\n\nexport default StepGroupedRoomComponent;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function StepGroupedRoomLoader(): JSX.Element;
|