@roomstay/frontend 2.6.59 → 2.6.60
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/449.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +22 -5
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/room/ImageGallerySlider.js +5 -3
- package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +47 -21
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +7 -6
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.d.ts +4 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +28 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +202 -41
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.js +15 -4
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +1 -1
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomRates.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRates.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport MembersOnlyRow from '@/components/steps/room/roomDetails/roomRates/MembersOnlyRow';\nimport RoomRateRow from '@/components/steps/room/roomDetails/roomRates/RoomRateRow';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateReadMoreVersionFeature from '@/providers/feature/RoomRateReadMoreVersionFeature';\nimport RoomSortProvider from '@/providers/RoomSortProvider';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport ReadMoreRoomRateRow from './ReadMoreRoomRateRow';\nimport { RoomRateListPromotion } from './RoomRateListPromotion/RoomRateListPromotion';\n\nexport interface RoomRatesProps {\n roomCode: string;\n rates: RoomRate[];\n\n featuredRates?: RoomRate[];\n\n classNames?: string;\n\n hideMemberOnlyRow?: boolean;\n\n // Inline Booking Widget overrides\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n}\n\nexport default function RoomRates(props: RoomRatesProps) {\n const { t } = useTranslation();\n const [showingMoreOpen, setShowingMoreOpen] = useState(false);\n\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const { rates } = props;\n\n const numOfRatesToShowFirst = beContext.screenSize <= ScreenSize.Medium ? 2 : 3;\n\n const sortBy = beContext.currentRoomSort;\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.roomCode) {\n setShowingMoreOpen(true);\n }\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n DataLayer.instance.sendRoomImpressions();\n }, [showingMoreOpen]);\n\n return useMemo(() => {\n const featuredRates = props.featuredRates?.filter((rate) => !!rate);\n const hasFeaturedRates = !!featuredRates && featuredRates.length > 0;\n\n let sortedRates: RoomRate[];\n\n if (rates.length !== 0) {\n sortedRates = rates.sort(RoomSortProvider.getSortByFunction(sortBy));\n }\n\n // Need two sorts because of MOD\n sortedRates = rates.sort((a, b) => {\n if (a.isMemberOnly) {\n return -1;\n } else if (b.isMemberOnly) {\n return 1;\n } else {\n return 0;\n }\n });\n\n const showMoreOnClick = () => {\n setShowingMoreOpen(true);\n };\n\n const itemsToRender = [];\n\n const renderRoomRateRow = (rate: RoomRate, isPromo = false) => {\n if (RoomRateReadMoreVersionFeature.isActive()) {\n return (\n <ReadMoreRoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n />\n );\n }\n\n return <RoomRateRow key={rate.name} rate={rate} getButtonLabel={props.getButtonLabel} onAddToBasketOverride={props.onAddToBasketOverride} isPromoRate={isPromo} />;\n };\n\n const maxRows = hasFeaturedRates && !showingMoreOpen ? featuredRates.length : numOfRatesToShowFirst;\n let rowsLeftToOpen = 0;\n\n if (featuredRates && featuredRates.length) {\n featuredRates.sort(RoomSortProvider.getSortByFunction(sortBy));\n // First we add Featured Rates to the top of the list - no limits there\n featuredRates.forEach((row) => {\n if (row) {\n itemsToRender.push(renderRoomRateRow(row, true));\n }\n });\n }\n\n if (basketContext.loadedPromotion) {\n itemsToRender.push(<RoomRateListPromotion promotion={basketContext.loadedPromotion} />);\n }\n\n // Then we add the remaining rates to the render list - stop adding if we hit `maxRows`\n sortedRates.forEach((rate: RoomRate) => {\n if (itemsToRender.length < maxRows || showingMoreOpen) {\n itemsToRender.push(renderRoomRateRow(rate));\n } else {\n rowsLeftToOpen++;\n }\n });\n\n // Then we do a tricky check to see if MOD intent should be displayed\n if (!hasFeaturedRates || showingMoreOpen) {\n if (\n !props.hideMemberOnlyRow &&\n !!hotel?.memberOnlyPromoCode &&\n (!ccx.signedInUser || hotel?.memberOnlyPromoCode === basketContext?.selectedBasketRow?.getPromoCode())\n ) {\n if (hotel?.memberOnlyRenderRateLast) {\n itemsToRender.push(<MembersOnlyRow />);\n } else {\n itemsToRender.unshift(<MembersOnlyRow />);\n }\n }\n }\n\n return (\n <div className={props.classNames ?? ''}>\n {itemsToRender.map((item: any, index: number) => {\n return <React.Fragment key={index}>{item}</React.Fragment>;\n })}\n {rowsLeftToOpen > 0 && (\n <div className=\"room-show-more\">\n <BEButton icon={IconType.ArrowDown2} iconPosition=\"right\" stopIconAnimation isText textColor={Color.Navy} onClick={showMoreOnClick}>\n {t(Translation.Step.Room.RoomInfo.Show)} {rowsLeftToOpen} {t(Translation.Step.Room.RoomInfo.MoreRates)}\n </BEButton>\n </div>\n )}\n </div>\n );\n }, [props.featuredRates, rates, beContext.currentRoomSort, showingMoreOpen, basketContext?.loadedPromotion, hotel?.memberOnlyRenderRateLast]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RoomRates.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/RoomRates.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport MembersOnlyRow from '@/components/steps/room/roomDetails/roomRates/MembersOnlyRow';\nimport RoomRateRow from '@/components/steps/room/roomDetails/roomRates/RoomRateRow';\nimport { InlineRoomMiniEngineConfig } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateReadMoreVersionFeature from '@/providers/feature/RoomRateReadMoreVersionFeature';\nimport RoomSortProvider from '@/providers/RoomSortProvider';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport ReadMoreRoomRateRow from './ReadMoreRoomRateRow';\nimport { RoomRateListPromotion } from './RoomRateListPromotion/RoomRateListPromotion';\n\nexport interface RoomRatesProps extends Pick<InlineRoomMiniEngineConfig, 'policy' | 'priceDescription'> {\n roomCode: string;\n rates: RoomRate[];\n\n featuredRates?: RoomRate[];\n\n classNames?: string;\n\n hideMemberOnlyRow?: boolean;\n\n // Inline Booking Widget overrides\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n isCardLayout?: boolean;\n}\n\nexport default function RoomRates(props: RoomRatesProps) {\n const { t } = useTranslation();\n const [showingMoreOpen, setShowingMoreOpen] = useState(false);\n\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const { rates, isCardLayout } = props;\n\n const numOfRatesToShowFirst = beContext.screenSize <= ScreenSize.Medium ? 2 : 3;\n\n const sortBy = beContext.currentRoomSort;\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.roomCode) {\n setShowingMoreOpen(true);\n }\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n DataLayer.instance.sendRoomImpressions();\n }, [showingMoreOpen]);\n\n return useMemo(() => {\n const featuredRates = props.featuredRates?.filter((rate) => !!rate);\n const hasFeaturedRates = !!featuredRates && featuredRates.length > 0;\n\n let sortedRates: RoomRate[];\n\n if (rates.length !== 0) {\n sortedRates = rates.sort(RoomSortProvider.getSortByFunction(sortBy));\n }\n\n // Need two sorts because of MOD\n sortedRates = rates.sort((a, b) => {\n if (a.isMemberOnly) {\n return -1;\n } else if (b.isMemberOnly) {\n return 1;\n } else {\n return 0;\n }\n });\n\n const showMoreOnClick = () => {\n setShowingMoreOpen(true);\n };\n\n const itemsToRender = [];\n\n const renderRoomRateRow = (rate: RoomRate, isPromo = false) => {\n if (RoomRateReadMoreVersionFeature.isActive()) {\n return (\n <ReadMoreRoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n />\n );\n }\n\n return (\n <RoomRateRow\n key={rate.name}\n rate={rate}\n getButtonLabel={props.getButtonLabel}\n onAddToBasketOverride={props.onAddToBasketOverride}\n isPromoRate={isPromo}\n isCardLayout={isCardLayout}\n policy={props.policy}\n priceDescription={props.priceDescription}\n />\n );\n };\n\n const maxRows = hasFeaturedRates && !showingMoreOpen ? featuredRates.length : numOfRatesToShowFirst;\n let rowsLeftToOpen = 0;\n\n if (featuredRates && featuredRates.length) {\n featuredRates.sort(RoomSortProvider.getSortByFunction(sortBy));\n // First we add Featured Rates to the top of the list - no limits there\n featuredRates.forEach((row) => {\n if (row) {\n itemsToRender.push(renderRoomRateRow(row, true));\n }\n });\n }\n\n if (basketContext.loadedPromotion) {\n itemsToRender.push(<RoomRateListPromotion promotion={basketContext.loadedPromotion} />);\n }\n\n // Then we add the remaining rates to the render list - stop adding if we hit `maxRows`\n sortedRates.forEach((rate: RoomRate) => {\n if (isCardLayout || itemsToRender.length < maxRows || showingMoreOpen) {\n itemsToRender.push(renderRoomRateRow(rate));\n } else {\n rowsLeftToOpen++;\n }\n });\n\n // Then we do a tricky check to see if MOD intent should be displayed\n if (!isCardLayout && (!hasFeaturedRates || showingMoreOpen)) {\n if (\n !props.hideMemberOnlyRow &&\n !!hotel?.memberOnlyPromoCode &&\n (!ccx.signedInUser || hotel?.memberOnlyPromoCode === basketContext?.selectedBasketRow?.getPromoCode())\n ) {\n if (hotel?.memberOnlyRenderRateLast) {\n itemsToRender.push(<MembersOnlyRow />);\n } else {\n itemsToRender.unshift(<MembersOnlyRow />);\n }\n }\n }\n\n return (\n <div className={classNames(props.classNames)}>\n {itemsToRender.map((item: any, index: number) => {\n return <React.Fragment key={index}>{item}</React.Fragment>;\n })}\n {rowsLeftToOpen > 0 && (\n <div className=\"room-show-more\">\n <BEButton icon={IconType.ArrowDown2} iconPosition=\"right\" stopIconAnimation isText textColor={Color.Navy} onClick={showMoreOnClick}>\n {t(Translation.Step.Room.RoomInfo.Show)} {rowsLeftToOpen} {t(Translation.Step.Room.RoomInfo.MoreRates)}\n </BEButton>\n </div>\n )}\n </div>\n );\n }, [props.featuredRates, rates, beContext.currentRoomSort, showingMoreOpen, basketContext?.loadedPromotion, hotel?.memberOnlyRenderRateLast]);\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { BaseEngine, BaseEngineConfig } from '../BaseEngine';
|
|
2
3
|
import { ConfigCompany } from '../../models/Client/Hotel/Company';
|
|
3
4
|
export interface InlineRoomMiniEngineConfig extends BaseEngineConfig {
|
|
4
5
|
company: ConfigCompany;
|
|
6
|
+
layout?: 'default' | 'card';
|
|
7
|
+
policy?: ReactNode;
|
|
8
|
+
priceDescription?: ReactNode;
|
|
5
9
|
}
|
|
6
10
|
export declare class InlineRoomMiniEngine extends BaseEngine<InlineRoomMiniEngineConfig> {
|
|
7
11
|
private roomCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRoomMiniEngine.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"InlineRoomMiniEngine.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AASlE,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;AAhBD,oDAgBC","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\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 renderInlineRoomMiniEngineElement(RoomstayThemeEngine.createElementOrReuseExisting('div', 'inline-mini-engine'), this);\n }\n}\n"]}
|
|
@@ -1,6 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { InlineRoomMiniEngine } from './InlineRoomMiniEngine';
|
|
2
3
|
export interface InlineRoomMiniEngineElementProps {
|
|
3
4
|
engine: InlineRoomMiniEngine;
|
|
4
5
|
}
|
|
5
6
|
export default function InlineRoomMiniEngineElement(props: InlineRoomMiniEngineElementProps): JSX.Element;
|
|
6
7
|
export declare const renderInlineRoomMiniEngineElement: (container: Element, engine: InlineRoomMiniEngine) => void;
|
|
8
|
+
export declare const GuestSelectorCustom: ({ maxAdults, maxChildren, maxInfants, defaultValue, onChange, disableChild, showInfants, disableRoom, applyButton, promoCodeConfig, }: {
|
|
9
|
+
maxAdults?: number | undefined;
|
|
10
|
+
maxChildren?: number | undefined;
|
|
11
|
+
maxInfants?: number | undefined;
|
|
12
|
+
defaultValue?: {
|
|
13
|
+
adults?: number | undefined;
|
|
14
|
+
children?: number | undefined;
|
|
15
|
+
infants?: number | undefined;
|
|
16
|
+
room?: number | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
onChange?: ((params: {
|
|
19
|
+
adults: number;
|
|
20
|
+
children: number;
|
|
21
|
+
infants: number;
|
|
22
|
+
room: number;
|
|
23
|
+
}) => void) | undefined;
|
|
24
|
+
disableChild?: boolean | undefined;
|
|
25
|
+
showInfants?: boolean | undefined;
|
|
26
|
+
disableRoom?: boolean | undefined;
|
|
27
|
+
applyButton?: boolean | undefined;
|
|
28
|
+
promoCodeConfig?: {
|
|
29
|
+
promoCode: string;
|
|
30
|
+
setPromoCode: React.Dispatch<React.SetStateAction<string>>;
|
|
31
|
+
onChange: (val: any) => void;
|
|
32
|
+
valid?: boolean | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
}) => JSX.Element;
|
|
@@ -35,9 +35,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.renderInlineRoomMiniEngineElement = void 0;
|
|
38
|
+
exports.GuestSelectorCustom = exports.renderInlineRoomMiniEngineElement = void 0;
|
|
39
39
|
const contexts_1 = require("../../contexts/index.js");
|
|
40
40
|
const hooks_1 = require("../../hooks/index.js");
|
|
41
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
41
42
|
const ErrorContext_1 = require("contexts/ErrorContext");
|
|
42
43
|
const NotificationContext_1 = require("contexts/NotificationContext");
|
|
43
44
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
@@ -54,6 +55,7 @@ const BookNowPayLaterInfoBlock_1 = require("../../components/generic/BookNowPayL
|
|
|
54
55
|
const FloatingDatePicker_1 = __importDefault(require("../../components/generic/date/FloatingDatePicker"));
|
|
55
56
|
const Icon_1 = __importStar(require("../../components/generic/Icon/Icon"));
|
|
56
57
|
const LargeLoader_1 = __importDefault(require("../../components/generic/loader/LargeLoader"));
|
|
58
|
+
const NumberIncrement_1 = __importDefault(require("../../components/generic/NumberIncrement"));
|
|
57
59
|
const Overlay_1 = require("../../components/generic/Overlay/Overlay");
|
|
58
60
|
const PromoCodeInput_1 = __importDefault(require("../../components/generic/PromoCodeInput"));
|
|
59
61
|
const Select_1 = require("../../components/generic/Select/Select");
|
|
@@ -70,8 +72,11 @@ const RoomstayThemeEngine_1 = __importDefault(require("../../providers/RoomstayT
|
|
|
70
72
|
const Color_1 = require("../../util/Color");
|
|
71
73
|
const DataLayer_1 = __importStar(require("../../util/DataLayer"));
|
|
72
74
|
const StringHelper_1 = __importDefault(require("../../util/StringHelper"));
|
|
75
|
+
const InlineRoomMiniEngine_module_scss_1 = __importDefault(require("./InlineRoomMiniEngine.module.scss"));
|
|
73
76
|
function InlineRoomMiniEngineElement(props) {
|
|
74
|
-
var _a;
|
|
77
|
+
var _a, _b, _c;
|
|
78
|
+
const { layout = 'default', policy, priceDescription } = props.engine.getConfig();
|
|
79
|
+
const isCardLayout = layout === 'card';
|
|
75
80
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
76
81
|
const { memberNumber } = (0, useSignedInMember_1.useSignedInMember)();
|
|
77
82
|
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
@@ -203,7 +208,9 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
203
208
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
204
209
|
row.setChildren(children);
|
|
205
210
|
}
|
|
206
|
-
|
|
211
|
+
if (!isCardLayout) {
|
|
212
|
+
basketContext.updateBasketRow(row);
|
|
213
|
+
}
|
|
207
214
|
};
|
|
208
215
|
const updateDateValues = (startDate, endDate) => {
|
|
209
216
|
if (startDate && endDate) {
|
|
@@ -219,9 +226,12 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
219
226
|
}
|
|
220
227
|
const isCompact = bounds.width < 1000 ? '--compact' : '';
|
|
221
228
|
const findRoomsOnClick = () => __awaiter(this, void 0, void 0, function* () {
|
|
222
|
-
var
|
|
229
|
+
var _d;
|
|
230
|
+
if (isCardLayout) {
|
|
231
|
+
basketContext.updateBasketRow(row);
|
|
232
|
+
}
|
|
223
233
|
setLoading(true);
|
|
224
|
-
setRooms((
|
|
234
|
+
setRooms((_d = (yield BookingAPI_1.default.Availability.fetchAvailabilityData(row, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber))) === null || _d === void 0 ? void 0 : _d.filter((room) => room.code === props.engine.getRoomCode()));
|
|
225
235
|
setLoading(false);
|
|
226
236
|
});
|
|
227
237
|
const getButtonLabelHandler = () => {
|
|
@@ -233,6 +243,12 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
233
243
|
const updateNumberOfChildrenOnChange = (value) => {
|
|
234
244
|
updatePeopleValues({ children: +value });
|
|
235
245
|
};
|
|
246
|
+
const defaultGuestValue = {
|
|
247
|
+
adults: (_a = row === null || row === void 0 ? void 0 : row.getAdults()) !== null && _a !== void 0 ? _a : 1,
|
|
248
|
+
children: (_b = row === null || row === void 0 ? void 0 : row.getChildren()) !== null && _b !== void 0 ? _b : 0,
|
|
249
|
+
infants: 0,
|
|
250
|
+
room: 1,
|
|
251
|
+
};
|
|
236
252
|
const updatePromoCode = (code) => {
|
|
237
253
|
DataLayer_1.default.instance.sendInteraction('Promo Code updated', DataLayer_1.InteractionType.FORM_FIELD, DataLayer_1.InteractionStep.ROOMS);
|
|
238
254
|
if (row) {
|
|
@@ -272,39 +288,98 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
272
288
|
const changePromoCode = (val) => {
|
|
273
289
|
updatePromoCode(val);
|
|
274
290
|
};
|
|
275
|
-
const maxOccupancy = (
|
|
291
|
+
const maxOccupancy = (_c = hotel === null || hotel === void 0 ? void 0 : hotel.maxOccupancy) !== null && _c !== void 0 ? _c : 1;
|
|
292
|
+
const DatePickerSelector = () => {
|
|
293
|
+
const inner = () => {
|
|
294
|
+
if (isCardLayout) {
|
|
295
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)('u-cursor-pointer', InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-item-dates-inner']) },
|
|
296
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(InlineRoomMiniEngine_module_scss_1.default['card']) },
|
|
297
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['image'] },
|
|
298
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Calendar })),
|
|
299
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['content'] },
|
|
300
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Body }, t(Translation_1.Translation.Misc.CheckIn)),
|
|
301
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['sub-title'], type: Text_1.TextType.Body, color: Color_1.Color.Navy }, (row === null || row === void 0 ? void 0 : row.getArrivalDate()) ? row.getArrivalDate() : t(Translation_1.Translation.Misc.CheckInPlaceHolder)))),
|
|
302
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(InlineRoomMiniEngine_module_scss_1.default['card']) },
|
|
303
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['image'] },
|
|
304
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Calendar })),
|
|
305
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['content'] },
|
|
306
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Body }, t(Translation_1.Translation.Misc.CheckOut)),
|
|
307
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['sub-title'] }, (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? row.getDepartureDate() : t(Translation_1.Translation.Misc.CheckOutPlaceHolder))))));
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
return (react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer" },
|
|
311
|
+
react_1.default.createElement(Text_1.default, { color: (row === null || row === void 0 ? void 0 : row.getArrivalDate()) ? Color_1.Color.Accent : Color_1.Color.Graphite, className: "u-mw-75 u-align-center", bold: !!(row === null || row === void 0 ? void 0 : row.getArrivalDate()) },
|
|
312
|
+
react_1.default.createElement("span", null, (row === null || row === void 0 ? void 0 : row.getArrivalDate()) ? row.getArrivalDate() : 'Arrival Date')),
|
|
313
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2 }),
|
|
314
|
+
react_1.default.createElement(Text_1.default, { color: (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? Color_1.Color.Accent : Color_1.Color.Graphite, className: "u-marg-right u-mw-75 u-align-center", bold: !!(row === null || row === void 0 ? void 0 : row.getDepartureDate()) },
|
|
315
|
+
react_1.default.createElement("span", null, (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? row.getDepartureDate() : 'Departure Date'))));
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
return (react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row === null || row === void 0 ? void 0 : row.getStartDate(), selectedDateChanged: updateDateValues, className: (0, classnames_1.default)('rs-inline-filter-item-dates', {
|
|
319
|
+
'u-w-100@xl- room-builder-progress--value u-marg-left--none ': !isCardLayout,
|
|
320
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-item-dates']]: isCardLayout,
|
|
321
|
+
}) },
|
|
322
|
+
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere), wrapperClasses: "u-w-100@xl-" }, inner())));
|
|
323
|
+
};
|
|
324
|
+
const GuestSelector = () => {
|
|
325
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
326
|
+
if (isCardLayout) {
|
|
327
|
+
const numChildren = ((_a = row === null || row === void 0 ? void 0 : row.getChildren) === null || _a === void 0 ? void 0 : _a.call(row)) || 0;
|
|
328
|
+
const maxAdults = maxOccupancy - numChildren;
|
|
329
|
+
const maxChildren = maxOccupancy + 1 - (((_b = row === null || row === void 0 ? void 0 : row.getAdults) === null || _b === void 0 ? void 0 : _b.call(row)) || 0);
|
|
330
|
+
return (react_1.default.createElement(exports.GuestSelectorCustom, { maxAdults: maxAdults, maxChildren: maxChildren, onChange: (newValue) => {
|
|
331
|
+
updatePeopleValues({
|
|
332
|
+
adults: +newValue.adults,
|
|
333
|
+
children: +newValue.children,
|
|
334
|
+
});
|
|
335
|
+
}, disableChild: false, showInfants: false, disableRoom: true, applyButton: false, defaultValue: defaultGuestValue, promoCodeConfig: {
|
|
336
|
+
promoCode: (_c = basketContext.selectedBasketRow) === null || _c === void 0 ? void 0 : _c.getPromoCode(),
|
|
337
|
+
setPromoCode,
|
|
338
|
+
onChange: changePromoCode,
|
|
339
|
+
valid: ((_d = basketContext.selectedBasketRow) === null || _d === void 0 ? void 0 : _d.getPromoCodeStatus()) !== 'new' ? ((_e = basketContext.selectedBasketRow) === null || _e === void 0 ? void 0 : _e.getPromoCodeStatus()) === 'valid' : undefined,
|
|
340
|
+
} }));
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
344
|
+
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateAdults), wrapperClasses: "u-w-100@xl- rs-inline-filter-item-adult" },
|
|
345
|
+
react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center " },
|
|
346
|
+
react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy - ((row === null || row === void 0 ? void 0 : row.getChildren()) ? row.getChildren() : 0))].map((v, value) => {
|
|
347
|
+
value += 1;
|
|
348
|
+
return {
|
|
349
|
+
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Adult, t),
|
|
350
|
+
value: value.toString(),
|
|
351
|
+
};
|
|
352
|
+
}), value: (_f = row === null || row === void 0 ? void 0 : row.getAdults()) === null || _f === void 0 ? void 0 : _f.toString(), onChange: updateNumberOfAdultsOnChange, keyName: "value", labelName: "text" }))),
|
|
353
|
+
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateChildren), wrapperClasses: "u-w-100@xl- rs-inline-filter-item-children" },
|
|
354
|
+
react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center" },
|
|
355
|
+
react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy + 1 - ((row === null || row === void 0 ? void 0 : row.getAdults()) ? row.getAdults() : 0))].map((v, value) => {
|
|
356
|
+
return {
|
|
357
|
+
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Child, t),
|
|
358
|
+
value: value.toString(),
|
|
359
|
+
};
|
|
360
|
+
}), value: (_g = row === null || row === void 0 ? void 0 : row.getChildren()) === null || _g === void 0 ? void 0 : _g.toString(), onChange: updateNumberOfChildrenOnChange, keyName: "value", labelName: "text" })))));
|
|
361
|
+
}
|
|
362
|
+
};
|
|
276
363
|
return (0, react_1.useMemo)(() => {
|
|
277
|
-
var _a, _b, _c
|
|
364
|
+
var _a, _b, _c;
|
|
278
365
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
279
|
-
react_1.default.createElement("div", { className: `room-builder-progress ${isCompact} rs-inline-container
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
value: value.toString(),
|
|
297
|
-
};
|
|
298
|
-
}), value: (_a = row === null || row === void 0 ? void 0 : row.getAdults()) === null || _a === void 0 ? void 0 : _a.toString(), onChange: updateNumberOfAdultsOnChange, keyName: "value", labelName: "text" }))),
|
|
299
|
-
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateChildren), wrapperClasses: "u-w-100@xl- rs-inline-filter-item-children" },
|
|
300
|
-
react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center" },
|
|
301
|
-
react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy + 1 - ((row === null || row === void 0 ? void 0 : row.getAdults()) ? row.getAdults() : 0))].map((v, value) => {
|
|
302
|
-
return {
|
|
303
|
-
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Child, t),
|
|
304
|
-
value: value.toString(),
|
|
305
|
-
};
|
|
306
|
-
}), value: (_b = row === null || row === void 0 ? void 0 : row.getChildren()) === null || _b === void 0 ? void 0 : _b.toString(), onChange: updateNumberOfChildrenOnChange, keyName: "value", labelName: "text" }))),
|
|
307
|
-
react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: "u-w-100@xl- rs-inline-filter-item-promo" },
|
|
366
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(`room-builder-progress ${isCompact} rs-inline-container`, {
|
|
367
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-container']]: isCardLayout,
|
|
368
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-container--card-layout']]: isCardLayout,
|
|
369
|
+
}) },
|
|
370
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('rs-inline-filter-container', {
|
|
371
|
+
'u-flex w-100 flex-wrap room-builder-progress--item --current': !isCardLayout,
|
|
372
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-container']]: isCardLayout,
|
|
373
|
+
}), ref: ref },
|
|
374
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('rs-inline-filter-inner', {
|
|
375
|
+
'u-flex u-flex-align-center flex-wrap flex-row u-w-100@xl-': !isCardLayout,
|
|
376
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-inner']]: isCardLayout,
|
|
377
|
+
}) },
|
|
378
|
+
react_1.default.createElement(DatePickerSelector, null),
|
|
379
|
+
react_1.default.createElement(GuestSelector, null),
|
|
380
|
+
react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: (0, classnames_1.default)('u-w-100@xl- rs-inline-filter-item-promo', {
|
|
381
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-item-promo']]: isCardLayout,
|
|
382
|
+
}) },
|
|
308
383
|
react_1.default.createElement("div", { className: "room-builder-progress--value u-cursor-pointer", ref: thisElement, onClick: openPromoModalOnClick },
|
|
309
384
|
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl-" },
|
|
310
385
|
react_1.default.createElement(Text_1.default, { className: "u-pad-right--light", type: Text_1.TextType.Body, color: (row === null || row === void 0 ? void 0 : row.getPromoCode()) ? row === null || row === void 0 ? void 0 : row.getPromoCodeColour() : Color_1.Color.Navy }, (row === null || row === void 0 ? void 0 : row.getPromoCode()) ? row === null || row === void 0 ? void 0 : row.getPromoCode() : 'Promo Code'),
|
|
@@ -312,17 +387,24 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
312
387
|
react_1.default.createElement(Overlay_1.Overlay, { open: isPromoModalOpen, container: RoomstayThemeEngine_1.default.EngineContainer, followElement: thisElement.current, onClose: setPromoCodeOnClose },
|
|
313
388
|
react_1.default.createElement("div", { className: "u-pad--heavy" },
|
|
314
389
|
react_1.default.createElement("div", null,
|
|
315
|
-
react_1.default.createElement(PromoCodeInput_1.default, { value: (
|
|
316
|
-
? ((
|
|
390
|
+
react_1.default.createElement(PromoCodeInput_1.default, { value: (_a = basketContext.selectedBasketRow) === null || _a === void 0 ? void 0 : _a.getPromoCode(), onChange: changePromoCode, valid: ((_b = basketContext.selectedBasketRow) === null || _b === void 0 ? void 0 : _b.getPromoCodeStatus()) !== 'new'
|
|
391
|
+
? ((_c = basketContext.selectedBasketRow) === null || _c === void 0 ? void 0 : _c.getPromoCodeStatus()) === 'valid'
|
|
317
392
|
: undefined })),
|
|
318
393
|
react_1.default.createElement("div", { className: "u-flex justify-content-end align-items-center u-marg-top" },
|
|
319
394
|
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", onClick: cancelPromoPopupOnClick }, t(Translation_1.Translation.Misc.Cancel)))))),
|
|
320
|
-
react_1.default.createElement("div", { className: `u-flex flex-xl-nowrap flex-row
|
|
395
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(`u-flex flex-xl-nowrap flex-row rs-inline-filter-button`, {
|
|
396
|
+
'w-100': isCompact,
|
|
397
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-button']]: isCardLayout,
|
|
398
|
+
}) },
|
|
321
399
|
react_1.default.createElement(BEButton_1.default, { filled: true, primary: true, isLoading: isLoading, wide: isCompact !== '', onClick: findRoomsOnClick }, t(Translation_1.Translation.Misc.CheckRates)))),
|
|
322
|
-
react_1.default.createElement("div", { className:
|
|
400
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('u-border-rounded rs-inline-content', {
|
|
401
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-content']]: isCardLayout,
|
|
402
|
+
}) }, !isLoading ? (react_1.default.createElement(AutoAutoHeight_1.default, { open: !isLoading },
|
|
323
403
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
324
404
|
react_1.default.createElement(BookNowPayLaterInfoBlock_1.BookNowPayLaterInfoBlock, null),
|
|
325
|
-
rooms.length > 0 ? (react_1.default.createElement(RoomRates_1.default, { classNames:
|
|
405
|
+
rooms.length > 0 ? (react_1.default.createElement(RoomRates_1.default, { classNames: (0, classnames_1.default)('rs-inline-content-list', {
|
|
406
|
+
[InlineRoomMiniEngine_module_scss_1.default['rs-inline-content-list']]: isCardLayout,
|
|
407
|
+
}), featuredRates: featuredRates, rates: standardRates, roomCode: rooms[0].code, getButtonLabel: getButtonLabelHandler, onAddToBasketOverride: onAddToBasketOverrideHandler, isCardLayout: isCardLayout, policy: policy, priceDescription: priceDescription })) : (react_1.default.createElement(RatesNotFoundBlock_1.default, null))))) : (react_1.default.createElement(LargeLoader_1.default, null))))));
|
|
326
408
|
}, [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel]);
|
|
327
409
|
}
|
|
328
410
|
exports.default = InlineRoomMiniEngineElement;
|
|
@@ -339,4 +421,83 @@ const renderInlineRoomMiniEngineElement = (container, engine) => {
|
|
|
339
421
|
react_1.default.createElement(InlineRoomMiniEngineElement, { engine: engine }))))))), container);
|
|
340
422
|
};
|
|
341
423
|
exports.renderInlineRoomMiniEngineElement = renderInlineRoomMiniEngineElement;
|
|
424
|
+
const GuestSelectorCustom = ({ maxAdults, maxChildren, maxInfants = 10, defaultValue, onChange, disableChild, showInfants, disableRoom, applyButton, promoCodeConfig, }) => {
|
|
425
|
+
var _a, _b, _c, _d;
|
|
426
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
427
|
+
const ref = react_1.default.useRef(null);
|
|
428
|
+
const targetRef = (0, react_1.useRef)(null);
|
|
429
|
+
const [adults, setAdults] = (0, react_1.useState)((_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.adults) !== null && _a !== void 0 ? _a : 1);
|
|
430
|
+
const [children, setChildren] = (0, react_1.useState)((_b = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.children) !== null && _b !== void 0 ? _b : 0);
|
|
431
|
+
const [infants, setInfants] = (0, react_1.useState)((_c = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.infants) !== null && _c !== void 0 ? _c : 0);
|
|
432
|
+
const [room, setRoom] = (0, react_1.useState)((_d = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.room) !== null && _d !== void 0 ? _d : 1);
|
|
433
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
434
|
+
const onChangeAdults = (newValue) => {
|
|
435
|
+
setAdults(newValue);
|
|
436
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({ adults: newValue, children: children, infants: infants, room: room });
|
|
437
|
+
};
|
|
438
|
+
const onChangeChildren = (newValue) => {
|
|
439
|
+
setChildren(newValue);
|
|
440
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({ adults: adults, children: newValue, infants: infants, room: room });
|
|
441
|
+
};
|
|
442
|
+
const onChangeInfants = (newValue) => {
|
|
443
|
+
setInfants(newValue);
|
|
444
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({ adults: adults, children: children, infants: newValue, room: room });
|
|
445
|
+
};
|
|
446
|
+
const onChangeRoom = (newValue) => {
|
|
447
|
+
setRoom(newValue);
|
|
448
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({ adults: adults, children: children, infants: infants, room: newValue });
|
|
449
|
+
};
|
|
450
|
+
const inner = () => {
|
|
451
|
+
return (react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['popper--box'] },
|
|
452
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['popper--content'], ref: ref },
|
|
453
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['row-wrapper'] },
|
|
454
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.row },
|
|
455
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Small }, StringHelper_1.default.plural(adults, 'Adult', t)),
|
|
456
|
+
react_1.default.createElement(NumberIncrement_1.default, { number: adults, min: 1, max: maxAdults, onChange: (value) => onChangeAdults(value), textSize: Text_1.TextType.Small }))),
|
|
457
|
+
disableChild ? null : (react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['row-wrapper'] },
|
|
458
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.divider }),
|
|
459
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.row },
|
|
460
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Small }, StringHelper_1.default.plural(children, 'Child', t)),
|
|
461
|
+
react_1.default.createElement(NumberIncrement_1.default, { number: children, min: 0, max: maxChildren, onChange: (value) => onChangeChildren(value), textSize: Text_1.TextType.Small })))),
|
|
462
|
+
showInfants ? (react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['row-wrapper'] },
|
|
463
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.divider }),
|
|
464
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.row },
|
|
465
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Small }, StringHelper_1.default.plural(infants, 'Infant', t)),
|
|
466
|
+
react_1.default.createElement(NumberIncrement_1.default, { number: infants, min: 0, onChange: (value) => onChangeInfants(value), textSize: Text_1.TextType.Small })),
|
|
467
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.divider }))) : null,
|
|
468
|
+
disableRoom ? null : (react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['row-wrapper'] },
|
|
469
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.divider }),
|
|
470
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.row },
|
|
471
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Small }, StringHelper_1.default.plural(room, 'Room', t)),
|
|
472
|
+
react_1.default.createElement(NumberIncrement_1.default, { number: room, min: 1, max: 10, onChange: (value) => onChangeRoom(value), textSize: Text_1.TextType.Small })))),
|
|
473
|
+
promoCodeConfig ? (react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['row-wrapper'] },
|
|
474
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default.divider }),
|
|
475
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(InlineRoomMiniEngine_module_scss_1.default.row) },
|
|
476
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Small }, t(Translation_1.Translation.Misc.Promocode)),
|
|
477
|
+
react_1.default.createElement(PromoCodeInput_1.default, { className: InlineRoomMiniEngine_module_scss_1.default.promo, value: promoCodeConfig.promoCode, onChange: promoCodeConfig.onChange, valid: promoCodeConfig.valid })))) : null)));
|
|
478
|
+
};
|
|
479
|
+
const content = () => {
|
|
480
|
+
return (react_1.default.createElement(Overlay_1.Overlay, { offset: [0, 6], usePortal: false, followElement: targetRef.current, placement: "top-start", strategy: "absolute", open: open, onClose: () => setOpen === null || setOpen === void 0 ? void 0 : setOpen(false), className: InlineRoomMiniEngine_module_scss_1.default.popper, hideStyles: true }, inner()));
|
|
481
|
+
};
|
|
482
|
+
const getValueAsText = () => {
|
|
483
|
+
const parts = [StringHelper_1.default.pluralWithCount(adults, 'Adult', t)];
|
|
484
|
+
if (children > 0) {
|
|
485
|
+
parts.push(StringHelper_1.default.pluralWithCount(children, 'Child', t));
|
|
486
|
+
}
|
|
487
|
+
if (infants > 0) {
|
|
488
|
+
parts.push(StringHelper_1.default.pluralWithCount(infants, 'Infant', t));
|
|
489
|
+
}
|
|
490
|
+
return parts.join(' - ');
|
|
491
|
+
};
|
|
492
|
+
return (react_1.default.createElement("div", { ref: targetRef, className: (0, classnames_1.default)('u-cursor-pointer', 'rs-inline-filter-item-guest', InlineRoomMiniEngine_module_scss_1.default['rs-inline-filter-item-guest']) },
|
|
493
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(InlineRoomMiniEngine_module_scss_1.default['card']), onClick: () => setOpen === null || setOpen === void 0 ? void 0 : setOpen(!open) },
|
|
494
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['image'] },
|
|
495
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.People })),
|
|
496
|
+
react_1.default.createElement("div", { className: InlineRoomMiniEngine_module_scss_1.default['content'] },
|
|
497
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['title'], type: Text_1.TextType.Body }, t(Translation_1.Translation.Misc.Guests)),
|
|
498
|
+
react_1.default.createElement(Text_1.default, { className: InlineRoomMiniEngine_module_scss_1.default['sub-title'], type: Text_1.TextType.Body, color: Color_1.Color.Navy }, getValueAsText())),
|
|
499
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Dropdown })),
|
|
500
|
+
content()));
|
|
501
|
+
};
|
|
502
|
+
exports.GuestSelectorCustom = GuestSelectorCustom;
|
|
342
503
|
//# sourceMappingURL=InlineRoomMiniEngineElement.js.map
|