@roomstay/frontend 2.6.4 → 2.6.6
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/166.bundle.js +1 -0
- package/dist/370.bundle.js +1 -1
- package/dist/457.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/736.bundle.js +1 -1
- package/dist/850.bundle.js +1 -0
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/Event/EventCarouselContainer.d.ts +2 -2
- package/dist/src/components/Event/EventCarouselContainer.js +9 -3
- package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.js +15 -1
- package/dist/src/components/generic/Event/EventCard.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +3 -3
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
- package/dist/src/components/generic/buttons/NextStepButton.js +3 -1
- package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
- package/dist/src/components/navigation/StepSelector.js +7 -1
- package/dist/src/components/navigation/StepSelector.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +1 -1
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +1 -1
- package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -2
- package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +10 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +3 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +3 -2
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +3 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +3 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummary.js +27 -21
- package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +42 -10
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummary.js +31 -20
- package/dist/src/components/summary/BESummary.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +0 -4
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +23 -2
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +5 -0
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.d.ts +2 -0
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +14 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
- package/dist/src/hooks/useNextStepAction.d.ts +15 -0
- package/dist/src/hooks/useNextStepAction.js +146 -0
- package/dist/src/hooks/useNextStepAction.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +11 -1
- package/dist/src/models/BasketRow.js +31 -7
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +10 -0
- package/dist/src/translations/Translation.js +10 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +10 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/EventsHelper.d.ts +6 -1
- package/dist/src/util/EventsHelper.js +13 -5
- package/dist/src/util/EventsHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/387.bundle.js +0 -1
- package/dist/537.bundle.js +0 -1
package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel, useWindowScroll } from '@frontend/hooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport Text, { TextType } from '@/components/generic/Text';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport PaymentCard from '@/models/PaymentCard';\n\nexport const StepConfirmationVGSPaymentInput = forwardRef(function ForwardedStepConfirmationVGSPaymentInput(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = t(Translation.Step.Confirmation.Inputs.CardNumber);\n break;\n case 'expiration-date':\n name = t(Translation.Step.Confirmation.Inputs.CardExpiry);\n break;\n case 'security-code':\n name = t(Translation.Step.Confirmation.Inputs.SecurityCode);\n break;\n default:\n name = t(Translation.Step.Confirmation.Inputs.NameOnCard);\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = JSON.parse(response.data);\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: [t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],\n },\n });\n reject(t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n return (\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n );\n});\n"]}
|
|
1
|
+
{"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel, useWindowScroll } from '@frontend/hooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport Text, { TextType } from '@/components/generic/Text';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport PaymentCard from '@/models/PaymentCard';\n\nexport const StepConfirmationVGSPaymentInput = forwardRef(function ForwardedStepConfirmationVGSPaymentInput(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = t(Translation.Step.Confirmation.Inputs.CardNumber);\n break;\n case 'expiration-date':\n name = t(Translation.Step.Confirmation.Inputs.CardExpiry);\n break;\n case 'security-code':\n name = t(Translation.Step.Confirmation.Inputs.SecurityCode);\n break;\n default:\n name = t(Translation.Step.Confirmation.Inputs.NameOnCard);\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = response;\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: [t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],\n },\n });\n reject(t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n return (\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n );\n});\n"]}
|
|
@@ -78,14 +78,14 @@ function StepDatePricePerRoom(props) {
|
|
|
78
78
|
const isMobile = props.isMobile;
|
|
79
79
|
return (0, react_1.useMemo)(() => {
|
|
80
80
|
return (react_1.default.createElement("div", { className: "u-flex flex-column justify-content-end align-items-end h-100" },
|
|
81
|
-
react_1.default.createElement(Text_1.default, { type: isMobile ? Text_1.TextType.Label : Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right, className: "u-nowrap" },
|
|
81
|
+
!isMobile ? (react_1.default.createElement(Text_1.default, { type: isMobile ? Text_1.TextType.Label : Text_1.TextType.Small, align: TextAlignment_1.TextAlign.Right, className: "u-nowrap" },
|
|
82
82
|
react_1.default.createElement("span", { style: { color: Color_1.Color.DarkGrey } },
|
|
83
83
|
t(Translation_1.Translation.Misc.From),
|
|
84
84
|
" ",
|
|
85
85
|
react_1.default.createElement("span", { style: { color: Color_1.Color.Grey } },
|
|
86
86
|
"(",
|
|
87
87
|
t(Translation_1.Translation.Misc.PerRoom),
|
|
88
|
-
")"))),
|
|
88
|
+
")")))) : null,
|
|
89
89
|
isMobile ? (react_1.default.createElement("span", { className: "u-ellip-w-100-deep" },
|
|
90
90
|
react_1.default.createElement(Text_1.default, { bold: true }, isLoading ? (react_1.default.createElement("div", { className: "u-inline-flex a-spin" },
|
|
91
91
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Spinner }))) : (react_1.default.createElement(Currency_1.default, { removeCurrencyAfterChar: 6 }, pricePerRoom))))) : (react_1.default.createElement(Headline_1.default, { bold: true, size: "large", align: TextAlignment_1.TextAlign.Right }, isLoading ? (react_1.default.createElement("div", { className: "u-inline-flex a-spin" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepDatePricePerRoom.js","sourceRoot":"/","sources":["src/components/steps/date/StepDatePricePerRoom.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StepDatePricePerRoom.js","sourceRoot":"/","sources":["src/components/steps/date/StepDatePricePerRoom.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } 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 API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\ninterface StepDatePricePerRoomProps {\n isMobile: boolean;\n}\n\nexport default function StepDatePricePerRoom(props: StepDatePricePerRoomProps) {\n const { t } = useTranslation();\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n\n const [pricePerRoom, setPricePerRoom] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const { memberNumber } = useExternalMember();\n\n useEffect(() => {\n let cancelled = false;\n\n const selectedBasketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];\n\n if (basketContext.endDate) {\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n setIsLoading(true);\n setTimeout(() => {\n API.Availability.getCheapestPricePerDay(\n basketContext.startDate,\n basketContext.endDate.subtract(1, 'day'),\n adults,\n children,\n infants,\n promoCode,\n hotel?.hotelID as string,\n memberNumber\n ).then((dayPrices) => {\n const prices = Object.values(dayPrices);\n\n if (!cancelled) {\n let cheapestFromAPI = prices.length > 0 ? prices.reduce((prev, curr) => (!curr ? prev : Math.min(prev, curr))) : 0;\n\n if (isNaN(cheapestFromAPI)) {\n cheapestFromAPI = 0;\n }\n\n setPricePerRoom(cheapestFromAPI);\n setIsLoading(false);\n }\n });\n }, 250);\n }\n\n return () => {\n setIsLoading(false);\n\n cancelled = true;\n };\n }, [basketContext.endDate, basketContext.selectedBasketRow]);\n\n const isMobile = props.isMobile;\n\n return useMemo(() => {\n return (\n <div className=\"u-flex flex-column justify-content-end align-items-end h-100\">\n {!isMobile ? (\n <Text type={isMobile ? TextType.Label : TextType.Small} align={TextAlign.Right} className=\"u-nowrap\">\n <span style={{ color: Color.DarkGrey }}>\n {t(Translation.Misc.From)} <span style={{ color: Color.Grey }}>({t(Translation.Misc.PerRoom)})</span>\n </span>\n </Text>\n ) : null}\n {isMobile ? (\n <span className=\"u-ellip-w-100-deep\">\n <Text bold>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon icon={IconType.Spinner} />\n </div>\n ) : (\n <Currency removeCurrencyAfterChar={6}>{pricePerRoom}</Currency>\n )}\n </Text>\n </span>\n ) : (\n <Headline bold size=\"large\" align={TextAlign.Right}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon icon={IconType.Spinner} />\n </div>\n ) : (\n <Currency>{pricePerRoom}</Currency>\n )}\n </Headline>\n )}\n </div>\n );\n }, [isLoading, pricePerRoom]);\n}\n"]}
|
|
@@ -27,19 +27,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.TabGroupedRoomList = void 0;
|
|
30
|
+
const contexts_1 = require("../../../../contexts/index.js");
|
|
30
31
|
const react_1 = __importStar(require("react"));
|
|
31
32
|
const Headline_1 = __importDefault(require("../../../generic/Headline"));
|
|
32
33
|
const Select_1 = require("../../../generic/Select/Select");
|
|
34
|
+
const RoomSortProvider_1 = __importDefault(require("../../../../providers/RoomSortProvider"));
|
|
33
35
|
const RoomDetails_1 = __importDefault(require("../roomDetails/RoomDetails"));
|
|
34
36
|
const TabGroupedRoomList_module_scss_1 = __importDefault(require("./TabGroupedRoomList.module.scss"));
|
|
35
37
|
const TabGroupedRoomList = (props) => {
|
|
38
|
+
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
39
|
+
const sortBy = beContext.currentRoomSort;
|
|
36
40
|
const { rooms, group } = props;
|
|
37
41
|
const [appliedFilters, setAppliedFilters] = (0, react_1.useState)({});
|
|
38
42
|
const filterKeys = (0, react_1.useMemo)(() => {
|
|
39
43
|
return Object.keys(group.filters || {});
|
|
40
44
|
}, [group.filters]);
|
|
41
45
|
const roomList = (0, react_1.useMemo)(() => {
|
|
42
|
-
|
|
46
|
+
const sortedRooms = [...rooms];
|
|
47
|
+
if (sortedRooms.length !== 0) {
|
|
48
|
+
sortedRooms.sort(RoomSortProvider_1.default.getSortByFunction(sortBy));
|
|
49
|
+
}
|
|
50
|
+
return sortedRooms
|
|
43
51
|
.filter((room) => {
|
|
44
52
|
var _a;
|
|
45
53
|
for (const filter of Object.keys(appliedFilters)) {
|
|
@@ -52,7 +60,7 @@ const TabGroupedRoomList = (props) => {
|
|
|
52
60
|
.map((room, index) => {
|
|
53
61
|
return react_1.default.createElement(RoomDetails_1.default, { key: room.code, room: room, disableMarginBottom: index === rooms.length - 1 });
|
|
54
62
|
});
|
|
55
|
-
}, [rooms, appliedFilters]);
|
|
63
|
+
}, [rooms, appliedFilters, sortBy]);
|
|
56
64
|
return (react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.groupedRoomList },
|
|
57
65
|
!!group.groupName && (react_1.default.createElement("div", { className: TabGroupedRoomList_module_scss_1.default.groupedRoomListHeader },
|
|
58
66
|
react_1.default.createElement(Headline_1.default, { bold: true }, group.groupName))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabGroupedRoomList.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"TabGroupedRoomList.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext } from '@frontend/contexts';\nimport React, { useContext, useMemo, useState } from 'react';\n\nimport Headline from '@/components/generic/Headline';\nimport { Select } from '@/components/generic/Select/Select';\nimport { HotelRoomGroupsDTO } from '@/models/Api/HotelDTO';\nimport { Room } from '@/models/Room/Room';\nimport RoomSortProvider from '@/providers/RoomSortProvider';\n\nimport RoomDetails from '../roomDetails/RoomDetails';\nimport styles from './TabGroupedRoomList.module.scss';\n\ntype TabGroupedRoomListProps = {\n rooms: Room[];\n group: HotelRoomGroupsDTO[number];\n};\n\nexport const TabGroupedRoomList = (props: TabGroupedRoomListProps) => {\n const beContext = useContext(BookingEngineContext);\n const sortBy = beContext.currentRoomSort;\n const { rooms, group } = props;\n const [appliedFilters, setAppliedFilters] = useState<{ [id: string]: any }>({});\n\n const filterKeys = useMemo(() => {\n return Object.keys(group.filters || {});\n }, [group.filters]);\n\n const roomList = useMemo(() => {\n const sortedRooms = [...rooms];\n if (sortedRooms.length !== 0) {\n sortedRooms.sort(RoomSortProvider.getSortByFunction(sortBy));\n }\n return sortedRooms\n .filter((room) => {\n for (const filter of Object.keys(appliedFilters)) {\n if (room.auxiliaryValues?.[filter] && appliedFilters[filter] && !room.auxiliaryValues[filter].includes(`${appliedFilters[filter]}`)) {\n return false;\n }\n }\n\n return room;\n })\n .map((room, index) => {\n return <RoomDetails key={room.code} room={room} disableMarginBottom={index === rooms.length - 1} />;\n });\n }, [rooms, appliedFilters, sortBy]);\n\n return (\n <div className={styles.groupedRoomList}>\n {!!group.groupName && (\n <div className={styles.groupedRoomListHeader}>\n <Headline bold>{group.groupName}</Headline>\n </div>\n )}\n\n {!!filterKeys?.length && rooms.length > 1 && (\n <div className={styles.filterContainer}>\n {filterKeys.map((filterKey) => {\n const filter = group.filters?.[filterKey];\n\n if (filter.type === 'select') {\n const options = [{ label: 'All', value: null }, ...filter.options];\n const currentValue = appliedFilters?.[filterKey] ?? options[0]?.value;\n\n const localOnFilterChange = (value: string) => {\n setAppliedFilters((prev) => ({ ...prev, [filterKey]: value }));\n };\n\n return (\n <div key={filterKey} className={styles.filterItem}>\n <div className={styles['filterItem-label']}>{filter.name}:</div>\n <Select keyName=\"value\" labelName=\"label\" options={options} value={currentValue} onChange={localOnFilterChange}></Select>\n </div>\n );\n }\n })}\n </div>\n )}\n {roomList}\n </div>\n );\n};\n"]}
|
|
@@ -43,9 +43,10 @@ const DataLayer_1 = __importDefault(require("../../../../util/DataLayer"));
|
|
|
43
43
|
const TabGroupedRooms = () => {
|
|
44
44
|
var _a;
|
|
45
45
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
46
|
-
const { rooms, isLoading, loadingAttempted,
|
|
46
|
+
const { rooms, isLoading, loadingAttempted, apiHasError } = (0, RoomRateAvailabilityListFromApi_1.useRoomRateAvailabilityListFromApi)();
|
|
47
47
|
const params = (0, Query_1.useHashQuery)();
|
|
48
48
|
const groupedRooms = (0, react_1.useMemo)(() => {
|
|
49
|
+
var _a;
|
|
49
50
|
if (!hotel) {
|
|
50
51
|
return [];
|
|
51
52
|
}
|
|
@@ -60,7 +61,7 @@ const TabGroupedRooms = () => {
|
|
|
60
61
|
for (const room of rooms) {
|
|
61
62
|
let groupId = !!room.roomGroupId ? room.roomGroupId : 'list-all';
|
|
62
63
|
if (!sortingGroup[groupId]) {
|
|
63
|
-
const foundGroup = hotel.roomGroups.find((group) => group.id === groupId);
|
|
64
|
+
const foundGroup = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.roomGroups) === null || _a === void 0 ? void 0 : _a.find((group) => group.id === groupId);
|
|
64
65
|
if (foundGroup) {
|
|
65
66
|
sortingGroup[groupId] = Object.assign(Object.assign({}, foundGroup), { rooms: [] });
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabGroupedRooms.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRooms.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,+CAAuC;AAEvC,0FAAkE;AAClE,uDAAoD;AACpD,0EAAkD;AAClD,kGAA0E;AAC1E,4GAAoF;AACpF,iFAA8E;AAC9E,mGAAgG;AAChG,yCAA6C;AAC7C,6FAA6F;AAG7F,oGAA4E;AAC5E,iEAAyC;AAElC,MAAM,eAAe,GAAG,GAAG,EAAE;;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"TabGroupedRooms.js","sourceRoot":"/","sources":["src/components/steps/room/TabGroupedRooms/TabGroupedRooms.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React, { useMemo } from 'react';\n\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { Tab } from '@/components/generic/Tabs/Tab';\nimport Tabs from '@/components/generic/Tabs/Tabs';\nimport NoRoomsFoundBlock from '@/components/steps/room/NoRoomsFoundBlock';\nimport RoomListCrossSellBlock from '@/components/steps/room/RoomListCrossSellBlock';\nimport { StepRoomErrorForm } from '@/components/steps/room/StepRoomErrorForm';\nimport { TabGroupedRoomList } from '@/components/steps/room/TabGroupedRooms/TabGroupedRoomList';\nimport { useHashQuery } from '@/hooks/Query';\nimport { useRoomRateAvailabilityListFromApi } from '@/hooks/RoomRateAvailabilityListFromApi';\nimport { HotelRoomGroupsDTO } from '@/models/Api/HotelDTO';\nimport { Room } from '@/models/Room/Room';\nimport StepGroupedRoom from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nimport DataLayer from '@/util/DataLayer';\n\nexport const TabGroupedRooms = () => {\n const { hotel } = useCurrentHotel();\n\n const { rooms, isLoading, loadingAttempted, apiHasError } = useRoomRateAvailabilityListFromApi();\n const params = useHashQuery();\n\n const groupedRooms: (HotelRoomGroupsDTO[number] & { rooms: Room[] })[] = useMemo(() => {\n if (!hotel) {\n return [];\n }\n\n const sortingGroup: { [id: string]: HotelRoomGroupsDTO[number] & { rooms: Room[] } } = {\n 'list-all': {\n id: 'list-all',\n groupName: 'All Accommodations',\n filters: {},\n rooms: [],\n },\n };\n\n for (const room of rooms) {\n let groupId = !!room.roomGroupId ? room.roomGroupId : 'list-all';\n\n if (!sortingGroup[groupId]) {\n const foundGroup = hotel?.roomGroups?.find((group) => group.id === groupId);\n\n if (foundGroup) {\n sortingGroup[groupId] = {\n ...foundGroup,\n rooms: [],\n };\n } else {\n // Can't find the specific room, defaulting to \"unsorted\" rooms\n groupId = 'list-all';\n }\n }\n\n // Actual bit that puts the right room in the right location\n sortingGroup[groupId].rooms.push(room);\n }\n\n const valuedSortedGroups = Object.values(sortingGroup);\n\n if (valuedSortedGroups.length === 1 && valuedSortedGroups[0].rooms.length === 0) {\n valuedSortedGroups.splice(0, 1);\n }\n\n DataLayer.instance.sendRoomImpressions();\n\n return valuedSortedGroups;\n }, [rooms, hotel?.roomGroups]);\n\n const defaultTab = useMemo(() => {\n return params.get('defaultTab') ?? undefined;\n }, []);\n\n if (isLoading || !loadingAttempted) {\n return <LargeLoader />;\n }\n\n if (groupedRooms.length > 0 && groupedRooms.length <= 2) {\n let groupObject = { groupName: '', filters: {}, id: '' };\n let rooms = [];\n if (groupedRooms.length === 2) {\n groupObject = groupedRooms[1];\n rooms = groupedRooms[1].rooms;\n } else {\n rooms = groupedRooms[0].rooms;\n }\n\n return <TabGroupedRoomList group={groupObject} rooms={rooms} />;\n } else if (groupedRooms.length > 2) {\n const onlyGroups = [...groupedRooms];\n // Update onlyGroups to be the same as groupedRooms, but without the first element\n onlyGroups.splice(0, 1);\n\n return (\n <div style={{ maxWidth: '100%', overflow: 'hidden' }}>\n <Tabs fullBleedOnLineBreak={false} activeKey={defaultTab}>\n <Tab title=\"All Accommodation\" navPath={StepGroupedRoom.getStepUrl() + 'list-all'} key=\"list-all\" preventScrollTop>\n {/* We're not starting at 1 here as we want to display these rooms, even if they're not ordered */}\n {groupedRooms\n ?.filter((item) => item.rooms.length)\n .map((group) => {\n return <TabGroupedRoomList group={group} rooms={group.rooms} key={group.id} />;\n })}\n </Tab>\n {/* Reason we've got to splice here is 0 index will always be unsorted rooms */}\n {onlyGroups.map((group) => (\n <Tab title={group.groupName} navPath={StepGroupedRoom.getStepUrl() + group.groupName} key={group.id} preventScrollTop>\n <TabGroupedRoomList group={group} rooms={group.rooms} />\n </Tab>\n ))}\n </Tabs>\n </div>\n );\n }\n\n // No rooms found, so let's display the crossell block, or no rooms found\n return (\n <>\n {apiHasError ? <StepRoomErrorForm /> : <NoRoomsFoundBlock />}\n {hotel?.crossSellHotelIds?.map((hotelId) => (\n <RoomListCrossSellBlock key={hotelId} hotelId={hotelId} />\n ))}\n </>\n );\n};\n"]}
|
|
@@ -27,12 +27,13 @@ exports.TripteaseLodgingSearchSchema = void 0;
|
|
|
27
27
|
const contexts_1 = require("../../../contexts/index.js");
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
29
|
const TripteaseLodgingSearchSchema = () => {
|
|
30
|
+
var _a, _b;
|
|
30
31
|
const { selectedBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
31
32
|
return (react_1.default.createElement("script", { type: "application/ld+json" }, JSON.stringify({
|
|
32
33
|
'@context': 'https://structured-data.triptease.io',
|
|
33
34
|
'@type': 'LodgingSearch',
|
|
34
|
-
checkinTime: selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getStartDate().format('YYYY-M-D'),
|
|
35
|
-
checkoutTime: selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getEndDate().format('YYYY-M-D'),
|
|
35
|
+
checkinTime: (_a = selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getStartDate()) === null || _a === void 0 ? void 0 : _a.format('YYYY-M-D'),
|
|
36
|
+
checkoutTime: (_b = selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getEndDate()) === null || _b === void 0 ? void 0 : _b.format('YYYY-M-D'),
|
|
36
37
|
numAdults: selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(),
|
|
37
38
|
numChildren: selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(),
|
|
38
39
|
numInfants: selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getInfants(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TripteaseLodgingSearchSchema.js","sourceRoot":"/","sources":["src/components/steps/room/TripteaseLodgingSearchSchema.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAA0C;AAEnC,MAAM,4BAA4B,GAAG,GAAG,EAAE
|
|
1
|
+
{"version":3,"file":"TripteaseLodgingSearchSchema.js","sourceRoot":"/","sources":["src/components/steps/room/TripteaseLodgingSearchSchema.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAA0C;AAEnC,MAAM,4BAA4B,GAAG,GAAG,EAAE;;IAC7C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAExD,OAAO,CACH,0CAAQ,IAAI,EAAC,qBAAqB,IAC7B,IAAI,CAAC,SAAS,CAAC;QACZ,UAAU,EAAE,sCAAsC;QAClD,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,EAAE,0CAAE,MAAM,CAAC,UAAU,CAAC;QAClE,YAAY,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,UAAU,EAAE,0CAAE,MAAM,CAAC,UAAU,CAAC;QACjE,SAAS,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,SAAS,EAAE;QACzC,WAAW,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW,EAAE;QAC7C,UAAU,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,UAAU,EAAE;QAC3C,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,EAAE;KAC/C,CAAC,CACG,CACZ,CAAC;AACN,CAAC,CAAC;AAlBW,QAAA,4BAA4B,gCAkBvC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext } from 'react';\n\nexport const TripteaseLodgingSearchSchema = () => {\n const { selectedBasketRow } = useContext(BasketContext);\n\n return (\n <script type=\"application/ld+json\">\n {JSON.stringify({\n '@context': 'https://structured-data.triptease.io',\n '@type': 'LodgingSearch',\n checkinTime: selectedBasketRow?.getStartDate()?.format('YYYY-M-D'),\n checkoutTime: selectedBasketRow?.getEndDate()?.format('YYYY-M-D'),\n numAdults: selectedBasketRow?.getAdults(),\n numChildren: selectedBasketRow?.getChildren(),\n numInfants: selectedBasketRow?.getInfants(),\n numRooms: '1',\n offerCode: selectedBasketRow?.getPromoCode(),\n })}\n </script>\n );\n};\n"]}
|
|
@@ -30,6 +30,7 @@ exports.UserSearchSummary = void 0;
|
|
|
30
30
|
const contexts_1 = require("../../../../contexts/index.js");
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const react_i18next_1 = require("react-i18next");
|
|
33
|
+
const useNextStepAction_1 = require("../../../../hooks/useNextStepAction");
|
|
33
34
|
const BasketRow_1 = __importDefault(require("../../../../models/BasketRow"));
|
|
34
35
|
const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
|
|
35
36
|
const Translation_1 = require("../../../../translations/Translation");
|
|
@@ -37,6 +38,7 @@ const BEButton_1 = __importDefault(require("../../../generic/BEButton"));
|
|
|
37
38
|
const Icon_1 = require("../../../generic/Icon/Icon");
|
|
38
39
|
const TripteaseLodgingSearchSchema_1 = require("../TripteaseLodgingSearchSchema");
|
|
39
40
|
const UserSearchSummaryRow_1 = require("./UserSearchSummaryRow");
|
|
41
|
+
const ButtonWithNextStepConfirmationDialog = (0, useNextStepAction_1.withNextStepConfirmationDialog)(BEButton_1.default);
|
|
40
42
|
const UserSearchSummary = () => {
|
|
41
43
|
const { currentBasketRows, addBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
42
44
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
@@ -49,7 +51,7 @@ const UserSearchSummary = () => {
|
|
|
49
51
|
return react_1.default.createElement(UserSearchSummaryRow_1.UserSearchSummaryRow, { row: row, index: index, key: row.getID() });
|
|
50
52
|
}),
|
|
51
53
|
react_1.default.createElement("div", { className: "u-flex justify-content-end" },
|
|
52
|
-
react_1.default.createElement(
|
|
54
|
+
react_1.default.createElement(ButtonWithNextStepConfirmationDialog, { icon: Icon_1.IconType.Add, onClick: addRoomRowOnClick, stopIconAnimation: true }, t(Translation_1.Translation.Step.Room.RoomInfo.AddRoom))),
|
|
53
55
|
react_1.default.createElement(TripteaseLodgingSearchSchema_1.TripteaseLodgingSearchSchema, null)));
|
|
54
56
|
};
|
|
55
57
|
exports.UserSearchSummary = UserSearchSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSearchSummary.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAA0C;AAC1C,iDAA+C;AAE/C,mEAA2C;AAC3C,8DAA+E;AAE/E,sEAAmE;AACnE,yEAAiD;AACjD,qDAAsD;AACtD,kFAA+E;AAC/E,iEAA8D;
|
|
1
|
+
{"version":3,"file":"UserSearchSummary.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAA0C;AAC1C,iDAA+C;AAE/C,iEAA2E;AAC3E,mEAA2C;AAC3C,8DAA+E;AAE/E,sEAAmE;AACnE,yEAAiD;AACjD,qDAAsD;AACtD,kFAA+E;AAC/E,iEAA8D;AAE9D,MAAM,oCAAoC,GAAG,IAAA,kDAA8B,EAAC,kBAAQ,CAAC,CAAC;AAE/E,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEtE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClG,YAAY,CAAC,IAAI,mBAAS,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,OAAO,CACH;QACK,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAClC,OAAO,8BAAC,2CAAoB,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAI,CAAC;QAC9E,CAAC,CAAC;QAEF,uCAAK,SAAS,EAAC,4BAA4B;YACvC,8BAAC,oCAAoC,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,UAClG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACP,CACrC;QAEN,8BAAC,2DAA4B,OAAG,CACjC,CACN,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport BasketRow from '@/models/BasketRow';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport { Translation } from '../../../../translations/Translation';\nimport BEButton from '../../../generic/BEButton';\nimport { IconType } from '../../../generic/Icon/Icon';\nimport { TripteaseLodgingSearchSchema } from '../TripteaseLodgingSearchSchema';\nimport { UserSearchSummaryRow } from './UserSearchSummaryRow';\n\nconst ButtonWithNextStepConfirmationDialog = withNextStepConfirmationDialog(BEButton);\n\nexport const UserSearchSummary = () => {\n const { currentBasketRows, addBasketRow } = useContext(BasketContext);\n\n const { t } = useTranslation();\n const addRoomRowOnClick = () => {\n DataLayer.instance.sendInteraction('Add Room Row', InteractionType.BUTTON, InteractionStep.ROOMS);\n addBasketRow(new BasketRow());\n };\n\n return (\n <>\n {currentBasketRows.map((row, index) => {\n return <UserSearchSummaryRow row={row} index={index} key={row.getID()} />;\n })}\n\n <div className=\"u-flex justify-content-end\">\n <ButtonWithNextStepConfirmationDialog icon={IconType.Add} onClick={addRoomRowOnClick} stopIconAnimation>\n {t(Translation.Step.Room.RoomInfo.AddRoom)}\n </ButtonWithNextStepConfirmationDialog>\n </div>\n\n <TripteaseLodgingSearchSchema />\n </>\n );\n};\n"]}
|
|
@@ -34,8 +34,10 @@ const BEButton_1 = __importDefault(require("../../../generic/BEButton"));
|
|
|
34
34
|
const Icon_1 = require("../../../generic/Icon/Icon");
|
|
35
35
|
const RoomBuilderProgressRow_1 = __importDefault(require("./RoomBuilderProgressRow"));
|
|
36
36
|
const TripteaseLodgingSearchSchema_1 = require("../TripteaseLodgingSearchSchema");
|
|
37
|
+
const useNextStepAction_1 = require("../../../../hooks/useNextStepAction");
|
|
37
38
|
const BasketRow_1 = __importDefault(require("../../../../models/BasketRow"));
|
|
38
39
|
const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
|
|
40
|
+
const ButtonWithNextStepConfirmationDialog = (0, useNextStepAction_1.withNextStepConfirmationDialog)(BEButton_1.default);
|
|
39
41
|
function RoomBuilderProgress() {
|
|
40
42
|
const { currentBasketRows, addBasketRow, selectedBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
41
43
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
@@ -50,7 +52,7 @@ function RoomBuilderProgress() {
|
|
|
50
52
|
return react_1.default.createElement(RoomBuilderProgressRow_1.default, { row: row, key: row.getID(), number: index });
|
|
51
53
|
}),
|
|
52
54
|
react_1.default.createElement("div", { className: "u-flex justify-content-end" },
|
|
53
|
-
react_1.default.createElement(
|
|
55
|
+
react_1.default.createElement(ButtonWithNextStepConfirmationDialog, { icon: Icon_1.IconType.Add, onClick: addRoomRowOnClick, stopIconAnimation: true }, t(Translation_1.Translation.Step.Room.RoomInfo.AddRoom)))),
|
|
54
56
|
react_1.default.createElement(TripteaseLodgingSearchSchema_1.TripteaseLodgingSearchSchema, null))), [currentBasketRows, t]);
|
|
55
57
|
}
|
|
56
58
|
exports.default = RoomBuilderProgress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomBuilderProgress.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,yDAA0D;AAC1D,gIAAwG;AACxG,uGAAoG;AACpG,mEAA2C;AAC3C,8DAA+E;
|
|
1
|
+
{"version":3,"file":"RoomBuilderProgress.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,yDAA0D;AAC1D,gIAAwG;AACxG,uGAAoG;AACpG,iEAA2E;AAC3E,mEAA2C;AAC3C,8DAA+E;AAC/E,MAAM,oCAAoC,GAAG,IAAA,kDAA8B,EAAC,kBAAQ,CAAC,CAAC;AAEtF,SAAwB,mBAAmB;IACvC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEzF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClG,YAAY,CAAC,IAAI,mBAAS,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,IAAA,eAAO,EACV,GAAG,EAAE,CAAC,CACF;QACI,uCAAK,SAAS,EAAC,uBAAuB;YACjC,CAAC,CAAC,iBAAiB,CAAC,MAAM;gBACvB,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,KAAa,EAAE,EAAE;oBACpD,OAAO,8BAAC,gCAAsB,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,GAAI,CAAC;gBACjF,CAAC,CAAC;YACN,uCAAK,SAAS,EAAC,4BAA4B;gBACvC,8BAAC,oCAAoC,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,UAClG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACP,CACrC,CACJ;QACN,8BAAC,2DAA4B,OAAG,CACjC,CACN,EACD,CAAC,iBAAiB,EAAE,CAAC,CAAC,CACzB,CAAC;AACN,CAAC;AA3BD,sCA2BC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } 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 RoomBuilderProgressRow from '@/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow';\nimport { TripteaseLodgingSearchSchema } from '@/components/steps/room/TripteaseLodgingSearchSchema';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport BasketRow from '@/models/BasketRow';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nconst ButtonWithNextStepConfirmationDialog = withNextStepConfirmationDialog(BEButton);\n\nexport default function RoomBuilderProgress() {\n const { currentBasketRows, addBasketRow, selectedBasketRow } = useContext(BasketContext);\n\n const { t } = useTranslation();\n const addRoomRowOnClick = () => {\n DataLayer.instance.sendInteraction('Add Room Row', InteractionType.BUTTON, InteractionStep.ROOMS);\n addBasketRow(new BasketRow());\n };\n return useMemo(\n () => (\n <>\n <div className=\"room-builder-progress\">\n {!!currentBasketRows.length &&\n currentBasketRows.map((row: BasketRow, index: number) => {\n return <RoomBuilderProgressRow row={row} key={row.getID()} number={index} />;\n })}\n <div className=\"u-flex justify-content-end\">\n <ButtonWithNextStepConfirmationDialog icon={IconType.Add} onClick={addRoomRowOnClick} stopIconAnimation>\n {t(Translation.Step.Room.RoomInfo.AddRoom)}\n </ButtonWithNextStepConfirmationDialog>\n </div>\n </div>\n <TripteaseLodgingSearchSchema />\n </>\n ),\n [currentBasketRows, t]\n );\n}\n"]}
|
|
@@ -32,9 +32,8 @@ const react_1 = __importStar(require("react"));
|
|
|
32
32
|
const react_i18next_1 = require("react-i18next");
|
|
33
33
|
const Translation_1 = require("translations/Translation");
|
|
34
34
|
const Currency_1 = __importDefault(require("../generic/Currency"));
|
|
35
|
-
const Headline_1 = __importDefault(require("../generic/Headline"));
|
|
36
35
|
const Icon_1 = __importStar(require("../generic/Icon/Icon"));
|
|
37
|
-
const Text_1 =
|
|
36
|
+
const Text_1 = __importDefault(require("../generic/Text"));
|
|
38
37
|
const StepDatePricePerRoom_1 = __importDefault(require("../steps/date/StepDatePricePerRoom"));
|
|
39
38
|
const BEMobileSummaryModal_1 = __importDefault(require("./BEMobileSummaryModal"));
|
|
40
39
|
const useSearchScopeHook_1 = require("../../hooks/useSearchScopeHook");
|
|
@@ -59,28 +58,35 @@ function BEMobileSummary() {
|
|
|
59
58
|
setModalOpen(false);
|
|
60
59
|
};
|
|
61
60
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
62
|
-
react_1.default.createElement("div", { className: "be-mobile-summary row u-border-bottom u-pad
|
|
63
|
-
react_1.default.createElement("div", { className: "
|
|
61
|
+
react_1.default.createElement("div", { className: "be-mobile-summary row u-border-bottom u-pad u-marg-bottom", onClick: openModal },
|
|
62
|
+
react_1.default.createElement("div", { className: "be-mobile-summary-select-date-header" },
|
|
64
63
|
react_1.default.createElement("div", { className: "u-flex u-flex-flex-start" },
|
|
65
|
-
react_1.default.createElement(Text_1.default, {
|
|
66
|
-
react_1.default.createElement("span", Object.assign({}, (basketContext.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.startDate ? basketContext.startDate.format('
|
|
64
|
+
react_1.default.createElement(Text_1.default, { className: "select-date-header-title" },
|
|
65
|
+
react_1.default.createElement("span", Object.assign({}, (basketContext.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Arrival))),
|
|
67
66
|
react_1.default.createElement("span", { className: "u-marg-left-right--light" },
|
|
68
67
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, size: "18px", color: Color_1.Color.DarkGrey })),
|
|
69
|
-
react_1.default.createElement(Text_1.default, {
|
|
70
|
-
react_1.default.createElement("span", Object.assign({}, (basketContext.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.endDate ? basketContext.endDate.format('
|
|
71
|
-
react_1.default.createElement(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
68
|
+
react_1.default.createElement(Text_1.default, { className: "select-date-header-title" },
|
|
69
|
+
react_1.default.createElement("span", Object.assign({}, (basketContext.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation_1.Translation.Step.Date.Departure)))),
|
|
70
|
+
react_1.default.createElement("div", { style: {
|
|
71
|
+
flex: 0,
|
|
72
|
+
display: 'flex',
|
|
73
|
+
flexDirection: 'row',
|
|
74
|
+
} },
|
|
75
|
+
react_1.default.createElement(Text_1.default, { bold: true, size: "normal", align: TextAlignment_1.TextAlign.Right, className: "select-date-header-title" }, currentStep === StepDate_1.default ? react_1.default.createElement(StepDatePricePerRoom_1.default, { isMobile: true }) : react_1.default.createElement(Currency_1.default, null, basketContext.getTotalPrice())),
|
|
76
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Dropdown, size: "18px", color: Color_1.Color.DarkGrey }))),
|
|
77
|
+
react_1.default.createElement("div", { className: "be-mobile-summary-select-date-header" },
|
|
78
|
+
react_1.default.createElement("div", { style: { flex: 1 } },
|
|
79
|
+
react_1.default.createElement(Text_1.default, { className: "select-date-header-subtitle" },
|
|
80
|
+
basketContext.getNumberOfAdults(true),
|
|
81
|
+
",\u00A0",
|
|
82
|
+
showChildren ? react_1.default.createElement(react_1.default.Fragment, null,
|
|
83
|
+
basketContext.getNumberOfChildren(true),
|
|
84
|
+
",\u00A0") : null,
|
|
85
|
+
((_a = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _a === void 0 ? void 0 : _a.supportInfants) ? react_1.default.createElement(react_1.default.Fragment, null,
|
|
86
|
+
basketContext.getNumberOfInfants(true),
|
|
87
|
+
",\u00A0") : null,
|
|
88
|
+
basketContext.getNumberOfRooms(true))),
|
|
89
|
+
react_1.default.createElement(Text_1.default, { className: "select-date-header-subtitle" }, "+ Taxes & fees"))),
|
|
84
90
|
react_1.default.createElement(BEMobileSummaryModal_1.default, { isOpen: modalOpen, onClose: closeModal })));
|
|
85
91
|
}
|
|
86
92
|
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BEMobileSummary.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgG;AAChG,2CAAkD;AAClD,+CAAoD;AACpD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"BEMobileSummary.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepDatePricePerRoom from '@/components/steps/date/StepDatePricePerRoom';\nimport BEMobileSummaryModal from '@/components/summary/BEMobileSummaryModal';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport default function BEMobileSummary() {\n const { screenSize } = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n const [modalOpen, setModalOpen] = useState(false);\n const { showChildren } = useSearchScopeHook();\n\n if (screenSize <= ScreenSize.Medium) {\n const openModal = () => {\n setModalOpen(true);\n };\n const closeModal = () => {\n setModalOpen(false);\n };\n return (\n <>\n <div className=\"be-mobile-summary row u-border-bottom u-pad u-marg-bottom\" onClick={openModal}>\n <div className=\"be-mobile-summary-select-date-header\">\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.startDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span {...(basketContext.endDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n\n <div\n style={{\n flex: 0,\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <Text bold size=\"normal\" align={TextAlign.Right} className=\"select-date-header-title\">\n {currentStep === StepDate ? <StepDatePricePerRoom isMobile /> : <Currency>{basketContext.getTotalPrice()}</Currency>}\n </Text>\n <Icon icon={IconType.Dropdown} size=\"18px\" color={Color.DarkGrey} />\n </div>\n </div>\n <div className=\"be-mobile-summary-select-date-header\">\n <div style={{ flex: 1 }}>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)}, \n {showChildren ? <>{basketContext.getNumberOfChildren(true)}, </> : null}\n {hotel?.childConfiguration?.supportInfants ? <>{basketContext.getNumberOfInfants(true)}, </> : null}\n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">+ Taxes & fees</Text>\n </div>\n </div>\n <BEMobileSummaryModal isOpen={modalOpen} onClose={closeModal} />\n </>\n );\n }\n return <></>;\n}\n"]}
|