@roomstay/frontend 2.9.1 → 2.10.1-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/177.bundle.js +1 -1
- package/dist/219.bundle.js +2 -0
- package/dist/288.bundle.js +1 -1
- package/dist/291.bundle.js +1 -0
- package/dist/446.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/596.bundle.js +1 -1
- package/dist/625.bundle.js +1 -1
- package/dist/836.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +6 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.d.ts +22 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js +131 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js.map +1 -0
- package/dist/src/components/generic/HotelPerkVisual.d.ts +7 -0
- package/dist/src/components/generic/HotelPerkVisual.js +29 -0
- package/dist/src/components/generic/HotelPerkVisual.js.map +1 -0
- package/dist/src/components/generic/Portal/Portal.js +5 -1
- package/dist/src/components/generic/Portal/Portal.js.map +1 -1
- package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.d.ts +2 -2
- package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js +105 -30
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -1
- package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +9 -3
- package/dist/src/components/members/SignInModal/ExternalMemberModal.js +45 -6
- package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
- package/dist/src/components/steps/date/BEPeoplePickerBlock.js +3 -1
- package/dist/src/components/steps/date/BEPeoplePickerBlock.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +3 -3
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js +3 -3
- package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +3 -3
- package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
- package/dist/src/components/steps/room/LargeRoomCard.js +3 -3
- package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
- package/dist/src/components/steps/room/RoomModalPerkRow.js +3 -3
- package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +2 -0
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +1 -0
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +18 -4
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +3 -3
- package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +1 -0
- package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
- package/dist/src/components/summary/BESummaryPerkBlock.js +3 -3
- package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.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/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +4 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.d.ts +10 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js +12 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js.map +1 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.d.ts +8 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js +13 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js.map +1 -0
- package/dist/src/contexts/index.d.ts +2 -0
- package/dist/src/contexts/index.js +2 -0
- package/dist/src/contexts/index.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +13 -0
- package/dist/src/engines/BaseEngine.js +32 -0
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js +1 -0
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +3 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js +1 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +12 -10
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +1 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +11 -9
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js +1 -0
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +4 -2
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
- package/dist/src/handlers/membership/SalesforceMemberHandler.js +1 -1
- package/dist/src/handlers/membership/SalesforceMemberHandler.js.map +1 -1
- package/dist/src/hooks/BodyClickHook.d.ts +2 -2
- package/dist/src/hooks/BodyClickHook.js +7 -3
- package/dist/src/hooks/BodyClickHook.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +2 -0
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js +10 -9
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +7 -6
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +7 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +7 -2
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/ShadowDomManager.d.ts +21 -0
- package/dist/src/providers/ShadowDomManager.js +55 -0
- package/dist/src/providers/ShadowDomManager.js.map +1 -0
- package/dist/src/providers/StyleInjector.d.ts +42 -0
- package/dist/src/providers/StyleInjector.js +118 -0
- package/dist/src/providers/StyleInjector.js.map +1 -0
- package/dist/src/providers/storage/SessionProvider.js.map +1 -1
- package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +1 -1
- package/dist/src/translations/Translation.d.ts +3 -0
- package/dist/src/translations/Translation.js +3 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +3 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Analytics/Analytics.js +1 -0
- package/dist/src/util/Analytics/Analytics.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js +13 -43
- package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/326.bundle.js +0 -2
- package/dist/686.bundle.js +0 -1
- package/dist/src/util/HotelPerkHelper.d.ts +0 -3
- package/dist/src/util/HotelPerkHelper.js +0 -56
- package/dist/src/util/HotelPerkHelper.js.map +0 -1
- /package/dist/{326.bundle.js.LICENSE.txt → 219.bundle.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import { ShadowDomContextType } from './ShadowDomContext';
|
|
3
|
+
interface ShadowDomContextProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
value: ShadowDomContextType;
|
|
6
|
+
}
|
|
7
|
+
export declare const ShadowDomContextProvider: ({ children, value }: ShadowDomContextProviderProps) => React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
exports.ShadowDomContextProvider = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const ShadowDomContext_1 = require("./ShadowDomContext");
|
|
9
|
+
const ShadowDomContextProvider = ({ children, value }) => {
|
|
10
|
+
return react_1.default.createElement(ShadowDomContext_1.ShadowDomContext.Provider, { value: value }, children);
|
|
11
|
+
};
|
|
12
|
+
exports.ShadowDomContextProvider = ShadowDomContextProvider;
|
|
13
|
+
//# sourceMappingURL=ShadowDomContextProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadowDomContextProvider.js","sourceRoot":"/","sources":["src/contexts/ShadowDomContext/ShadowDomContextProvider.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyC;AAEzC,yDAA4E;AAOrE,MAAM,wBAAwB,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAiC,EAAE,EAAE;IAC3F,OAAO,8BAAC,mCAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA6B,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC","sourcesContent":["import React, { ReactNode } from 'react';\n\nimport { ShadowDomContext, ShadowDomContextType } from './ShadowDomContext';\n\ninterface ShadowDomContextProviderProps {\n children: ReactNode;\n value: ShadowDomContextType;\n}\n\nexport const ShadowDomContextProvider = ({ children, value }: ShadowDomContextProviderProps) => {\n return <ShadowDomContext.Provider value={value}>{children}</ShadowDomContext.Provider>;\n};\n"]}
|
|
@@ -20,3 +20,5 @@ export * from './Members/RoomstayMemberContext/RoomstayMemberContext';
|
|
|
20
20
|
export * from './Members/RoomstayMemberContext/RoomstayMemberContextProvider';
|
|
21
21
|
export * from './ModalContext';
|
|
22
22
|
export * from './NotificationContext';
|
|
23
|
+
export * from './ShadowDomContext/ShadowDomContext';
|
|
24
|
+
export * from './ShadowDomContext/ShadowDomContextProvider';
|
|
@@ -36,4 +36,6 @@ __exportStar(require("./Members/RoomstayMemberContext/RoomstayMemberContext"), e
|
|
|
36
36
|
__exportStar(require("./Members/RoomstayMemberContext/RoomstayMemberContextProvider"), exports);
|
|
37
37
|
__exportStar(require("./ModalContext"), exports);
|
|
38
38
|
__exportStar(require("./NotificationContext"), exports);
|
|
39
|
+
__exportStar(require("./ShadowDomContext/ShadowDomContext"), exports);
|
|
40
|
+
__exportStar(require("./ShadowDomContext/ShadowDomContextProvider"), exports);
|
|
39
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/contexts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,6EAA2D;AAC3D,gFAA8D;AAC9D,uFAAqE;AACrE,iGAA+E;AAC/E,8FAA4E;AAC5E,2EAAyD;AACzD,oFAAkE;AAClE,kFAAgE;AAChE,qEAAmD;AACnD,+DAA6C;AAC7C,0DAAwC;AACxC,yFAAuE;AACvE,8FAA4E;AAC5E,gGAA8E;AAC9E,mEAAiD;AACjD,iGAA+E;AAC/E,yGAAuF;AACvF,iGAA+E;AAC/E,yGAAuF;AACvF,0DAAwC;AACxC,iEAA+C","sourcesContent":["export * from '@/contexts/BasketContext/BasketContext';\nexport * from '@/contexts/BasketContext/BasketContextType';\nexport * from '@/contexts/BasketContext/BasketContextWrapper';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContext';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContextType.types';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContextWrapper';\nexport * from '@/contexts/CompanyContext/CompanyContext';\nexport * from '@/contexts/CompanyContext/CompanyContextType.type';\nexport * from '@/contexts/CompanyContext/CompanyContextWrapper';\nexport * from '@/contexts/ConfirmationFormContext';\nexport * from '@/contexts/DatePickerContext';\nexport * from '@/contexts/ErrorContext';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContext';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContextTypes';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContextWrapper';\nexport * from '@/contexts/HotelOverridesContext';\nexport * from '@/contexts/Members/AuthenticationContext/AuthenticationContext';\nexport * from '@/contexts/Members/AuthenticationContext/AuthenticationContextProvider';\nexport * from '@/contexts/Members/RoomstayMemberContext/RoomstayMemberContext';\nexport * from '@/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider';\nexport * from '@/contexts/ModalContext';\nexport * from '@/contexts/NotificationContext';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/contexts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,6EAA2D;AAC3D,gFAA8D;AAC9D,uFAAqE;AACrE,iGAA+E;AAC/E,8FAA4E;AAC5E,2EAAyD;AACzD,oFAAkE;AAClE,kFAAgE;AAChE,qEAAmD;AACnD,+DAA6C;AAC7C,0DAAwC;AACxC,yFAAuE;AACvE,8FAA4E;AAC5E,gGAA8E;AAC9E,mEAAiD;AACjD,iGAA+E;AAC/E,yGAAuF;AACvF,iGAA+E;AAC/E,yGAAuF;AACvF,0DAAwC;AACxC,iEAA+C;AAC/C,+EAA6D;AAC7D,uFAAqE","sourcesContent":["export * from '@/contexts/BasketContext/BasketContext';\nexport * from '@/contexts/BasketContext/BasketContextType';\nexport * from '@/contexts/BasketContext/BasketContextWrapper';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContext';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContextType.types';\nexport * from '@/contexts/BookingEngineContext/BookingEngineContextWrapper';\nexport * from '@/contexts/CompanyContext/CompanyContext';\nexport * from '@/contexts/CompanyContext/CompanyContextType.type';\nexport * from '@/contexts/CompanyContext/CompanyContextWrapper';\nexport * from '@/contexts/ConfirmationFormContext';\nexport * from '@/contexts/DatePickerContext';\nexport * from '@/contexts/ErrorContext';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContext';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContextTypes';\nexport * from '@/contexts/FullPageEngineContext/FullPageEngineContextWrapper';\nexport * from '@/contexts/HotelOverridesContext';\nexport * from '@/contexts/Members/AuthenticationContext/AuthenticationContext';\nexport * from '@/contexts/Members/AuthenticationContext/AuthenticationContextProvider';\nexport * from '@/contexts/Members/RoomstayMemberContext/RoomstayMemberContext';\nexport * from '@/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider';\nexport * from '@/contexts/ModalContext';\nexport * from '@/contexts/NotificationContext';\nexport * from '@/contexts/ShadowDomContext/ShadowDomContext';\nexport * from '@/contexts/ShadowDomContext/ShadowDomContextProvider';\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
|
+
import { ShadowDomContextType } from '../contexts/ShadowDomContext/ShadowDomContext';
|
|
2
3
|
import { RoomstaySession } from '../models/RoomstaySession';
|
|
4
|
+
import { ShadowDomManager } from '../providers/ShadowDomManager';
|
|
3
5
|
import LocalStorageProvider from '../providers/storage/LocalStorageProvider';
|
|
4
6
|
import SessionProvider from '../providers/storage/SessionProvider';
|
|
5
7
|
export interface BookingEngineOnBooking {
|
|
@@ -21,6 +23,7 @@ export interface BaseEngineConfig {
|
|
|
21
23
|
checkIn?: string;
|
|
22
24
|
checkout?: string;
|
|
23
25
|
};
|
|
26
|
+
shadowRoot?: boolean;
|
|
24
27
|
}
|
|
25
28
|
export declare enum BookingEngineSource {
|
|
26
29
|
Inline = "inline",
|
|
@@ -35,6 +38,7 @@ export declare abstract class BaseEngine<C extends BaseEngineConfig> {
|
|
|
35
38
|
protected sessionProvider: SessionProvider;
|
|
36
39
|
protected initialSession: RoomstaySession;
|
|
37
40
|
protected storageProvider: LocalStorageProvider;
|
|
41
|
+
protected shadowDomManager: ShadowDomManager | null;
|
|
38
42
|
protected engineConfig: C;
|
|
39
43
|
constructor(bookingContainer: HTMLElement, config?: C);
|
|
40
44
|
readonly start: () => Promise<void>;
|
|
@@ -44,5 +48,14 @@ export declare abstract class BaseEngine<C extends BaseEngineConfig> {
|
|
|
44
48
|
setConfig(config: C): void;
|
|
45
49
|
getConfig(): C;
|
|
46
50
|
getSource(): BookingEngineSource;
|
|
51
|
+
/**
|
|
52
|
+
* Initialize Shadow DOM if configured. Call at the start of render() in subclasses.
|
|
53
|
+
* Sets up the shadow root and reassigns RoomstayThemeEngine.EngineContainer.
|
|
54
|
+
*
|
|
55
|
+
* Can also be activated via `?shadowRoot=true` URL parameter for staging/QA testing.
|
|
56
|
+
*/
|
|
57
|
+
protected initializeShadowDom(): void;
|
|
58
|
+
/** Returns the ShadowDomContextType value for the React context provider. */
|
|
59
|
+
getShadowDomContextValue(): ShadowDomContextType;
|
|
47
60
|
protected abstract render(): Promise<void>;
|
|
48
61
|
}
|
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.BaseEngine = exports.BookingEngineSource = void 0;
|
|
16
16
|
const RoomstayThemeEngine_1 = __importDefault(require("../providers/RoomstayThemeEngine"));
|
|
17
|
+
const ShadowDomManager_1 = require("../providers/ShadowDomManager");
|
|
17
18
|
const LocalStorageProvider_1 = __importDefault(require("../providers/storage/LocalStorageProvider"));
|
|
18
19
|
const SessionProvider_1 = __importDefault(require("../providers/storage/SessionProvider"));
|
|
19
20
|
var BookingEngineSource;
|
|
@@ -26,6 +27,7 @@ var BookingEngineSource;
|
|
|
26
27
|
})(BookingEngineSource || (exports.BookingEngineSource = BookingEngineSource = {}));
|
|
27
28
|
class BaseEngine {
|
|
28
29
|
constructor(bookingContainer, config) {
|
|
30
|
+
this.shadowDomManager = null;
|
|
29
31
|
this.start = () => __awaiter(this, void 0, void 0, function* () {
|
|
30
32
|
const queryParams = new URLSearchParams(window.location.hash.replace(/^#\/.+\//, ''));
|
|
31
33
|
let sessionId = null;
|
|
@@ -75,6 +77,36 @@ class BaseEngine {
|
|
|
75
77
|
getSource() {
|
|
76
78
|
return this.source;
|
|
77
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Initialize Shadow DOM if configured. Call at the start of render() in subclasses.
|
|
82
|
+
* Sets up the shadow root and reassigns RoomstayThemeEngine.EngineContainer.
|
|
83
|
+
*
|
|
84
|
+
* Can also be activated via `?shadowRoot=true` URL parameter for staging/QA testing.
|
|
85
|
+
*/
|
|
86
|
+
initializeShadowDom() {
|
|
87
|
+
var _a;
|
|
88
|
+
const urlOverride = new URLSearchParams(window.location.search).get('shadowRoot') === 'true';
|
|
89
|
+
const shouldEnable = ((_a = this.engineConfig) === null || _a === void 0 ? void 0 : _a.shadowRoot) || urlOverride;
|
|
90
|
+
if (shouldEnable && !this.shadowDomManager) {
|
|
91
|
+
this.shadowDomManager = new ShadowDomManager_1.ShadowDomManager(this.bookingContainer);
|
|
92
|
+
RoomstayThemeEngine_1.default.EngineContainer = this.shadowDomManager.container;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Returns the ShadowDomContextType value for the React context provider. */
|
|
96
|
+
getShadowDomContextValue() {
|
|
97
|
+
if (this.shadowDomManager) {
|
|
98
|
+
return {
|
|
99
|
+
isShadowDom: true,
|
|
100
|
+
shadowRoot: this.shadowDomManager.root,
|
|
101
|
+
portalTarget: this.shadowDomManager.container,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
isShadowDom: false,
|
|
106
|
+
shadowRoot: null,
|
|
107
|
+
portalTarget: document.body,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
78
110
|
}
|
|
79
111
|
exports.BaseEngine = BaseEngine;
|
|
80
112
|
//# sourceMappingURL=BaseEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEngine.js","sourceRoot":"/","sources":["src/engines/BaseEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BaseEngine.js","sourceRoot":"/","sources":["src/engines/BaseEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\n\nimport { ShadowDomContextType } from '@/contexts/ShadowDomContext/ShadowDomContext';\nimport { RoomstaySession } from '@/models/RoomstaySession';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { ShadowDomManager } from '@/providers/ShadowDomManager';\nimport LocalStorageProvider from '@/providers/storage/LocalStorageProvider';\nimport SessionProvider from '@/providers/storage/SessionProvider';\n\nexport interface BookingEngineOnBooking {\n id: string;\n checkIn: dayjs.Dayjs;\n checkout: dayjs.Dayjs;\n promoCode?: string;\n guests: {\n adults: number;\n children: number;\n infants: number;\n room: number;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseEngineConfig {\n disableChild?: boolean;\n maxAdults?: number;\n defaultValues?: Partial<Omit<BookingEngineOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n shadowRoot?: boolean;\n}\n\nexport enum BookingEngineSource {\n Inline = 'inline',\n RecentSearches = 'recent-searches',\n Fullpage = 'fullpage',\n BookingWizard = 'booking-wizard',\n Auth = 'auth',\n}\n\nexport abstract class BaseEngine<C extends BaseEngineConfig> {\n protected source!: BookingEngineSource;\n protected readonly bookingContainer: HTMLElement;\n protected sessionProvider!: SessionProvider;\n protected initialSession!: RoomstaySession;\n protected storageProvider!: LocalStorageProvider;\n protected shadowDomManager: ShadowDomManager | null = null;\n\n protected engineConfig!: C;\n\n constructor(bookingContainer: HTMLElement, config?: C) {\n this.bookingContainer = bookingContainer;\n this.bookingContainer.classList.add('roomstay-booking-container');\n\n if (this.engineConfig) {\n this.setConfig(config as C);\n }\n\n // TODO: Update these calls\n RoomstayThemeEngine.EngineContainer = bookingContainer;\n RoomstayThemeEngine.init();\n }\n\n public readonly start = async () => {\n const queryParams = new URLSearchParams(window.location.hash.replace(/^#\\/.+\\//, ''));\n let sessionId: any = null;\n if (queryParams) {\n if (queryParams.has('session')) {\n sessionId = queryParams.get('session');\n }\n }\n\n this.sessionProvider = new SessionProvider();\n this.sessionProvider.initialize(sessionId, this.source).then(async () => {\n this.initialSession = await this.sessionProvider.getSession();\n });\n\n this.storageProvider = new LocalStorageProvider();\n\n setTimeout(() => {\n this.render();\n }, 1);\n };\n\n public getInitialSession(): RoomstaySession | null {\n if (this.initialSession) {\n return this.initialSession;\n }\n\n console.error('Tried Loading session without engine initializing first.');\n return null;\n }\n\n public getSessionProvider() {\n return this.sessionProvider;\n }\n\n public getStorageProvider() {\n return this.storageProvider;\n }\n\n public setConfig(config: C) {\n // TODO: add hook updates in here.\n this.engineConfig = config;\n }\n\n public getConfig() {\n return this.engineConfig;\n }\n\n public getSource(): BookingEngineSource {\n return this.source;\n }\n\n /**\n * Initialize Shadow DOM if configured. Call at the start of render() in subclasses.\n * Sets up the shadow root and reassigns RoomstayThemeEngine.EngineContainer.\n *\n * Can also be activated via `?shadowRoot=true` URL parameter for staging/QA testing.\n */\n protected initializeShadowDom(): void {\n const urlOverride = new URLSearchParams(window.location.search).get('shadowRoot') === 'true';\n const shouldEnable = this.engineConfig?.shadowRoot || urlOverride;\n\n if (shouldEnable && !this.shadowDomManager) {\n this.shadowDomManager = new ShadowDomManager(this.bookingContainer);\n RoomstayThemeEngine.EngineContainer = this.shadowDomManager.container;\n }\n }\n\n /** Returns the ShadowDomContextType value for the React context provider. */\n public getShadowDomContextValue(): ShadowDomContextType {\n if (this.shadowDomManager) {\n return {\n isShadowDom: true,\n shadowRoot: this.shadowDomManager.root,\n portalTarget: this.shadowDomManager.container,\n };\n }\n return {\n isShadowDom: false,\n shadowRoot: null,\n portalTarget: document.body,\n };\n }\n\n protected abstract render(): Promise<void>;\n}\n"]}
|
|
@@ -25,6 +25,7 @@ class BookingWizardEngine extends BaseEngine_1.BaseEngine {
|
|
|
25
25
|
}
|
|
26
26
|
render() {
|
|
27
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
this.initializeShadowDom();
|
|
28
29
|
(0, BookingWizardEngineElement_1.renderBookingWizard)(RoomstayThemeEngine_1.default.createElementOrReuseExisting('div', 'booking-wizard'), this);
|
|
29
30
|
});
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,qDAAyF;AACzF,yGAA+F;AAK/F,0FAAkE;AA4ClE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;
|
|
1
|
+
{"version":3,"file":"BookingWizardEngine.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,qDAAyF;AACzF,yGAA+F;AAK/F,0FAAkE;AA4ClE,MAAa,mBAAoB,SAAQ,uBAAqC;IAC1E,YAAmB,gBAA6B,EAAE,MAAkC;QAChF,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,aAAa,CAAC;QAEhD,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEe,MAAM;;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAA,gDAAmB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,CAAC;KAAA;CACJ;AAbD,kDAaC","sourcesContent":["import { ReactNode } from 'react';\n\nimport { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\nimport type { BookingWizardContextType } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BookingWizardGuestSelectorProps } from '@/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderBookingWizard } from '@/engines/BookingWizardEngine/BookingWizardEngineElement';\nimport { ShowPromoCodeAlertProps, ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport type { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnCalendarProps, ShowPromoCodeAlertProps, Pick<Hotel, 'startsWeekOnDay'> {\n widgetType: 'property' | 'group';\n theme: EBookingWizardTheme;\n layout: 'horizontal' | 'vertical' | 'button';\n useMobileButtonLayout?: boolean;\n\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n\n wrapperClassname?: string;\n contentClassname?: string;\n maxOccupancy?: number;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n hideProperty?: boolean;\n dateFormat?: string;\n\n hideTooltips?: boolean;\n overlayDirection?: EBookingWizardOverlayDirection;\n\n onSubmit?: BookingWizardContextType['onSubmit'];\n\n // New option for new theme\n notes?: {\n date?: ReactNode; // Show at bottom left corner of Date Selector popup\n guest?: ReactNode; // Show at bottom of Guest Selector popup\n };\n guestAgeConfig?: Pick<BookingWizardGuestSelectorProps, 'minAdultAge' | 'maxAdultAge' | 'ageRange'>;\n\n // Enable property search and optionally provide a custom search filter function.\n searchConfig?: {\n companyId: number;\n searchFilter?: (properties: TBookingWizardProperties, query?: string) => TBookingWizardProperties;\n sortCompareFn?: <T>(a: T, b: T) => number;\n combineAddress?: (address: BookingWizardProperty['address']) => string;\n };\n}\n\nexport class BookingWizardEngine extends BaseEngine<BookingWizardEngineConfig> {\n public constructor(bookingContainer: HTMLElement, config?: BookingWizardEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.BookingWizard;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n protected async render() {\n this.initializeShadowDom();\n renderBookingWizard(RoomstayThemeEngine.createElementOrReuseExisting('div', 'booking-wizard'), this);\n }\n}\n"]}
|
|
@@ -9,6 +9,7 @@ const contexts_1 = require("../../contexts/index.js");
|
|
|
9
9
|
const react_1 = __importDefault(require("react"));
|
|
10
10
|
const react_dom_1 = require("react-dom");
|
|
11
11
|
const BookingWizard_1 = __importDefault(require("../../components/generic/BookingWizard/BookingWizard"));
|
|
12
|
+
const ShadowDomContextProvider_1 = require("../../contexts/ShadowDomContext/ShadowDomContextProvider");
|
|
12
13
|
function BookingWizardEngineElement({ engine }) {
|
|
13
14
|
const engineConfig = engine.getConfig();
|
|
14
15
|
const bwProps = {
|
|
@@ -39,7 +40,8 @@ function BookingWizardEngineElement({ engine }) {
|
|
|
39
40
|
react_1.default.createElement(BookingWizard_1.default, Object.assign({}, bwProps))));
|
|
40
41
|
}
|
|
41
42
|
const renderBookingWizard = (container, engine) => {
|
|
42
|
-
(0, react_dom_1.render)(react_1.default.createElement(
|
|
43
|
+
(0, react_dom_1.render)(react_1.default.createElement(ShadowDomContextProvider_1.ShadowDomContextProvider, { value: engine.getShadowDomContextValue() },
|
|
44
|
+
react_1.default.createElement(BookingWizardEngineElement, { engine: engine })), container);
|
|
43
45
|
};
|
|
44
46
|
exports.renderBookingWizard = renderBookingWizard;
|
|
45
47
|
//# sourceMappingURL=BookingWizardEngineElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardEngineElement.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngineElement.tsx"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"BookingWizardEngineElement.js","sourceRoot":"/","sources":["src/engines/BookingWizardEngine/BookingWizardEngineElement.tsx"],"names":[],"mappings":";;;;;;AAaA,6CAkCC;AA/CD,iDAAiE;AACjE,kDAA0B;AAC1B,yCAAmC;AAEnC,qGAA0H;AAC1H,mGAAgG;AAQhG,SAAwB,0BAA0B,CAAC,EAAE,MAAM,EAAmC;IAC1F,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAExC,MAAM,OAAO,GAAuB;QAChC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAA4B;QAChD,qBAAqB,EAAE,YAAY,CAAC,qBAAqB;QACzD,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,eAAe,EAAE,YAAY,CAAC,eAAe;QAC7C,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,eAAe,EAAE,YAAY,CAAC,eAAe;KAC1B,CAAC;IAExB,8EAA8E;IAC9E,8CAA8C;IAE9C,OAAO,CACH,8BAAC,sCAA2B,IAAC,MAAM,EAAE,MAAM;QACvC,8BAAC,uBAAa,oBAAK,OAAO,EAAI,CACJ,CACjC,CAAC;AACN,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,SAAkB,EAAE,MAA2B,EAAE,EAAE;IACnF,IAAA,kBAAM,EACF,8BAAC,mDAAwB,IAAC,KAAK,EAAE,MAAM,CAAC,wBAAwB,EAAE;QAC9D,8BAAC,0BAA0B,IAAC,MAAM,EAAE,MAAM,GAAI,CACvB,EAC3B,SAAS,CACZ,CAAC;AACN,CAAC,CAAC;AAPW,QAAA,mBAAmB,uBAO9B","sourcesContent":["import { BookingEngineContextWrapper } from '@frontend/contexts';\nimport React from 'react';\nimport { render } from 'react-dom';\n\nimport BookingWizard, { BookingWizardProps, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\nimport { ShadowDomContextProvider } from '@/contexts/ShadowDomContext/ShadowDomContextProvider';\n\nimport { BookingWizardEngine } from './BookingWizardEngine';\n\nexport interface BookingWizardEngineElementProps {\n engine: BookingWizardEngine;\n}\n\nexport default function BookingWizardEngineElement({ engine }: BookingWizardEngineElementProps) {\n const engineConfig = engine.getConfig();\n\n const bwProps: BookingWizardProps = {\n layout: engineConfig.layout,\n theme: engineConfig.theme as EBookingWizardTheme,\n useMobileButtonLayout: engineConfig.useMobileButtonLayout,\n properties: engineConfig.properties,\n selectedProperty: engineConfig.selectedProperty,\n defaultColors: engineConfig.defaultColors,\n wrapperClassname: engineConfig.wrapperClassname,\n contentClassname: engineConfig.contentClassname,\n maxAdults: engineConfig.maxAdults,\n disableChild: engineConfig.disableChild,\n showInfants: engineConfig.showInfants,\n disableRoom: engineConfig.disableRoom,\n defaultValues: engineConfig.defaultValues,\n hideGuestSelect: engineConfig.hideGuestSelect,\n hidePromocode: engineConfig.hidePromocode,\n hideProperty: engineConfig.hideProperty,\n dateFormat: engineConfig.dateFormat,\n onSubmit: engineConfig.onSubmit,\n overlayDirection: engineConfig.overlayDirection,\n startsWeekOnDay: engineConfig.startsWeekOnDay,\n } as BookingWizardProps;\n\n // TODO: This will be updated to be configurable (border sizing, padding, etc)\n // const widgetType = engineConfig.widgetType;\n\n return (\n <BookingEngineContextWrapper engine={engine}>\n <BookingWizard {...bwProps} />\n </BookingEngineContextWrapper>\n );\n}\n\nexport const renderBookingWizard = (container: Element, engine: BookingWizardEngine) => {\n render(\n <ShadowDomContextProvider value={engine.getShadowDomContextValue()}>\n <BookingWizardEngineElement engine={engine} />\n </ShadowDomContextProvider>,\n container\n );\n};\n"]}
|
|
@@ -27,6 +27,7 @@ class InlineRoomMiniEngine extends BaseEngine_1.BaseEngine {
|
|
|
27
27
|
}
|
|
28
28
|
render() {
|
|
29
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
this.initializeShadowDom();
|
|
30
31
|
(0, InlineRoomMiniEngineElement_1.renderInlineRoomMiniEngineElement)(RoomstayThemeEngine_1.default.createElementOrReuseExisting('div', 'inline-mini-engine'), this);
|
|
31
32
|
});
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRoomMiniEngine.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AAYlE,MAAa,oBAAqB,SAAQ,uBAAsC;IAG5E,YAAY,gBAA6B,EAAE,QAAgB,EAAE,MAAmC;QAC5F,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEe,MAAM;;YAClB,IAAA,+DAAiC,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3H,CAAC;KAAA;CACJ;
|
|
1
|
+
{"version":3,"file":"InlineRoomMiniEngine.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AAYlE,MAAa,oBAAqB,SAAQ,uBAAsC;IAG5E,YAAY,gBAA6B,EAAE,QAAgB,EAAE,MAAmC;QAC5F,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEe,MAAM;;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAA,+DAAiC,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3H,CAAC;KAAA;CACJ;AAjBD,oDAiBC","sourcesContent":["import { ReactNode } from 'react';\n\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderInlineRoomMiniEngineElement } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface InlineRoomMiniEngineConfig extends BaseEngineConfig {\n company: ConfigCompany;\n layout?: 'default' | 'card'; // Added layout, Default: default\n policy?: ReactNode;\n priceDescription?: ReactNode;\n\n showInfants?: boolean;\n maxInfants?: number;\n}\n\nexport class InlineRoomMiniEngine extends BaseEngine<InlineRoomMiniEngineConfig> {\n private roomCode: string;\n\n constructor(bookingContainer: HTMLElement, roomCode: string, config?: InlineRoomMiniEngineConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.Inline;\n this.roomCode = roomCode;\n }\n\n public getRoomCode(): string {\n return this.roomCode;\n }\n\n protected async render() {\n this.initializeShadowDom();\n renderInlineRoomMiniEngineElement(RoomstayThemeEngine.createElementOrReuseExisting('div', 'inline-mini-engine'), this);\n }\n}\n"]}
|
|
@@ -74,6 +74,7 @@ const Text_1 = __importStar(require("../../components/generic/Text"));
|
|
|
74
74
|
const Tooltip_1 = __importDefault(require("../../components/generic/Tooltip/Tooltip"));
|
|
75
75
|
const RatesNotFoundBlock_1 = __importDefault(require("../../components/steps/room/RatesNotFoundBlock"));
|
|
76
76
|
const RoomRates_1 = __importDefault(require("../../components/steps/room/roomDetails/roomRates/RoomRates"));
|
|
77
|
+
const ShadowDomContextProvider_1 = require("../../contexts/ShadowDomContext/ShadowDomContextProvider");
|
|
77
78
|
const RoomListSearchEvent_1 = require("../../events/actions/RoomListSearchEvent");
|
|
78
79
|
const useSignedInMember_1 = require("../../hooks/useSignedInMember");
|
|
79
80
|
const BasketRow_1 = __importStar(require("../../models/BasketRow"));
|
|
@@ -433,16 +434,17 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
433
434
|
}, [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel, standardRates]);
|
|
434
435
|
}
|
|
435
436
|
const renderInlineRoomMiniEngineElement = (container, engine) => {
|
|
436
|
-
(0, react_dom_1.render)(react_1.default.createElement(
|
|
437
|
-
react_1.default.createElement(
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
react_1.default.createElement(
|
|
443
|
-
react_1.default.createElement(
|
|
444
|
-
react_1.default.createElement(contexts_1.
|
|
445
|
-
react_1.default.createElement(
|
|
437
|
+
(0, react_dom_1.render)(react_1.default.createElement(ShadowDomContextProvider_1.ShadowDomContextProvider, { value: engine.getShadowDomContextValue() },
|
|
438
|
+
react_1.default.createElement(contexts_1.BookingEngineContextWrapper, { engine: engine },
|
|
439
|
+
react_1.default.createElement(react_router_dom_1.HashRouter, { future: {
|
|
440
|
+
v7_startTransition: false,
|
|
441
|
+
v7_relativeSplatPath: false,
|
|
442
|
+
} },
|
|
443
|
+
react_1.default.createElement(NotificationContext_1.NotificationContextWrapper, null,
|
|
444
|
+
react_1.default.createElement(ErrorContext_1.ErrorContextWrapper, null,
|
|
445
|
+
react_1.default.createElement(contexts_1.CompanyContextWrapper, { configCompany: engine.getConfig().company },
|
|
446
|
+
react_1.default.createElement(contexts_1.BasketContextWrapper, null,
|
|
447
|
+
react_1.default.createElement(InlineRoomMiniEngineElement, { engine: engine })))))))), container);
|
|
446
448
|
};
|
|
447
449
|
exports.renderInlineRoomMiniEngineElement = renderInlineRoomMiniEngineElement;
|
|
448
450
|
const GuestSelectorCustom = ({ maxAdults, maxChildren, maxInfants = 10, defaultValue, onChange, disableChild, showInfants, disableRoom, applyButton, promoCodeConfig, row, }) => {
|