@roomstay/frontend 2.6.1 → 2.6.2
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/201.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/572.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +3 -4
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +1 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +5 -5
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.d.ts +1 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +6 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
- package/dist/src/components/generic/NumberIncrement.d.ts +1 -0
- package/dist/src/components/generic/NumberIncrement.js +7 -7
- package/dist/src/components/generic/NumberIncrement.js.map +1 -1
- package/dist/src/components/generic/PageTitle/index.d.ts +4 -0
- package/dist/src/components/generic/PageTitle/index.js +20 -0
- package/dist/src/components/generic/PageTitle/index.js.map +1 -0
- package/dist/src/components/generic/date/DatePicker.js +2 -0
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +3 -2
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/navigation/Header.js +3 -4
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js +1 -1
- package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +1 -1
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js +1 -1
- package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +4 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +1 -0
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +11 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.js +2 -0
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +43 -40
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +2 -0
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +2 -0
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +2 -0
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +0 -2
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/routes/NaturallyProgressedStepRoute.js +11 -0
- package/dist/src/routes/NaturallyProgressedStepRoute.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { IAvailableNightStay, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { Color } from '@/util/Color';\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useExternalMember();\n const { t } = useTranslation();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n const { checkAvailableNightStay } = useCalendarNightStay({ basketContext });\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getInfants(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const isSelectable = (): boolean => {\n return !!(props.day && props.selectable && !isLoading && !isPast && (price || !hotel));\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const availableNightStay: IAvailableNightStay = checkAvailableNightStay({\n arrivalNightStay: datePickerContext?.arrivalNightStay,\n startDate: datePickerContext.startDate,\n dateToCheck: props.day,\n });\n\n const isDateInSelectedRange = (): boolean => {\n if (props.day && datePickerContext.startDate && datePickerContext.endDate) {\n if (props.day <= datePickerContext.endDate && props.day >= datePickerContext.startDate) {\n return true;\n }\n }\n return false;\n };\n const isDateBeforeArrivalDate: boolean = props.day && datePickerContext.startDate && datePickerContext.startDate.isAfter(props.day);\n const isNightStayAvailable = (): boolean => {\n if (datePickerContext.endDate && datePickerContext.startDate) {\n //selected both Arrival/Departure date\n return datePickerContext.startDate.isAfter(props.day) || datePickerContext.endDate.isBefore(props.day);\n } else if (datePickerContext.startDate) {\n //selected Arrival date only\n return availableNightStay.available && !isDateBeforeArrivalDate;\n } else {\n //no selected date\n return true;\n }\n };\n\n // This is insane, needs to be re-worked\n const hovered = isHovering && isSelectable() && !isDateInSelectedRange() && datePickerContext.hoveredMonth?.isSame?.(props.day, 'date');\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': hovered,\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n '--night-stay-unavailable': !isNightStayAvailable(),\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const getTooltipTitleSetting = () => {\n let titleTooltip = {\n BlockedDate: t(Translation.Step.Date.NightStayRequirement.BlockedDate),\n DateBeforeArrivalDate: t(Translation.Step.Date.NightStayRequirement.DateBeforeArrivalDate),\n ArrivalDate: '',\n BetweenArrivalDateMinDepartureDate: t(Translation.Step.Date.NightStayRequirement.BetweenArrivalDateMinDepartureDate),\n AvailableDate: '',\n DateInSelectedRange: '',\n DateAfterMaxDepartureDate: t(Translation.Step.Date.NightStayRequirement.DateAfterMaxDepartureDate),\n };\n if (datePickerContext?.endDate) {\n const ChangeArrivalDate = t(Translation.Step.Date.NightStayRequirement.ChangeArrivalDate);\n titleTooltip = {\n BlockedDate: '',\n DateBeforeArrivalDate: ChangeArrivalDate,\n ArrivalDate: t(Translation.Step.Date.NightStayRequirement.PickAgain),\n BetweenArrivalDateMinDepartureDate: ChangeArrivalDate,\n AvailableDate: ChangeArrivalDate,\n DateInSelectedRange: ChangeArrivalDate,\n DateAfterMaxDepartureDate: ChangeArrivalDate,\n };\n }\n return titleTooltip;\n };\n\n const getTooltipTitle = () => {\n const setting = getTooltipTitleSetting();\n if (!price) {\n //Blocked dates\n return setting.BlockedDate;\n }\n\n if (availableNightStay.minDate) {\n if (props?.day.isAfter(datePickerContext.startDate) && availableNightStay.minDate?.isAfter(props.day)) {\n //Dates between Arrival date and Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.available) {\n //Available dates\n if (isDateBeforeArrivalDate) {\n //Date before Arrival date (case when hotel have no min./max. nights stay)\n return setting.DateBeforeArrivalDate;\n }\n return setting.AvailableDate;\n } else {\n //unavailable dates\n if (datePickerContext.startDate?.isAfter(props.day)) {\n //Date before Arrival date\n return setting.DateBeforeArrivalDate;\n }\n if (datePickerContext.startDate?.isSame(props.day)) {\n //Date is Arrival date\n return setting.ArrivalDate;\n }\n if (availableNightStay.minDate) {\n if (availableNightStay.minDate?.isAfter(props.day)) {\n //Dates before Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.maxDate) {\n if (availableNightStay.maxDate?.isBefore(props.day)) {\n // //Dates after Max Departure Date\n return setting.DateAfterMaxDepartureDate;\n }\n }\n return null;\n }\n };\n\n const priceBlock =\n props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 ? (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} hideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n ) : (\n <></>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n if (datePickerContext.startDate) {\n const tooltipTitle = getTooltipTitle();\n if (tooltipTitle) {\n return (\n <div className={classes} {...events}>\n {/* Use hovered to fix the confict events's onMouseLeave/onMouseLeave with (Tooltip) */}\n <Tooltip title={tooltipTitle} usePortal open={hovered} preventMouseInteraction>\n <Text>{props.text}</Text>\n {priceBlock}\n </Tooltip>\n </div>\n );\n }\n }\n\n return (\n <div className={classes} {...events}>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n datePickerContext?.arrivalNightStay,\n datePickerContext?.nightStayValidation,\n props.day,\n ]);\n\n return memo;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsE;AACtE,2CAA6F;AAC7F,4DAAoC;AAEpC,+CAAwE;AACxE,iDAA+C;AAC/C,0DAAuD;AAEvD,4EAAoD;AACpD,kEAAmC;AACnC,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAC3D,mFAA2D;AAC3D,iEAA8D;AAC9D,wCAAqC;AAarC,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC3B,qEAAY,CAAA;IACZ,gDAAyB,CAAA;IACzB,4CAAqB,CAAA;IACrB,8CAAuB,CAAA;AAC3B,CAAC,EALW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAK9B;AAED,SAAwB,aAAa,CAAC,KAAyB;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,qCAAiB,GAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,iBAAiB,GAAG,IAAA,kBAAU,EAAC,4BAAiB,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAA,4BAAoB,EAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAE5E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAC;IAE7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,IAAK,iBAAiB,CAAC,KAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC;IAExE,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAAC;IAE5C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,EAAE;gBACP,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEZ,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;oBACxI,IAAI,CAAC,SAAS,EAAE;wBACZ,IAAI,YAAY,EAAE;4BACd,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;4BAE7B,IAAI,iBAAiB,CAAC,QAAQ,GAAG,yBAAe,CAAC,aAAa,EAAE;gCAC5D,iBAAiB,CAAC,WAAW,CAAC,yBAAe,CAAC,aAAa,CAAC,CAAC;6BAChE;yBACJ;wBAED,YAAY,CAAC,KAAK,CAAC,CAAC;qBACvB;gBACL,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,YAAY,CAAC,KAAK,CAAC,CAAC;aACvB;SACJ;QAED,OAAO,GAAG,EAAE;YACR,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,SAAS,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,UAAU,EAAE,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpK,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,iBAAiB,CAAC,YAAY,EAAE;YAChC,IAAI,KAAK,CAAC,IAAI,IAAK,iBAAiB,CAAC,SAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;gBACrJ,cAAc,CAAC,IAAI,CAAC,CAAC;gBAErB,IAAI,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;oBACxI,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB;qBAAM;oBACH,SAAS,CAAC,KAAK,CAAC,CAAC;iBACpB;gBACD,OAAO;aACV;SACJ;QAED,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,SAAS,EAAE;YAC3C,IAAI,CAAA,MAAA,iBAAiB,CAAC,SAAS,0CAAE,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAI,MAAA,iBAAiB,CAAC,OAAO,0CAAE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,EAAE;gBAC/H,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEpB,IAAI,MAAA,iBAAiB,CAAC,OAAO,0CAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;oBACtD,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB;gBAED,OAAO;aACV;YAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;gBACvD,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,aAAa,CAAC,IAAI,CAAC,CAAC;gBAEpB,OAAO;aACV;SACJ;QAED,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;;QACtB,MAAM,SAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACtC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE;YACvC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,GAAY,EAAE;YAC/B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAwB,uBAAuB,CAAC;YACpE,gBAAgB,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,gBAAgB;YACrD,SAAS,EAAE,iBAAiB,CAAC,SAAS;YACtC,WAAW,EAAE,KAAK,CAAC,GAAG;SACzB,CAAC,CAAC;QAEH,MAAM,qBAAqB,GAAG,GAAY,EAAE;YACxC,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,IAAI,iBAAiB,CAAC,OAAO,EAAE;gBACvE,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE;oBACpF,OAAO,IAAI,CAAC;iBACf;aACJ;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,uBAAuB,GAAY,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,SAAS,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpI,MAAM,oBAAoB,GAAG,GAAY,EAAE;YACvC,IAAI,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBAC1D,sCAAsC;gBACtC,OAAO,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC1G;iBAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBACpC,4BAA4B;gBAC5B,OAAO,kBAAkB,CAAC,SAAS,IAAI,CAAC,uBAAuB,CAAC;aACnE;iBAAM;gBACH,kBAAkB;gBAClB,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAC;QAEF,wCAAwC;QACxC,MAAM,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAI,MAAA,MAAA,iBAAiB,CAAC,YAAY,0CAAE,MAAM,mDAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC;QAExI,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,iBAAiB,MAAA,KAAK,CAAC,WAAW,mCAAI,OAAO,QAAQ,EAAE;YAC9E,cAAc,EAAE,YAAY,EAAE;YAC9B,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,CAAC,YAAY,EAAE;YACzB,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,SAAS;YACtB,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,WAAW,IAAI,CAAC,UAAU;YACzC,0BAA0B,EAAE,CAAC,oBAAoB,EAAE;SACtD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAEzB,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,IAAI,YAAY,GAAG;gBACf,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;gBACtE,qBAAqB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;gBAC1F,WAAW,EAAE,EAAE;gBACf,kCAAkC,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC;gBACpH,aAAa,EAAE,EAAE;gBACjB,mBAAmB,EAAE,EAAE;gBACvB,yBAAyB,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC;aACrG,CAAC;YACF,IAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,OAAO,EAAE;gBAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBAC1F,YAAY,GAAG;oBACX,WAAW,EAAE,EAAE;oBACf,qBAAqB,EAAE,iBAAiB;oBACxC,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;oBACpE,kCAAkC,EAAE,iBAAiB;oBACrD,aAAa,EAAE,iBAAiB;oBAChC,mBAAmB,EAAE,iBAAiB;oBACtC,yBAAyB,EAAE,iBAAiB;iBAC/C,CAAC;aACL;YACD,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,GAAG,EAAE;;YACzB,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE;gBACR,eAAe;gBACf,OAAO,OAAO,CAAC,WAAW,CAAC;aAC9B;YAED,IAAI,kBAAkB,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,EAAE;oBACnG,mDAAmD;oBACnD,OAAO,OAAO,CAAC,kCAAkC,CAAC;iBACrD;aACJ;YAED,IAAI,kBAAkB,CAAC,SAAS,EAAE;gBAC9B,iBAAiB;gBACjB,IAAI,uBAAuB,EAAE;oBACzB,0EAA0E;oBAC1E,OAAO,OAAO,CAAC,qBAAqB,CAAC;iBACxC;gBACD,OAAO,OAAO,CAAC,aAAa,CAAC;aAChC;iBAAM;gBACH,mBAAmB;gBACnB,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACjD,0BAA0B;oBAC1B,OAAO,OAAO,CAAC,qBAAqB,CAAC;iBACxC;gBACD,IAAI,MAAA,iBAAiB,CAAC,SAAS,0CAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAChD,sBAAsB;oBACtB,OAAO,OAAO,CAAC,WAAW,CAAC;iBAC9B;gBACD,IAAI,kBAAkB,CAAC,OAAO,EAAE;oBAC5B,IAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBAChD,iCAAiC;wBACjC,OAAO,OAAO,CAAC,kCAAkC,CAAC;qBACrD;iBACJ;gBAED,IAAI,kBAAkB,CAAC,OAAO,EAAE;oBAC5B,IAAI,MAAA,kBAAkB,CAAC,OAAO,0CAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACjD,mCAAmC;wBACnC,OAAO,OAAO,CAAC,yBAAyB,CAAC;qBAC5C;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAC;QAEF,MAAM,UAAU,GACZ,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,IAAK,KAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CACrG,uCAAK,SAAS,EAAE,iBAAiB,MAAA,KAAK,CAAC,WAAW,mCAAI,OAAO,aAAa,IACrE,SAAS,CAAC,CAAC,CAAC,CACT,uCAAK,SAAS,EAAC,sBAAsB;YACjC,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,IAAI,EAAC,MAAM,GAAG,CAC/D,CACT,CAAC,CAAC,CAAC,CACA,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;YACtB,8BAAC,kBAAQ,IAAC,qBAAqB,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,YAAY,QAAC,mBAAmB,UAC3F,KAAK,CACC,CACR,CACV,CACC,CACT,CAAC,CAAC,CAAC,CACA,6DAAK,CACR,CAAC;QAEN,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;YAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,CAAE,KAAgB,GAAG,yBAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAExE,IAAI,YAAY,EAAE,EAAE;gBAChB,IAAI,KAAK,GAAG,EAAE,EAAE;oBACZ,MAAM,GAAG,EAAE,CAAC;iBACf;qBAAM,IAAI,KAAK,GAAG,EAAE,EAAE;oBACnB,MAAM,GAAG,EAAE,CAAC;iBACf;qBAAM;oBACH,MAAM,GAAG,KAAK,CAAC;iBAClB;aACJ;iBAAM;gBACH,IAAI,CAAC,SAAS,EAAE;oBACZ,MAAM,GAAG,EAAE,CAAC;iBACf;aACJ;YAED,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;gBAC9B,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,uCAAK,SAAS,EAAC,qCAAqC,IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAO;gBAC5G,uCAAK,SAAS,EAAC,+BAA+B,IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAO;gBAC7E,uCAAK,SAAS,EAAC,+BAA+B;oBAC1C,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ,CACvB;gBACN,uCAAK,SAAS,EAAC,qCAAqC;oBAChD,uCAAK,SAAS,EAAC,2CAA2C,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,EAAE,GAAI,CAC/F;gBACL,UAAU,CACT,CACT,CAAC;SACL;aAAM;YACH,IAAI,iBAAiB,CAAC,SAAS,EAAE;gBAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;gBACvC,IAAI,YAAY,EAAE;oBACd,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;wBAE/B,8BAAC,iBAAO,IAAC,KAAK,EAAE,YAAY,EAAE,SAAS,QAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB;4BAC1E,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ;4BACxB,UAAU,CACL,CACR,CACT,CAAC;iBACL;aACJ;YAED,OAAO,CACH,qDAAK,SAAS,EAAE,OAAO,IAAM,MAAM;gBAC/B;oBACI,8BAAC,cAAI,QAAE,KAAK,CAAC,IAAI,CAAQ;oBACxB,UAAU,CACT,CACJ,CACT,CAAC;SACL;IACL,CAAC,EAAE;QACC,OAAO;QACP,MAAM;QACN,WAAW;QACX,UAAU;QACV,UAAU;QACV,SAAS;QACT,KAAK,CAAC,IAAI;QACV,iBAAiB,CAAC,YAAY;QAC9B,iBAAiB,CAAC,SAAS;QAC3B,iBAAiB,CAAC,OAAO;QACzB,aAAa;QACb,iBAAiB,CAAC,QAAQ;QAC1B,KAAK;QACL,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,gBAAgB;QACnC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,mBAAmB;QACtC,KAAK,CAAC,GAAG;KACZ,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC;AArVD,gCAqVC","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { IAvailableNightStay, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { Color } from '@/util/Color';\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useExternalMember();\n const { t } = useTranslation();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n const { checkAvailableNightStay } = useCalendarNightStay({ basketContext });\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getInfants(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const isSelectable = (): boolean => {\n return !!(props.day && props.selectable && !isLoading && !isPast && (price || !hotel));\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const availableNightStay: IAvailableNightStay = checkAvailableNightStay({\n arrivalNightStay: datePickerContext?.arrivalNightStay,\n startDate: datePickerContext.startDate,\n dateToCheck: props.day,\n });\n\n const isDateInSelectedRange = (): boolean => {\n if (props.day && datePickerContext.startDate && datePickerContext.endDate) {\n if (props.day <= datePickerContext.endDate && props.day >= datePickerContext.startDate) {\n return true;\n }\n }\n return false;\n };\n const isDateBeforeArrivalDate: boolean = props.day && datePickerContext.startDate && datePickerContext.startDate.isAfter(props.day);\n const isNightStayAvailable = (): boolean => {\n if (datePickerContext.endDate && datePickerContext.startDate) {\n //selected both Arrival/Departure date\n return datePickerContext.startDate.isAfter(props.day) || datePickerContext.endDate.isBefore(props.day);\n } else if (datePickerContext.startDate) {\n //selected Arrival date only\n return availableNightStay.available && !isDateBeforeArrivalDate;\n } else {\n //no selected date\n return true;\n }\n };\n\n // This is insane, needs to be re-worked\n const hovered = isHovering && isSelectable() && !isDateInSelectedRange() && datePickerContext.hoveredMonth?.isSame?.(props.day, 'date');\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': hovered,\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n '--night-stay-unavailable': !isNightStayAvailable(),\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const getTooltipTitleSetting = () => {\n let titleTooltip = {\n BlockedDate: t(Translation.Step.Date.NightStayRequirement.BlockedDate),\n DateBeforeArrivalDate: t(Translation.Step.Date.NightStayRequirement.DateBeforeArrivalDate),\n ArrivalDate: '',\n BetweenArrivalDateMinDepartureDate: t(Translation.Step.Date.NightStayRequirement.BetweenArrivalDateMinDepartureDate),\n AvailableDate: '',\n DateInSelectedRange: '',\n DateAfterMaxDepartureDate: t(Translation.Step.Date.NightStayRequirement.DateAfterMaxDepartureDate),\n };\n if (datePickerContext?.endDate) {\n const ChangeArrivalDate = t(Translation.Step.Date.NightStayRequirement.ChangeArrivalDate);\n titleTooltip = {\n BlockedDate: '',\n DateBeforeArrivalDate: ChangeArrivalDate,\n ArrivalDate: t(Translation.Step.Date.NightStayRequirement.PickAgain),\n BetweenArrivalDateMinDepartureDate: ChangeArrivalDate,\n AvailableDate: ChangeArrivalDate,\n DateInSelectedRange: ChangeArrivalDate,\n DateAfterMaxDepartureDate: ChangeArrivalDate,\n };\n }\n return titleTooltip;\n };\n\n const getTooltipTitle = () => {\n const setting = getTooltipTitleSetting();\n if (!price) {\n //Blocked dates\n return setting.BlockedDate;\n }\n\n if (availableNightStay.minDate) {\n if (props?.day.isAfter(datePickerContext.startDate) && availableNightStay.minDate?.isAfter(props.day)) {\n //Dates between Arrival date and Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.available) {\n //Available dates\n if (isDateBeforeArrivalDate) {\n //Date before Arrival date (case when hotel have no min./max. nights stay)\n return setting.DateBeforeArrivalDate;\n }\n return setting.AvailableDate;\n } else {\n //unavailable dates\n if (datePickerContext.startDate?.isAfter(props.day)) {\n //Date before Arrival date\n return setting.DateBeforeArrivalDate;\n }\n if (datePickerContext.startDate?.isSame(props.day)) {\n //Date is Arrival date\n return setting.ArrivalDate;\n }\n if (availableNightStay.minDate) {\n if (availableNightStay.minDate?.isAfter(props.day)) {\n //Dates before Min Departure Date\n return setting.BetweenArrivalDateMinDepartureDate;\n }\n }\n\n if (availableNightStay.maxDate) {\n if (availableNightStay.maxDate?.isBefore(props.day)) {\n // //Dates after Max Departure Date\n return setting.DateAfterMaxDepartureDate;\n }\n }\n return null;\n }\n };\n\n const priceBlock =\n props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 ? (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} hideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n ) : (\n <></>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n if (datePickerContext.startDate) {\n const tooltipTitle = getTooltipTitle();\n if (tooltipTitle) {\n return (\n <div className={classes} {...events}>\n {/* Use hovered to fix the confict events's onMouseLeave/onMouseLeave with (Tooltip) */}\n <Tooltip title={tooltipTitle} usePortal open={hovered} preventMouseInteraction>\n <Text>{props.text}</Text>\n {priceBlock}\n </Tooltip>\n </div>\n );\n }\n }\n\n return (\n <div className={classes} {...events}>\n <div>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n datePickerContext?.arrivalNightStay,\n datePickerContext?.nightStayValidation,\n props.day,\n ]);\n\n return memo;\n}\n"]}
|
|
@@ -146,16 +146,15 @@ function Header() {
|
|
|
146
146
|
const links = (react_1.default.createElement("ul", { className: "c-header__list" },
|
|
147
147
|
react_1.default.createElement("li", null,
|
|
148
148
|
react_1.default.createElement(react_router_dom_1.NavLink, { to: Object.assign(Object.assign({}, location), { pathname: RouteManager_1.ROUTES.HOTEL_INFO }), activeClassName: "is-active", onClick: closeMobileMenuClickHandler },
|
|
149
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White },
|
|
150
|
-
react_1.default.createElement("strong", null, t(Translation_1.Translation.Navigation.HotelInfo))))),
|
|
149
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.HotelInfo)))),
|
|
151
150
|
react_1.default.createElement("li", null, (hotel === null || hotel === void 0 ? void 0 : hotel.forwardFindReservationToSynxis) ? (react_1.default.createElement("a", { href: `https://be.synxis.com/signin?hotel=${hotel === null || hotel === void 0 ? void 0 : hotel.hotelID}`, target: "_blank", rel: "noreferrer" },
|
|
152
151
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.FindReservation)))) : (react_1.default.createElement(react_router_dom_1.NavLink, { to: "/find-reservation", activeClassName: "is-active", onClick: closeMobileMenuClickHandler },
|
|
153
152
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.FindReservation))))),
|
|
154
153
|
react_1.default.createElement("li", { className: "phone" },
|
|
155
154
|
react_1.default.createElement("a", { href: `tel:${hotel === null || hotel === void 0 ? void 0 : hotel.phone}`, onClick: closeMobileMenuClickHandler },
|
|
156
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, transforms: [Text_1.TextTransform.Uppercase], color: Color_1.Color.White },
|
|
155
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, transforms: [Text_1.TextTransform.Uppercase], color: Color_1.Color.White, bold: true },
|
|
157
156
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Phone, size: "16px", color: Color_1.Color.White }),
|
|
158
|
-
react_1.default.createElement("
|
|
157
|
+
react_1.default.createElement("span", { className: "u-marg-left--light" }, hotel === null || hotel === void 0 ? void 0 : hotel.phone))))));
|
|
159
158
|
const configs = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
160
159
|
react_1.default.createElement("ul", { className: "c-header__list" },
|
|
161
160
|
langKeys.length > 1 && (react_1.default.createElement("li", null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, NavLink, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport FadeAnimation from '@/animations/Fade';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport { ROUTES } from '@/util/RouteManager';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember, isFetchingMember } = useContext(RoomstayMemberContext);\n\n const [loginAnchorEl, setLoginAnchorEl] = React.useState<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n if (location.pathname.startsWith('/account')) {\n setLoginModalOpen(true);\n }\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n useEffect(() => {\n if (mobileMenuOpen) {\n document.body.style.setProperty('overflow', 'hidden');\n }\n return () => {\n document.body.style.removeProperty('overflow');\n };\n }, [mobileMenuOpen]);\n\n let hotelImageElement = hotelLogo ? <img src={hotelLogo} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={hotelImageElement} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink\n to={{\n ...location,\n pathname: ROUTES.HOTEL_INFO,\n }}\n activeClassName=\"is-active\"\n onClick={closeMobileMenuClickHandler}\n >\n <Text type={TextType.Small} color={Color.White}>\n <strong>{t(Translation.Navigation.HotelInfo)}</strong>\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White}>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <strong className=\"u-marg-left--light\">{hotel?.phone}</strong>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={currencyHelper.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={(el) => setLoginAnchorEl(el)}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton\n size=\"small\"\n isText\n onClick={() => {\n onLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n stopIconAnimation\n >\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={<SmallSpinner />}>\n {roomstayMember || isFetchingMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} onCloseMenu={closeMobileMenuClickHandler} anchorEl={loginAnchorEl} />\n ) : (\n <UnauthenticatedUserModal\n open={loginModalOpen}\n onClose={() => {\n closeLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n onOpenOnMobile={() => {\n onLoginClickHandler();\n openMobileMenuClickHandler();\n }}\n anchorEl={loginAnchorEl}\n />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkG;AAClG,2CAAkD;AAClD,+CAAyE;AACzE,iDAA+C;AAC/C,uDAA8D;AAC9D,0DAAuD;AAEvD,6DAA8C;AAC9C,6EAAqD;AACrD,uEAAgE;AAChE,4FAAoE;AACpE,+DAAoE;AACpE,+DAAkF;AAClF,kEAA0E;AAC1E,kFAA0D;AAC1D,kGAA0E;AAC1E,mEAA0E;AAC1E,0FAAkE;AAClE,wCAAqC;AACrC,sEAAwD;AACxD,iEAAyC;AACzC,sDAA6C;AAE7C,MAAM,wBAAwB,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7C,kDAAO,iEAAiE,IAAE,IAAI,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9G,OAAO,EAAE,wBAAwB;CACpC,CAAC,CAAC,CACN,CAAC;AACF,MAAM,sBAAsB,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3C,kDAAO,+DAA+D,IAAE,IAAI,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1G,OAAO,EAAE,sBAAsB;CAClC,CAAC,CAAC,CACN,CAAC;AAOF,SAAwB,MAAM;IAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE1D,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE/E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAuB,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,mCAAgB,CAAC,YAAY,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAe,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAe,CAAC;IAE3E,MAAM,uBAAuB,GAAG,CAAC,QAAkB,EAAE,EAAE;QACnD,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACjC,mCAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAE,EAAE;QACjD,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACjC,mBAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACrC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACpC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAuB,CAAC;QAE5B,IAAI,qBAAqB,EAAE;YACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1C,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC3B;SACJ;aAAM;YACH,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;SACX;QAED,OAAO,GAAG,EAAE;YACR,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;gBAChB,IAAI,CAAC,SAAS,EAAE;oBACZ,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB;YACL,CAAC,CAAC;YAEF,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC;QAEF,0BAA0B;QAC1B,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,mBAAS,CAAC,EAAE;YACvC,IAAI,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,EAAE;gBACjC,SAAS,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAC;aAC1B;SACJ;aAAM;YACH,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,gEAAgE;QAChE,iBAAiB,CAAC,WAAW,KAAK,mBAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAExD,OAAO,GAAG,EAAE;YACR,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,cAAc,EAAE;YAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SACzD;QACD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAI,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,uCAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC;IAE/G,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC7E,iBAAiB,GAAG,uCAAK,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAC,YAAY,GAAG,CAAC;KACxE;IAED,MAAM,KAAK,GAAG,CACV,sCAAI,SAAS,EAAC,gBAAgB;QAC1B;YACI,8BAAC,0BAAO,IACJ,EAAE,kCACK,QAAQ,KACX,QAAQ,EAAE,qBAAM,CAAC,UAAU,KAE/B,eAAe,EAAC,WAAW,EAC3B,OAAO,EAAE,2BAA2B;gBAEpC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CACjC,CACD,CACT;QACL,0CACK,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,8BAA8B,EAAC,CAAC,CAAC,CACrC,qCAAG,IAAI,EAAE,sCAAsC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY;YAC7F,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CACvC,CACP,CACP,CAAC,CAAC,CAAC,CACA,8BAAC,0BAAO,IAAC,EAAE,EAAC,mBAAmB,EAAC,eAAe,EAAC,WAAW,EAAC,OAAO,EAAE,2BAA2B;YAC5F,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CACvC,CACD,CACb,CACA;QACL,sCAAI,SAAS,EAAC,OAAO;YACjB,qCAAG,IAAI,EAAE,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,EAAE,OAAO,EAAE,2BAA2B;gBAChE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,oBAAa,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI;oBACvF,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,GAAI;oBAC9D,wCAAM,SAAS,EAAC,oBAAoB,IAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAQ,CACvD,CACP,CACH,CACJ,CACR,CAAC;IAEF,MAAM,OAAO,GAAG,CACZ;QACI,sCAAI,SAAS,EAAC,gBAAgB;YACzB,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB;gBACI,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAc,EAAE,EAAE;wBACrC,OAAO;4BACH,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,mCAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC;yBACrD,CAAC;oBACN,CAAC,CAAC,EACF,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACD,CACR;YACD;gBACI,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAC1C,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACD;YAEJ,6BAAmB,CAAC,QAAQ,EAAE,IAAI,CAC/B,sCAAI,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAChC,cAAc,CAAC,CAAC,CAAC,CACd,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,QAAC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB;gBACxE,cAAc,CAAC,QAAQ;;gBAAG,cAAc,CAAC,OAAO;gBACjD,wCAAM,SAAS,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;oBACnE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE,CACA,CACd,CAAC,CAAC,CAAC,CACA,8BAAC,kBAAQ,IACL,IAAI,EAAC,OAAO,EACZ,MAAM,QACN,OAAO,EAAE,GAAG,EAAE;oBACV,mBAAmB,EAAE,CAAC;oBACtB,2BAA2B,EAAE,CAAC;gBAClC,CAAC,EACD,iBAAiB;gBAEhB,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxC,wCAAM,SAAS,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;oBACnE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE,CACA,CACd,CACA,CACR,CACA,CACN,CACN,CAAC;IAEF,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,uBAAuB;YAClC,uCAAK,SAAS,EAAC,WAAW;gBACtB,uCAAK,SAAS,EAAC,QAAQ;oBACnB,uCAAK,SAAS,EAAC,uCAAuC;wBAClD,uCAAK,SAAS,EAAC,gBAAgB;4BAC3B,qCAAG,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,IAC1F,iBAAiB,CAClB,CACF;wBACL,CAAC,CAAC,cAAc,IAAI,KAAK,CACxB;oBACN,uCAAK,SAAS,EAAC,eAAe;wBACzB,OAAO;wBACR,uCAAK,SAAS,EAAC,uBAAuB;4BAClC,wCAAM,SAAS,EAAC,oBAAoB;gCAChC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,OAAO,EAAE,0BAA0B,GAAI,CAC/F,CACL,CACJ,CACJ,CACJ,CACJ;QACL,cAAc,IAAI,CACf,8BAAC,uBAAc,IAAC,MAAM,EAAE,6BAAmB,CAAC,eAAe;YACvD,8BAAC,cAAa,IAAC,IAAI,EAAE,qBAAqB;gBACtC,uCAAK,SAAS,EAAE,sBAAsB,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC5E,uCAAK,SAAS,EAAC,oCAAoC;wBAC/C,uCAAK,SAAS,EAAC,gBAAgB;4BAC3B,8BAAC,uBAAI,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,EAAE,2BAA2B,IAC5C,iBAAiB,CACf,CACL;wBACN,uCAAK,SAAS,EAAC,uBAAuB;4BAClC,wCAAM,SAAS,EAAC,oBAAoB;gCAChC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,OAAO,EAAE,2BAA2B,GAAI,CACjG,CACL,CACJ;oBACN,uCAAK,SAAS,EAAC,6BAA6B;wBACvC,CAAC,CAAC,KAAK,IAAI,KAAK;wBAEhB,OAAO,CACN,CACJ,CACM,CACH,CACpB;QACA,6BAAmB,CAAC,QAAQ,EAAE,IAAI,CAC/B,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,8BAAC,sBAAY,OAAG,IAC/B,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAClC,8BAAC,sBAAsB,IAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,aAAa,GAAI,CACvJ,CAAC,CAAC,CAAC,CACA,8BAAC,wBAAwB,IACrB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,GAAG,EAAE;gBACV,sBAAsB,EAAE,CAAC;gBACzB,2BAA2B,EAAE,CAAC;YAClC,CAAC,EACD,cAAc,EAAE,GAAG,EAAE;gBACjB,mBAAmB,EAAE,CAAC;gBACtB,0BAA0B,EAAE,CAAC;YACjC,CAAC,EACD,QAAQ,EAAE,aAAa,GACzB,CACL,CACM,CACd,CACF,CACN,CAAC;AACN,CAAC;AA7RD,yBA6RC","sourcesContent":["import { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, NavLink, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport FadeAnimation from '@/animations/Fade';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport { ROUTES } from '@/util/RouteManager';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember, isFetchingMember } = useContext(RoomstayMemberContext);\n\n const [loginAnchorEl, setLoginAnchorEl] = React.useState<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n if (location.pathname.startsWith('/account')) {\n setLoginModalOpen(true);\n }\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n useEffect(() => {\n if (mobileMenuOpen) {\n document.body.style.setProperty('overflow', 'hidden');\n }\n return () => {\n document.body.style.removeProperty('overflow');\n };\n }, [mobileMenuOpen]);\n\n let hotelImageElement = hotelLogo ? <img src={hotelLogo} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={hotelImageElement} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink\n to={{\n ...location,\n pathname: ROUTES.HOTEL_INFO,\n }}\n activeClassName=\"is-active\"\n onClick={closeMobileMenuClickHandler}\n >\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.HotelInfo)}\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White} bold>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <span className=\"u-marg-left--light\">{hotel?.phone}</span>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={currencyHelper.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={(el) => setLoginAnchorEl(el)}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton\n size=\"small\"\n isText\n onClick={() => {\n onLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n stopIconAnimation\n >\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={<SmallSpinner />}>\n {roomstayMember || isFetchingMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} onCloseMenu={closeMobileMenuClickHandler} anchorEl={loginAnchorEl} />\n ) : (\n <UnauthenticatedUserModal\n open={loginModalOpen}\n onClose={() => {\n closeLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n onOpenOnMobile={() => {\n onLoginClickHandler();\n openMobileMenuClickHandler();\n }}\n anchorEl={loginAnchorEl}\n />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
@@ -98,7 +98,7 @@ const ExternalMemberModal = ({ isOpen, onClose }) => {
|
|
|
98
98
|
case HotelDTO_1.EIntegration.Big4:
|
|
99
99
|
return { title: t(Translation_1.Translation.ExternalMemberPopup.Big4Title), image: 'big4-login.svg' };
|
|
100
100
|
case HotelDTO_1.EIntegration.Top10:
|
|
101
|
-
return { title: t(Translation_1.Translation.ExternalMemberPopup.Top10Title), image: 'top10-login.
|
|
101
|
+
return { title: t(Translation_1.Translation.ExternalMemberPopup.Top10Title), image: 'top10-login.svg' };
|
|
102
102
|
}
|
|
103
103
|
})();
|
|
104
104
|
return (react_1.default.createElement(SimpleModal_1.default, { open: isOpen, onClose: onClose, size: SimpleModal_1.SimpleModalSize.Normal, alignCenter: true, bodyClassName: Big4MemberModal_module_scss_1.default.root },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalMemberModal.js","sourceRoot":"/","sources":["src/components/steps/room/MemberSignInModal/ExternalMemberModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, useContext, useState } from 'react';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { CompanyContext } from '@/contexts';\nimport { useCurrentHotel } from '@/hooks';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { EIntegration } from '@/models/Api/HotelDTO';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport styles from './Big4MemberModal.module.scss';\n\ninterface Big4MemberModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\ninterface Big4MemberFormValues {\n memberNumber: string;\n familyName: string;\n}\n\nconst ExternalMemberModal: FC<Big4MemberModalProps> = ({ isOpen, onClose }) => {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const { externalMemberType } = useExternalMember();\n\n const {\n register,\n formState: { errors },\n handleSubmit,\n } = useForm<Big4MemberFormValues>({\n mode: 'onChange',\n });\n\n const modalPrimaryColor = hotel?.memberOnlyModalUsePrimaryColor ? Color.Accent : Color.Success;\n const getValidationClass = (name: keyof Big4MemberFormValues) => {\n if (errors) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n const onSubmit: SubmitHandler<Big4MemberFormValues> = async ({ familyName, memberNumber }) => {\n setIsLoading(true);\n setErrorMessage('');\n try {\n const number = await API.Member.signInBig4Member(memberNumber, familyName, hotel?.hotelID as string);\n localStorage.setItem('hotel' + hotel?.hotelID + 'isFromBig4', number.memberId);\n ccx.signUserIn(number.memberId.toString(), true);\n } catch (e: any) {\n if (e.Message) {\n setErrorMessage(e.Message);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const { t } = useTranslation();\n\n const { title, image } = (() => {\n switch (externalMemberType) {\n default:\n case EIntegration.Big4:\n return { title: t(Translation.ExternalMemberPopup.Big4Title), image: 'big4-login.svg' };\n case EIntegration.Top10:\n return { title: t(Translation.ExternalMemberPopup.Top10Title), image: 'top10-login.jpeg' };\n }\n })();\n\n return (\n <SimpleModal open={isOpen} onClose={onClose} size={SimpleModalSize.Normal} alignCenter bodyClassName={styles.root}>\n <div className={styles.container}>\n <div className={styles.logoSection}>\n <img className={styles.img} src={RoomstayThemeEngine.getImageAssetUrl(image)} alt={`${externalMemberType} Logo`} />\n </div>\n <div>\n <form onSubmit={handleSubmit(onSubmit)}>\n <Headline bold color={modalPrimaryColor}>\n {title}\n </Headline>\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"1\">\n <TextBox\n iconProps={{\n color: Color.DarkGrey,\n }}\n icon={IconType.Star}\n inputProps={{\n disabled: isLoading,\n }}\n wide\n placeholder={t(Translation.ExternalMemberPopup.Fields.MemberNumber)}\n required\n validationStatus={getValidationClass('memberNumber')}\n {...register('memberNumber', {\n required: true,\n pattern: {\n value: /^[0-9]*$/,\n message: 'Please enter a valid member number',\n },\n })}\n />\n </InputGroup>\n <div className=\"u-marg-top--light\">\n <InputGroup dimensions=\"1\">\n <TextBox\n iconProps={{\n color: Color.DarkGrey,\n }}\n icon={IconType.Person}\n inputProps={{\n disabled: isLoading,\n }}\n wide\n placeholder={t(Translation.ExternalMemberPopup.Fields.FamilyName)}\n required\n validationStatus={getValidationClass('familyName')}\n {...register('familyName', {\n required: true,\n })}\n />\n </InputGroup>\n </div>\n </div>\n <BEButton\n isLoading={isLoading}\n htmlType=\"submit\"\n className=\"u-marg-top\"\n size=\"normal\"\n filled\n primary={hotel?.memberOnlyModalUsePrimaryColor}\n success={!hotel?.memberOnlyModalUsePrimaryColor}\n stopIconAnimation\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n >\n {t(Translation.ExternalMemberPopup.Submit)}\n </BEButton>\n <div className=\"u-marg-top\">\n <Text bold color={Color.Danger}>\n {errorMessage}\n </Text>\n </div>\n </form>\n </div>\n </div>\n </SimpleModal>\n );\n};\n\nexport default ExternalMemberModal;\n"]}
|
|
1
|
+
{"version":3,"file":"ExternalMemberModal.js","sourceRoot":"/","sources":["src/components/steps/room/MemberSignInModal/ExternalMemberModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, useContext, useState } from 'react';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { CompanyContext } from '@/contexts';\nimport { useCurrentHotel } from '@/hooks';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { EIntegration } from '@/models/Api/HotelDTO';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport styles from './Big4MemberModal.module.scss';\n\ninterface Big4MemberModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\ninterface Big4MemberFormValues {\n memberNumber: string;\n familyName: string;\n}\n\nconst ExternalMemberModal: FC<Big4MemberModalProps> = ({ isOpen, onClose }) => {\n const { hotel } = useCurrentHotel();\n const ccx = useContext(CompanyContext);\n const [isLoading, setIsLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const { externalMemberType } = useExternalMember();\n\n const {\n register,\n formState: { errors },\n handleSubmit,\n } = useForm<Big4MemberFormValues>({\n mode: 'onChange',\n });\n\n const modalPrimaryColor = hotel?.memberOnlyModalUsePrimaryColor ? Color.Accent : Color.Success;\n const getValidationClass = (name: keyof Big4MemberFormValues) => {\n if (errors) {\n if (errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n const onSubmit: SubmitHandler<Big4MemberFormValues> = async ({ familyName, memberNumber }) => {\n setIsLoading(true);\n setErrorMessage('');\n try {\n const number = await API.Member.signInBig4Member(memberNumber, familyName, hotel?.hotelID as string);\n localStorage.setItem('hotel' + hotel?.hotelID + 'isFromBig4', number.memberId);\n ccx.signUserIn(number.memberId.toString(), true);\n } catch (e: any) {\n if (e.Message) {\n setErrorMessage(e.Message);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const { t } = useTranslation();\n\n const { title, image } = (() => {\n switch (externalMemberType) {\n default:\n case EIntegration.Big4:\n return { title: t(Translation.ExternalMemberPopup.Big4Title), image: 'big4-login.svg' };\n case EIntegration.Top10:\n return { title: t(Translation.ExternalMemberPopup.Top10Title), image: 'top10-login.svg' };\n }\n })();\n\n return (\n <SimpleModal open={isOpen} onClose={onClose} size={SimpleModalSize.Normal} alignCenter bodyClassName={styles.root}>\n <div className={styles.container}>\n <div className={styles.logoSection}>\n <img className={styles.img} src={RoomstayThemeEngine.getImageAssetUrl(image)} alt={`${externalMemberType} Logo`} />\n </div>\n <div>\n <form onSubmit={handleSubmit(onSubmit)}>\n <Headline bold color={modalPrimaryColor}>\n {title}\n </Headline>\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"1\">\n <TextBox\n iconProps={{\n color: Color.DarkGrey,\n }}\n icon={IconType.Star}\n inputProps={{\n disabled: isLoading,\n }}\n wide\n placeholder={t(Translation.ExternalMemberPopup.Fields.MemberNumber)}\n required\n validationStatus={getValidationClass('memberNumber')}\n {...register('memberNumber', {\n required: true,\n pattern: {\n value: /^[0-9]*$/,\n message: 'Please enter a valid member number',\n },\n })}\n />\n </InputGroup>\n <div className=\"u-marg-top--light\">\n <InputGroup dimensions=\"1\">\n <TextBox\n iconProps={{\n color: Color.DarkGrey,\n }}\n icon={IconType.Person}\n inputProps={{\n disabled: isLoading,\n }}\n wide\n placeholder={t(Translation.ExternalMemberPopup.Fields.FamilyName)}\n required\n validationStatus={getValidationClass('familyName')}\n {...register('familyName', {\n required: true,\n })}\n />\n </InputGroup>\n </div>\n </div>\n <BEButton\n isLoading={isLoading}\n htmlType=\"submit\"\n className=\"u-marg-top\"\n size=\"normal\"\n filled\n primary={hotel?.memberOnlyModalUsePrimaryColor}\n success={!hotel?.memberOnlyModalUsePrimaryColor}\n stopIconAnimation\n icon={IconType.ArrowRight}\n iconPosition=\"right\"\n >\n {t(Translation.ExternalMemberPopup.Submit)}\n </BEButton>\n <div className=\"u-marg-top\">\n <Text bold color={Color.Danger}>\n {errorMessage}\n </Text>\n </div>\n </form>\n </div>\n </div>\n </SimpleModal>\n );\n};\n\nexport default ExternalMemberModal;\n"]}
|
|
@@ -40,8 +40,8 @@ const Headline_1 = __importDefault(require("../../generic/Headline"));
|
|
|
40
40
|
const Icon_1 = require("../../generic/Icon/Icon");
|
|
41
41
|
const SmallSpinner_1 = __importDefault(require("../../generic/loader/SmallSpinner"));
|
|
42
42
|
const Text_1 = __importStar(require("../../generic/Text"));
|
|
43
|
-
const useExternalMember_1 = require("../../../hooks/useExternalMember");
|
|
44
43
|
const CurrentHotelHook_1 = require("../../../hooks/CurrentHotelHook");
|
|
44
|
+
const useExternalMember_1 = require("../../../hooks/useExternalMember");
|
|
45
45
|
const DIProvider_1 = require("../../../providers/DIProvider");
|
|
46
46
|
const Color_1 = require("../../../util/Color");
|
|
47
47
|
const StepManager_1 = __importDefault(require("../../../util/StepManager"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoRoomsFoundBlock.js","sourceRoot":"/","sources":["src/components/steps/room/NoRoomsFoundBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAA+D;AAC/D,iDAA+C;AAC/C,uDAAwC;AACxC,0DAAuD;AAEvD,iFAAyD;AACzD,kEAAmC;AACnC,oEAA8D;AAC9D,6EAAqD;AACrD,6EAAqD;AACrD,yDAA0D;AAC1D,4FAAoE;AACpE,kEAA2D;AAC3D
|
|
1
|
+
{"version":3,"file":"NoRoomsFoundBlock.js","sourceRoot":"/","sources":["src/components/steps/room/NoRoomsFoundBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useCurrentHotel } from '@/hooks/CurrentHotelHook';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { withDI } from '@/providers/DIProvider';\nimport { Color } from '@/util/Color';\nimport StepManager from '@/util/StepManager';\n\nimport TravelerNotfound from '../../generic/TravelerNotfound';\n\nfunction OriginalNoRoomsFoundBlock() {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useExternalMember();\n\n const [isLoading, setIsLoading] = useState(false);\n const [minNightStay, setMinNightStay] = useState(-1);\n\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n\n useEffect(() => {\n let cancelled = false;\n\n const basketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[0];\n if (!basketRow || !hotel) {\n return;\n }\n\n setIsLoading(true);\n\n API.Availability.fetchMinNightStayData(basketRow, hotel?.hotelID, memberNumber).then((response) => {\n if (!cancelled) {\n setIsLoading(false);\n\n if (response.Status === 'MinStay') {\n if (basketRow.getNumberOfDays() < response.Quantity) setMinNightStay(response.Quantity);\n } else {\n setMinNightStay(-1);\n }\n }\n });\n\n return () => {\n cancelled = true;\n\n setIsLoading(false);\n };\n }, []);\n\n return (\n <div className=\"u-align-center\">\n {isLoading && <SmallSpinner />}\n <AutoAutoHeight open={minNightStay !== -1}>\n <Alert type={AlertType.Accent1} icon={IconType.Error}>\n <Text type={TextType.Small}>\n {t(Translation.Step.Room.MinimumStay, {\n minNightStay,\n })}\n </Text>\n </Alert>\n </AutoAutoHeight>\n <div className=\"u-marg-bottom--heavy\">\n {/*BLANK SLATE IMAGE*/}\n <TravelerNotfound />\n </div>\n <div className=\"u-marg-bottom\">\n <Headline size=\"large\" bold>\n {t(Translation.Step.Room.NoRoomsFound.NoRoomsFound)}\n </Headline>\n </div>\n <div>\n {isLoading ? <SmallSpinner /> : minNightStay !== -1 && <Text color={Color.DarkGrey}>{t(Translation.Step.Room.NoRoomsFound.MinNightStay, { minNightStay })}</Text>}\n </div>\n {minNightStay === -1 && <Text color={Color.DarkGrey}>{t(Translation.Step.Room.NoRoomsFound.WeApologise)}</Text>}\n <Text color={Color.DarkGrey}>{t(Translation.Step.Room.NoRoomsFound.PleaseCheckYourDates)}</Text>\n <div className=\"u-marg-top\">\n <Link to={StepManager.getFirstStep().getStepUrl()}>\n <BEButton filled>{t(Translation.Step.Room.NoRoomsFound.NewSearch)}</BEButton>\n </Link>\n </div>\n </div>\n );\n}\n\nexport const BE_NO_ROOMS_FOUND_BLOCK = 'BENoRoomsFoundBlock';\n\nexport default function NoRoomsFoundBlock() {\n return withDI(BE_NO_ROOMS_FOUND_BLOCK, OriginalNoRoomsFoundBlock, null);\n}\n"]}
|
|
@@ -51,8 +51,8 @@ const ConfirmationStepContext_1 = require("./ConfirmationStepContext");
|
|
|
51
51
|
const CommittedBookingEvent_1 = require("../../events/views/CommittedBookingEvent");
|
|
52
52
|
const PlacedBookingEvent_1 = require("../../events/views/PlacedBookingEvent");
|
|
53
53
|
const RolledBackBookingEvent_1 = require("../../events/views/RolledBackBookingEvent");
|
|
54
|
-
const useExternalMember_1 = require("../../hooks/useExternalMember");
|
|
55
54
|
const ConfirmationQuery_1 = require("../../hooks/ConfirmationQuery");
|
|
55
|
+
const useExternalMember_1 = require("../../hooks/useExternalMember");
|
|
56
56
|
const Translation_1 = require("../../translations/Translation");
|
|
57
57
|
const DataLayer_1 = __importStar(require("../../util/DataLayer"));
|
|
58
58
|
const ConfirmationStepErrorModal_1 = require("./ConfirmationStepErrorModal");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationStepContextWrapper.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor, IBookingCreateErrorResponse } from '@roomstay/core';\nimport * as Sentry from '@sentry/browser';\nimport { Severity } from '@sentry/types';\nimport React, { FC, PropsWithChildren, useContext, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\nimport API from '@/api/BookingAPI';\nimport { OverlayLoader } from '@/components/generic/loader/OverlayLoader';\nimport { ConfirmationStepContext } from '@/contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { CommittedBookingEvent } from '@/events/views/CommittedBookingEvent';\nimport { PlacedBookingEvent } from '@/events/views/PlacedBookingEvent';\nimport { RolledBackBookingEvent } from '@/events/views/RolledBackBookingEvent';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport { ConfirmationFormValues, FBookGetPaymentDetails, FBookValidateFunction, FBookValidationCallback, IBookValidationResult } from '@/models/Confirmation';\nimport UserProfile from '@/models/UserProfile';\nimport { Translation } from '@/translations/Translation';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport { ConfirmationStepErrorModal } from './ConfirmationStepErrorModal';\n\nconst ConfirmationStepContextProvider = ConfirmationStepContext.Provider;\nexport const ConfirmationStepContextWrapper: FC<PropsWithChildren<any>> = ({ children }) => {\n const { queryPaymentMethod, queryRoomstayId: queryReservationId, queryPlanpayCheckoutId, returnFromPayment, success } = useConfirmationQuery();\n // load the engine context\n const engineContext = useContext(BookingEngineContext);\n\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [loadingStatus, setLoadingStatus] = useState('');\n const { isExternalMemberHotel, memberNumber } = useExternalMember();\n\n const [apiErrorResponse, setApiErrorResponse] = useState<IBookingCreateErrorResponse>();\n const [errorModalLoading, setErrorModalLoading] = useState(false);\n const methods = useForm<ConfirmationFormValues>({\n mode: 'onChange',\n });\n\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n const history = useHistory();\n\n const currentSession = useMemo(() => {\n return engineContext.engine.getInitialSession();\n }, []);\n\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const { raise } = useEvent();\n\n useEffect(() => {\n if (hotel?.requireDeposit) {\n basketContext.getBasketQuoteDetails();\n }\n }, [hotel?.requireDeposit]);\n\n const toUserProfiles = (formValues: ConfirmationFormValues): UserProfile[] => {\n return formValues.userProfiles.map((values) => ({\n FirstName: values.Forename,\n LastName: values.Surname,\n Phone: values.Phone.replace(' ', ''),\n Email: values.Email,\n Address: {\n Line1: values.Address,\n City: values.City,\n PostalCode: values.PostCode,\n Country: values.Country,\n CountryId: values.CountryId,\n CountryCode: values.CountryCode,\n },\n MarketingOptIn: false,\n AuxInputs: values.AuxInputs,\n }));\n };\n\n const validateReservation = async (data: ReservationsDTO): Promise<IBookValidationResult | undefined> => {\n const apiDifferences: BasketRowDifferences[] = [];\n if (data.reservations) {\n data.reservations.forEach((reservation: ReservationDTO, index) => {\n const diff = basketContext.currentBasketRows[index].checkDiffFromReservation(reservation);\n\n if (diff) {\n apiDifferences.push(diff);\n }\n });\n } else {\n Sentry.addBreadcrumb({\n level: Severity.Error,\n message: 'No reservation data: ' + JSON.stringify(data),\n });\n throw new Error('The reservation could not be completed due to an unexpected issue, please try again');\n }\n\n // If there are differences, we want to display them to make sure the booking still needs to proceed\n if (apiDifferences.length || (data.warnings && data.warnings.length)) {\n return {\n differences: apiDifferences,\n warnings: data.warnings as string[],\n };\n }\n };\n\n const onSubmitSuccess = async (data: ReservationsDTO, paymentMethod: EBookingPaymentMethod) => {\n raise(new PlacedBookingEvent(data, basketContext.currentBasketRows));\n\n // If this is a planpay booking, we don't need to do anything else.\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n return;\n }\n\n if (hotel?.cardProcessor === EHotelCardProcessor.Passthrough) {\n await commitReservation?.(data);\n } else {\n if (data.payment?.external?.redirectUrl) {\n redirectOut(data.payment?.external?.redirectUrl);\n }\n }\n };\n\n const onSubmit =\n (getPaymentDetails: FBookGetPaymentDetails, comments?: string, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback) =>\n async (formValues: ConfirmationFormValues): Promise<void> => {\n DataLayer.instance.sendInteraction('Complete Booking', InteractionType.BUTTON, InteractionStep.GUEST_DETAILS);\n setIsLoading(true);\n let data: ReservationsDTO | undefined;\n\n const validateResult = !preValidate || (await preValidate());\n if (!validateResult) {\n setIsLoading(false);\n return;\n }\n\n const payment = await getPaymentDetails();\n const userProfiles = toUserProfiles(formValues);\n\n try {\n data = await API.Reservation.bookNow(\n basketRows,\n userProfiles,\n payment,\n basketAddonRows,\n comments || '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n undefined,\n undefined,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data, {\n userProfiles,\n payment,\n comments: comments || '',\n });\n\n const validationResult = await validateReservation(data);\n if (validationResult) {\n setIsLoading(false);\n onPostValidationError?.(validationResult);\n } else {\n await onSubmitSuccess(data, payment.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n }\n };\n\n const isBackFromPlanpay = !!queryPlanpayCheckoutId && !!queryReservationId && !!queryPaymentMethod;\n const isBackFromExternalPayment = !!returnFromPayment && (!!success || !isBackFromPlanpay) && !!queryReservationId;\n\n const parseReservationIdsFromData = (data: ReservationsDTO) => {\n return data?.reservations?.map((reservation) => reservation.reservationNumber);\n };\n\n const commitReservation = async (resData: ReservationsDTO, statusUpdate?: string) => {\n try {\n if (statusUpdate) {\n setLoadingStatus(statusUpdate);\n }\n\n setIsLoading(true);\n\n if (resData) {\n const reservationIds = parseReservationIdsFromData(resData);\n if (reservationIds.length) {\n try {\n const response = await API.Reservation.commit(reservationIds, resData.itineraryNumber, hotel?.hotelID as string, queryPlanpayCheckoutId || undefined);\n try {\n DataLayer.instance.sendReservationConfirmed(basketContext.getAllValidRows(), basketContext.basketAddonRows, response);\n } catch (ex) {\n Sentry.captureException('Failed to read reservations from GTM code: ' + JSON.stringify(ex));\n }\n basketContext.checkedOut(response);\n raise(new CommittedBookingEvent(resData, basketContext.currentBasketRows));\n } catch (error: any) {\n setApiErrorResponse(error);\n }\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation IDs found when attempting to commit: ' + JSON.stringify(resData));\n }\n }\n } catch (ex) {\n console.error(ex);\n Sentry.captureException(ex);\n }\n\n setIsLoading(false);\n };\n\n const rollbackReservation = async () => {\n if (!basketContext.reservationData) return;\n\n try {\n const reservationIds = parseReservationIdsFromData(basketContext.reservationData);\n if (reservationIds.length) {\n setIsLoading(true);\n await API.Reservation.rollback(reservationIds, basketContext.reservationData.itineraryNumber, hotel?.hotelID as string);\n raise(new RolledBackBookingEvent(basketContext.reservationData));\n } else {\n Sentry.captureException('No reservation IDs found when attempting to rollback: ' + JSON.stringify(basketContext.reservationData));\n }\n } catch (ex) {\n console.log('Failed to rollback reservations');\n Sentry.captureException(ex);\n } finally {\n basketContext.rollback();\n setIsLoading(false);\n }\n };\n\n const book = async (getPaymentDetails: FBookGetPaymentDetails, comments?: string, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback) => {\n await methods.handleSubmit(onSubmit(getPaymentDetails, comments, preValidate, onPostValidationError))();\n };\n\n const redirectOut = (targetUrl: string, stateUpdate?: string) => {\n setIsLoading(true);\n if (stateUpdate) {\n setLoadingStatus(stateUpdate);\n }\n\n window.location.href = targetUrl;\n };\n\n const onRetryBooking = async () => {\n setErrorModalLoading(true);\n\n const resRequest = currentSession?.reservationRequest;\n const roomstayId = currentSession?.reservation?.roomstayId;\n\n if (!resRequest || !roomstayId) {\n return null; // TODO: Handle me please\n }\n\n try {\n const data = await API.Reservation.bookNow(\n basketRows,\n resRequest.userProfiles,\n resRequest.payment,\n basketAddonRows,\n '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n true,\n roomstayId,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data);\n const validationResult = await validateReservation(data);\n\n if (validationResult) {\n setIsLoading(false);\n } else {\n await onSubmitSuccess(data, resRequest.payment?.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n setErrorModalLoading(false);\n }\n };\n\n const onErrorModalClose = async () => {\n setErrorModalLoading(true);\n await rollbackReservation();\n const params = new URLSearchParams(window.location.search);\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n\n window.location.reload();\n };\n\n return (\n <FormProvider {...methods}>\n <ConfirmationStepContextProvider\n value={{\n book,\n commitReservation,\n rollbackReservation,\n redirectOut,\n setLoadingStatus,\n\n isLoading,\n isBackFromPlanpay,\n isBackFromExternalPayment,\n }}\n >\n {isLoading && <OverlayLoader isFullscreen label={loadingStatus} />}\n <ConfirmationStepErrorModal onRetry={onRetryBooking} onClose={onErrorModalClose} errorData={apiErrorResponse} isLoading={errorModalLoading} />\n\n {children}\n </ConfirmationStepContextProvider>\n </FormProvider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ConfirmationStepContextWrapper.js","sourceRoot":"/","sources":["src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, ErrorHandler } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelCardProcessor, IBookingCreateErrorResponse } from '@roomstay/core';\nimport * as Sentry from '@sentry/browser';\nimport { Severity } from '@sentry/types';\nimport React, { FC, PropsWithChildren, useContext, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\nimport API from '@/api/BookingAPI';\nimport { OverlayLoader } from '@/components/generic/loader/OverlayLoader';\nimport { ConfirmationStepContext } from '@/contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { CommittedBookingEvent } from '@/events/views/CommittedBookingEvent';\nimport { PlacedBookingEvent } from '@/events/views/PlacedBookingEvent';\nimport { RolledBackBookingEvent } from '@/events/views/RolledBackBookingEvent';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport { useExternalMember } from '@/hooks/useExternalMember';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport { ConfirmationFormValues, FBookGetPaymentDetails, FBookValidateFunction, FBookValidationCallback, IBookValidationResult } from '@/models/Confirmation';\nimport UserProfile from '@/models/UserProfile';\nimport { Translation } from '@/translations/Translation';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport { ConfirmationStepErrorModal } from './ConfirmationStepErrorModal';\n\nconst ConfirmationStepContextProvider = ConfirmationStepContext.Provider;\nexport const ConfirmationStepContextWrapper: FC<PropsWithChildren<any>> = ({ children }) => {\n const { queryPaymentMethod, queryRoomstayId: queryReservationId, queryPlanpayCheckoutId, returnFromPayment, success } = useConfirmationQuery();\n // load the engine context\n const engineContext = useContext(BookingEngineContext);\n\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [loadingStatus, setLoadingStatus] = useState('');\n const { isExternalMemberHotel, memberNumber } = useExternalMember();\n\n const [apiErrorResponse, setApiErrorResponse] = useState<IBookingCreateErrorResponse>();\n const [errorModalLoading, setErrorModalLoading] = useState(false);\n const methods = useForm<ConfirmationFormValues>({\n mode: 'onChange',\n });\n\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n const history = useHistory();\n\n const currentSession = useMemo(() => {\n return engineContext.engine.getInitialSession();\n }, []);\n\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const { raise } = useEvent();\n\n useEffect(() => {\n if (hotel?.requireDeposit) {\n basketContext.getBasketQuoteDetails();\n }\n }, [hotel?.requireDeposit]);\n\n const toUserProfiles = (formValues: ConfirmationFormValues): UserProfile[] => {\n return formValues.userProfiles.map((values) => ({\n FirstName: values.Forename,\n LastName: values.Surname,\n Phone: values.Phone.replace(' ', ''),\n Email: values.Email,\n Address: {\n Line1: values.Address,\n City: values.City,\n PostalCode: values.PostCode,\n Country: values.Country,\n CountryId: values.CountryId,\n CountryCode: values.CountryCode,\n },\n MarketingOptIn: false,\n AuxInputs: values.AuxInputs,\n }));\n };\n\n const validateReservation = async (data: ReservationsDTO): Promise<IBookValidationResult | undefined> => {\n const apiDifferences: BasketRowDifferences[] = [];\n if (data.reservations) {\n data.reservations.forEach((reservation: ReservationDTO, index) => {\n const diff = basketContext.currentBasketRows[index].checkDiffFromReservation(reservation);\n\n if (diff) {\n apiDifferences.push(diff);\n }\n });\n } else {\n Sentry.addBreadcrumb({\n level: Severity.Error,\n message: 'No reservation data: ' + JSON.stringify(data),\n });\n throw new Error('The reservation could not be completed due to an unexpected issue, please try again');\n }\n\n // If there are differences, we want to display them to make sure the booking still needs to proceed\n if (apiDifferences.length || (data.warnings && data.warnings.length)) {\n return {\n differences: apiDifferences,\n warnings: data.warnings as string[],\n };\n }\n };\n\n const onSubmitSuccess = async (data: ReservationsDTO, paymentMethod: EBookingPaymentMethod) => {\n raise(new PlacedBookingEvent(data, basketContext.currentBasketRows));\n\n // If this is a planpay booking, we don't need to do anything else.\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n return;\n }\n\n if (hotel?.cardProcessor === EHotelCardProcessor.Passthrough) {\n await commitReservation?.(data);\n } else {\n if (data.payment?.external?.redirectUrl) {\n redirectOut(data.payment?.external?.redirectUrl);\n }\n }\n };\n\n const onSubmit =\n (getPaymentDetails: FBookGetPaymentDetails, comments?: string, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback) =>\n async (formValues: ConfirmationFormValues): Promise<void> => {\n DataLayer.instance.sendInteraction('Complete Booking', InteractionType.BUTTON, InteractionStep.GUEST_DETAILS);\n setIsLoading(true);\n let data: ReservationsDTO | undefined;\n\n const validateResult = !preValidate || (await preValidate());\n if (!validateResult) {\n setIsLoading(false);\n return;\n }\n\n const payment = await getPaymentDetails();\n const userProfiles = toUserProfiles(formValues);\n\n try {\n data = await API.Reservation.bookNow(\n basketRows,\n userProfiles,\n payment,\n basketAddonRows,\n comments || '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n undefined,\n undefined,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data, {\n userProfiles,\n payment,\n comments: comments || '',\n });\n\n const validationResult = await validateReservation(data);\n if (validationResult) {\n setIsLoading(false);\n onPostValidationError?.(validationResult);\n } else {\n await onSubmitSuccess(data, payment.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n }\n };\n\n const isBackFromPlanpay = !!queryPlanpayCheckoutId && !!queryReservationId && !!queryPaymentMethod;\n const isBackFromExternalPayment = !!returnFromPayment && (!!success || !isBackFromPlanpay) && !!queryReservationId;\n\n const parseReservationIdsFromData = (data: ReservationsDTO) => {\n return data?.reservations?.map((reservation) => reservation.reservationNumber);\n };\n\n const commitReservation = async (resData: ReservationsDTO, statusUpdate?: string) => {\n try {\n if (statusUpdate) {\n setLoadingStatus(statusUpdate);\n }\n\n setIsLoading(true);\n\n if (resData) {\n const reservationIds = parseReservationIdsFromData(resData);\n if (reservationIds.length) {\n try {\n const response = await API.Reservation.commit(reservationIds, resData.itineraryNumber, hotel?.hotelID as string, queryPlanpayCheckoutId || undefined);\n try {\n DataLayer.instance.sendReservationConfirmed(basketContext.getAllValidRows(), basketContext.basketAddonRows, response);\n } catch (ex) {\n Sentry.captureException('Failed to read reservations from GTM code: ' + JSON.stringify(ex));\n }\n basketContext.checkedOut(response);\n raise(new CommittedBookingEvent(resData, basketContext.currentBasketRows));\n } catch (error: any) {\n setApiErrorResponse(error);\n }\n } else {\n ErrorHandler.add({ message: t(Translation.Step.Confirmation.UnexpectedErrorOnCommittingReservation) });\n Sentry.captureException('No reservation IDs found when attempting to commit: ' + JSON.stringify(resData));\n }\n }\n } catch (ex) {\n console.error(ex);\n Sentry.captureException(ex);\n }\n\n setIsLoading(false);\n };\n\n const rollbackReservation = async () => {\n if (!basketContext.reservationData) return;\n\n try {\n const reservationIds = parseReservationIdsFromData(basketContext.reservationData);\n if (reservationIds.length) {\n setIsLoading(true);\n await API.Reservation.rollback(reservationIds, basketContext.reservationData.itineraryNumber, hotel?.hotelID as string);\n raise(new RolledBackBookingEvent(basketContext.reservationData));\n } else {\n Sentry.captureException('No reservation IDs found when attempting to rollback: ' + JSON.stringify(basketContext.reservationData));\n }\n } catch (ex) {\n console.log('Failed to rollback reservations');\n Sentry.captureException(ex);\n } finally {\n basketContext.rollback();\n setIsLoading(false);\n }\n };\n\n const book = async (getPaymentDetails: FBookGetPaymentDetails, comments?: string, preValidate?: FBookValidateFunction, onPostValidationError?: FBookValidationCallback) => {\n await methods.handleSubmit(onSubmit(getPaymentDetails, comments, preValidate, onPostValidationError))();\n };\n\n const redirectOut = (targetUrl: string, stateUpdate?: string) => {\n setIsLoading(true);\n if (stateUpdate) {\n setLoadingStatus(stateUpdate);\n }\n\n window.location.href = targetUrl;\n };\n\n const onRetryBooking = async () => {\n setErrorModalLoading(true);\n\n const resRequest = currentSession?.reservationRequest;\n const roomstayId = currentSession?.reservation?.roomstayId;\n\n if (!resRequest || !roomstayId) {\n return null; // TODO: Handle me please\n }\n\n try {\n const data = await API.Reservation.bookNow(\n basketRows,\n resRequest.userProfiles,\n resRequest.payment,\n basketAddonRows,\n '',\n hotel?.hotelID as string,\n engineContext.sessionProvider.getCurrentSessionID().toString(),\n undefined,\n true,\n roomstayId,\n isExternalMemberHotel ? memberNumber : undefined\n );\n await basketContext.booked(data);\n const validationResult = await validateReservation(data);\n\n if (validationResult) {\n setIsLoading(false);\n } else {\n await onSubmitSuccess(data, resRequest.payment?.Method);\n }\n } catch (error: any) {\n setApiErrorResponse(error as IBookingCreateErrorResponse);\n } finally {\n setIsLoading(false);\n setErrorModalLoading(false);\n }\n };\n\n const onErrorModalClose = async () => {\n setErrorModalLoading(true);\n await rollbackReservation();\n const params = new URLSearchParams(window.location.search);\n window.history.replaceState({}, '', `${window.location.pathname}?${params}`);\n\n window.location.reload();\n };\n\n return (\n <FormProvider {...methods}>\n <ConfirmationStepContextProvider\n value={{\n book,\n commitReservation,\n rollbackReservation,\n redirectOut,\n setLoadingStatus,\n\n isLoading,\n isBackFromPlanpay,\n isBackFromExternalPayment,\n }}\n >\n {isLoading && <OverlayLoader isFullscreen label={loadingStatus} />}\n <ConfirmationStepErrorModal onRetry={onRetryBooking} onClose={onErrorModalClose} errorData={apiErrorResponse} isLoading={errorModalLoading} />\n\n {children}\n </ConfirmationStepContextProvider>\n </FormProvider>\n );\n};\n"]}
|
|
@@ -84,6 +84,9 @@ const useHotelOverrides = () => {
|
|
|
84
84
|
promoCodeAlertType: !!(overrides === null || overrides === void 0 ? void 0 : overrides.showPromoCodeAlert) ? overrides === null || overrides === void 0 ? void 0 : overrides.promoCodeAlertType : undefined,
|
|
85
85
|
};
|
|
86
86
|
}, [overrides === null || overrides === void 0 ? void 0 : overrides.showPromoCodeAlert, overrides === null || overrides === void 0 ? void 0 : overrides.promoCodeAlertType]);
|
|
87
|
+
const pageTitle = (0, react_1.useMemo)(() => {
|
|
88
|
+
return overrides === null || overrides === void 0 ? void 0 : overrides.pageTitle;
|
|
89
|
+
}, [overrides === null || overrides === void 0 ? void 0 : overrides.pageTitle]);
|
|
87
90
|
(0, react_1.useEffect)(() => {
|
|
88
91
|
fetchApiData();
|
|
89
92
|
}, [fetchApiData]);
|
|
@@ -98,6 +101,7 @@ const useHotelOverrides = () => {
|
|
|
98
101
|
yearDisplayOption,
|
|
99
102
|
showPromoCodeAlert,
|
|
100
103
|
promoCodeAlertType,
|
|
104
|
+
pageTitle,
|
|
101
105
|
};
|
|
102
106
|
};
|
|
103
107
|
const HotelOverridesContextWrapper = ({ children }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO>({});\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n loadingSet(false);\n overridesSet(apiData);\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n const { showYearOnCalendar, yearDisplayOption } = useMemo(() => {\n return {\n showYearOnCalendar: !!overrides?.showYearOnCalendar,\n yearDisplayOption: !!overrides?.showYearOnCalendar ? overrides?.yearDisplayOption : '',\n };\n }, [overrides?.showYearOnCalendar, overrides?.yearDisplayOption]);\n\n const { showPromoCodeAlert, promoCodeAlertType } = useMemo(() => {\n return {\n showPromoCodeAlert: !!overrides?.showPromoCodeAlert,\n promoCodeAlertType: !!overrides?.showPromoCodeAlert ? overrides?.promoCodeAlertType : undefined,\n };\n }, [overrides?.showPromoCodeAlert, overrides?.promoCodeAlertType]);\n\n const pageTitle = useMemo(() => {\n return overrides?.pageTitle;\n }, [overrides?.pageTitle]);\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n showYearOnCalendar,\n yearDisplayOption,\n showPromoCodeAlert,\n promoCodeAlertType,\n pageTitle,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n"]}
|
|
@@ -19,6 +19,7 @@ export interface BookingWizardEngineConfig extends BaseEngineConfig, ShowYearOnC
|
|
|
19
19
|
hideGuestSelect?: boolean;
|
|
20
20
|
hidePromocode?: boolean;
|
|
21
21
|
dateFormat?: string;
|
|
22
|
+
hideTooltips?: boolean;
|
|
22
23
|
defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & {
|
|
23
24
|
checkIn?: string;
|
|
24
25
|
checkout?: string;
|