@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.
Files changed (26) hide show
  1. package/dist/449.bundle.js +1 -1
  2. package/dist/main.bundle.js +1 -1
  3. package/dist/src/components/steps/hotel/HotelCard.js +22 -5
  4. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  5. package/dist/src/components/steps/room/ImageGallerySlider.js +5 -3
  6. package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
  7. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +3 -1
  8. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +47 -21
  9. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  10. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +3 -1
  11. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +7 -6
  12. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  13. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.d.ts +4 -0
  14. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
  15. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +28 -0
  16. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +202 -41
  17. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  18. package/dist/src/pages/findReservation/FindReservation.js +15 -4
  19. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  20. package/dist/src/pages/hotel/HotelInfo.js +1 -1
  21. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  22. package/dist/test.bundle.js +1 -1
  23. package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
  24. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  25. package/dist/vendors.bundle.js +1 -1
  26. 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":";;;;;;;;;;;;;;;AAAA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AAMlE,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 { 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}\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
+ {"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
- basketContext.updateBasketRow(row);
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 _b;
229
+ var _d;
230
+ if (isCardLayout) {
231
+ basketContext.updateBasketRow(row);
232
+ }
223
233
  setLoading(true);
224
- setRooms((_b = (yield BookingAPI_1.default.Availability.fetchAvailabilityData(row, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber))) === null || _b === void 0 ? void 0 : _b.filter((room) => room.code === props.engine.getRoomCode()));
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 = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.maxOccupancy) !== null && _a !== void 0 ? _a : 1;
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, _d, _e;
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
- react_1.default.createElement("div", { className: "u-flex w-100 flex-wrap room-builder-progress--item --current rs-inline-filter", ref: ref },
281
- react_1.default.createElement("div", { className: "u-flex u-flex-align-center flex-wrap flex-row u-w-100@xl-" },
282
- react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row === null || row === void 0 ? void 0 : row.getStartDate(), selectedDateChanged: updateDateValues, className: "u-w-100@xl- room-builder-progress--value u-marg-left--none rs-inline-filter-item-dates" },
283
- react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere), wrapperClasses: "u-w-100@xl-" },
284
- react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer" },
285
- 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()) },
286
- react_1.default.createElement("span", null, (row === null || row === void 0 ? void 0 : row.getArrivalDate()) ? row.getArrivalDate() : 'Arrival Date')),
287
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2 }),
288
- 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()) },
289
- react_1.default.createElement("span", null, (row === null || row === void 0 ? void 0 : row.getDepartureDate()) ? row.getDepartureDate() : 'Departure Date'))))),
290
- 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" },
291
- react_1.default.createElement("div", { className: "room-builder-progress--value --mw-l u-flex justify-content-center " },
292
- 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) => {
293
- value += 1;
294
- return {
295
- text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Adult, t),
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: (_c = basketContext.selectedBasketRow) === null || _c === void 0 ? void 0 : _c.getPromoCode(), onChange: changePromoCode, valid: ((_d = basketContext.selectedBasketRow) === null || _d === void 0 ? void 0 : _d.getPromoCodeStatus()) !== 'new'
316
- ? ((_e = basketContext.selectedBasketRow) === null || _e === void 0 ? void 0 : _e.getPromoCodeStatus()) === 'valid'
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 ${isCompact ? 'w-100' : ''}` },
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: "u-border-rounded rs-inline-content" }, !isLoading ? (react_1.default.createElement(AutoAutoHeight_1.default, { open: !isLoading },
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: "rs-inline-content-list", featuredRates: featuredRates, rates: standardRates, roomCode: rooms[0].code, getButtonLabel: getButtonLabelHandler, onAddToBasketOverride: onAddToBasketOverrideHandler })) : (react_1.default.createElement(RatesNotFoundBlock_1.default, null))))) : (react_1.default.createElement(LargeLoader_1.default, null))))));
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