@roomstay/frontend 2.6.57 → 2.6.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/493.bundle.js +1 -1
  2. package/dist/537.bundle.js +1 -0
  3. package/dist/main.bundle.js +1 -1
  4. package/dist/src/api/AvailabilityAPI.js +8 -6
  5. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  6. package/dist/src/components/generic/Event/EventCard.js +6 -2
  7. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  8. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +19 -4
  9. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  10. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +1 -0
  11. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +2 -2
  12. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  13. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +3 -2
  14. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +10 -10
  15. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  16. package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
  17. package/dist/src/components/generic/date/DatePicker.js +7 -3
  18. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  19. package/dist/src/components/generic/date/DatePickerDay.js +13 -3
  20. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  21. package/dist/src/components/reservation/ReservationItem.js +5 -2
  22. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  23. package/dist/src/components/reservation/ReservationList.js +1 -1
  24. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  25. package/dist/src/components/steps/confirmation/PaymentInformation.js +4 -1
  26. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  27. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +7 -4
  28. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  29. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +3 -1
  30. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  31. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
  32. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  33. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
  34. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  35. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +9 -7
  36. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  37. package/dist/src/contexts/DatePickerContext.d.ts +1 -0
  38. package/dist/src/contexts/DatePickerContext.js.map +1 -1
  39. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +3 -0
  40. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  41. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +3 -3
  42. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  43. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +1 -1
  44. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  45. package/dist/src/handlers/payment/PaymentHandler.d.ts +1 -0
  46. package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
  47. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +13 -35
  48. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  49. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  50. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  51. package/dist/src/models/BasketRow.d.ts +3 -6
  52. package/dist/src/models/BasketRow.js +11 -15
  53. package/dist/src/models/BasketRow.js.map +1 -1
  54. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -0
  55. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  56. package/dist/src/models/Confirmation.d.ts +1 -2
  57. package/dist/src/models/Confirmation.js.map +1 -1
  58. package/dist/src/models/Room/Room.d.ts +7 -0
  59. package/dist/src/models/Room/Room.js +13 -0
  60. package/dist/src/models/Room/Room.js.map +1 -1
  61. package/dist/src/models/Room/RoomRate.js +3 -0
  62. package/dist/src/models/Room/RoomRate.js.map +1 -1
  63. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  64. package/dist/src/pages/findReservation/FindReservationResults.js +12 -8
  65. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  66. package/dist/src/providers/RoomstayThemeEngine.d.ts +1 -1
  67. package/dist/src/providers/RoomstayThemeEngine.js +20 -5
  68. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  69. package/dist/src/stories/RadioButtonGroup.stories.d.ts +1 -1
  70. package/dist/src/util/Analytics/GoogleAnalytics4.js +27 -12
  71. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  72. package/dist/src/util/Analytics/UniversalAnalytics.js +3 -3
  73. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  74. package/dist/src/util/DataLayer.d.ts +5 -1
  75. package/dist/src/util/DataLayer.js +9 -2
  76. package/dist/src/util/DataLayer.js.map +1 -1
  77. package/dist/src/util/EventsHelper.d.ts +4 -1
  78. package/dist/src/util/EventsHelper.js +15 -4
  79. package/dist/src/util/EventsHelper.js.map +1 -1
  80. package/dist/test.bundle.js +1 -1
  81. package/dist/vendors.bundle.js +1 -1
  82. package/package.json +2 -2
  83. package/dist/586.bundle.js +0 -1
  84. package/dist/850.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButtonGroup.js","sourceRoot":"/","sources":["src/components/generic/RadioButtonGroup/RadioButtonGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactElement, ReactNode, useState } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport { RadioButton } from '@/components/generic/RadioButtonGroup/RadioButton';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\n\nimport styles from './RadioButtonGroup.module.scss';\n\nexport interface IRadioButtonOption<TValue extends string = string> {\n value: TValue;\n label?: ReactNode;\n disabled?: boolean;\n /** Enabled a tooltip that gives more info on why the field is disabled */\n disabledReason?: string;\n renderContent?: () => ReactNode;\n options?: IRadioButtonOption<TValue>[];\n}\n\nexport interface IRadioButtonGroupProps<TValue extends string = string> {\n options?: IRadioButtonOption<TValue>[];\n value?: TValue;\n onChange?: (value: TValue) => void;\n renderChildrenContent?: boolean;\n}\n\nconst Option = <TValue extends string = string>({\n option: optionProp,\n value: valueProp,\n onChange,\n renderChildrenContent,\n}: {\n option: IRadioButtonOption<TValue>;\n value?: TValue;\n onChange?: (value: TValue) => void;\n renderChildrenContent?: boolean;\n}): ReactElement | null => {\n const options = optionProp.options;\n const isGroup = !!options?.length;\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n const [open, setOpen] = useState<boolean>(false);\n const option: IRadioButtonOption<TValue> | undefined = isGroup && valueProp ? options.find(({ value }) => value === valueProp) || optionProp : optionProp;\n const radioButton = (\n <RadioButton\n headerRef={setRef}\n className={styles.item}\n key={option?.value}\n checked={!option?.disabled && option?.value === valueProp}\n onChange={() => {\n if (option?.disabled) return;\n if (isGroup) setOpen(!open);\n else if (option?.value && option?.value !== valueProp) onChange?.(option.value);\n }}\n label={option?.label}\n disabled={option?.disabled}\n renderContent={option?.renderContent}\n />\n );\n\n if (option?.disabled && option?.disabledReason) {\n return (\n <Tooltip key={option?.value} wrapperClasses={styles.wrapper} title={option?.disabledReason}>\n {radioButton}\n </Tooltip>\n );\n }\n\n return (\n <>\n <div key={option?.value} className={styles.wrapper}>\n {radioButton}\n {options && (\n <div className={styles.childrenIndicator}>\n <Icon size=\"24px\" icon={IconType.Dropdown} />\n </div>\n )}\n </div>\n {options && (\n <Overlay\n onClose={() => setOpen(false)}\n className={styles.overlay}\n hideStyles\n containerClassName=\"u-w-100\"\n open={open}\n followElement={ref || undefined}\n offset={[0, 0]}\n placement=\"top-start\"\n >\n <RadioButtonGroup\n options={options.map((option) => {\n const { renderContent, ...rest } = option;\n if (!renderChildrenContent) return rest;\n return option;\n })}\n onChange={(value) => {\n onChange?.(value);\n setOpen(false);\n }}\n value={valueProp}\n />\n </Overlay>\n )}\n </>\n );\n};\n\nconst RadioButtonGroup = <TValue extends string = string>({\n options = [],\n value: valueProp,\n onChange,\n renderChildrenContent,\n}: IRadioButtonGroupProps<TValue>): ReactElement | null => {\n return (\n <div className={styles.root}>\n {options.map((rawOption) => (\n <Option key={rawOption.value} option={rawOption} value={valueProp} onChange={onChange} renderChildrenContent={renderChildrenContent} />\n ))}\n </div>\n );\n};\n\nexport default RadioButtonGroup;\n"]}
1
+ {"version":3,"file":"RadioButtonGroup.js","sourceRoot":"/","sources":["src/components/generic/RadioButtonGroup/RadioButtonGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactElement, ReactNode, useState } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport { RadioButton } from '@/components/generic/RadioButtonGroup/RadioButton';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\n\nimport styles from './RadioButtonGroup.module.scss';\n\nexport interface IRadioButtonOption<TValue extends string = string> {\n value: TValue;\n label?: ReactNode;\n disabled?: boolean;\n /** Enabled a tooltip that gives more info on why the field is disabled */\n disabledReason?: string;\n renderContent?: () => ReactNode;\n options?: IRadioButtonOption<TValue>[];\n}\n\nexport interface IRadioButtonGroupProps<TValue extends string = string> {\n options?: IRadioButtonOption<TValue>[];\n value?: TValue;\n onChange?: (value: TValue, optionValue?: TValue) => void;\n renderChildrenContent?: boolean;\n isSubGroup?: boolean;\n}\n\nconst Option = <TValue extends string = string>({\n option: optionProp,\n value: valueProp,\n onChange,\n renderChildrenContent,\n isSubOption,\n}: {\n option: IRadioButtonOption<TValue>;\n value?: TValue;\n onChange?: (value: TValue, optionValue?: TValue) => void;\n renderChildrenContent?: boolean;\n isSubOption?: boolean;\n}): JSX.Element => {\n const options = optionProp.options;\n const isGroup = !!options?.length;\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n const [open, setOpen] = useState<boolean>(false);\n const option: IRadioButtonOption<TValue> | undefined = isGroup && valueProp ? options.find(({ value }) => value === valueProp) || optionProp : optionProp;\n const radioButton = (\n <RadioButton\n headerRef={setRef}\n className={styles.item}\n style={isSubOption ? undefined : { paddingRight: '35px' }}\n key={option?.value}\n checked={!option?.disabled && option?.value === valueProp}\n onChange={() => {\n if (option?.disabled) return;\n if (isGroup) setOpen(!open);\n else if (option?.value && option?.value !== valueProp) onChange?.(option.value, optionProp.value);\n }}\n label={option?.label}\n disabled={option?.disabled}\n renderContent={option?.renderContent}\n />\n );\n\n if (option?.disabled && option?.disabledReason) {\n return (\n <Tooltip key={option?.value} wrapperClasses={styles.wrapper} title={option?.disabledReason}>\n {radioButton}\n </Tooltip>\n );\n }\n\n return (\n <>\n <div key={option?.value} className={styles.wrapper}>\n {radioButton}\n {!isSubOption && (\n <div\n className={styles.childrenIndicator}\n style={(!options && option?.value === valueProp) || (options && open) ? { transform: 'scaleY(-1) translateY(2px)' } : undefined}\n >\n <Icon size=\"24px\" icon={IconType.Dropdown} />\n </div>\n )}\n </div>\n {options && (\n <Overlay\n onClose={() => setOpen(false)}\n className={styles.overlay}\n hideStyles\n containerClassName=\"u-w-100\"\n open={open}\n followElement={ref || undefined}\n offset={[0, 0]}\n placement=\"bottom-start\"\n >\n <RadioButtonGroup\n options={options.map((option) => {\n const { renderContent, ...rest } = option;\n if (!renderChildrenContent) return rest;\n return option;\n })}\n onChange={(subValue) => {\n onChange?.(optionProp.value, subValue);\n setOpen(false);\n }}\n value={valueProp}\n isSubGroup\n />\n </Overlay>\n )}\n </>\n );\n};\n\nconst RadioButtonGroup = <TValue extends string = string>({\n options = [],\n value: valueProp,\n onChange,\n renderChildrenContent,\n isSubGroup,\n}: IRadioButtonGroupProps<TValue>): ReactElement | null => {\n return (\n <div className={styles.root}>\n {options.map((rawOption) => (\n <Option key={rawOption.value} option={rawOption} value={valueProp} onChange={onChange} renderChildrenContent={renderChildrenContent} isSubOption={isSubGroup} />\n ))}\n </div>\n );\n};\n\nexport default RadioButtonGroup;\n"]}
@@ -18,5 +18,10 @@ export interface DatePickerProps {
18
18
  }) => void;
19
19
  readOnly?: boolean;
20
20
  className?: string;
21
+ /**
22
+ * Filters availability/calendar results by the provided room code.
23
+ * If undefined, falls back to the room code from the selected basket row.
24
+ */
25
+ roomCode?: string;
21
26
  }
22
27
  export default function DatePicker(props: DatePickerProps): JSX.Element;
@@ -100,14 +100,17 @@ function DatePicker(props) {
100
100
  arrivalMinNightStay: null,
101
101
  arrivalMaxNightStay: null,
102
102
  });
103
+ const { selectedBasketRow } = basketContext;
104
+ const roomCode = (0, react_1.useMemo)(() => {
105
+ var _a, _b;
106
+ return (_b = (_a = props === null || props === void 0 ? void 0 : props.roomCode) !== null && _a !== void 0 ? _a : selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getRoomCode()) !== null && _b !== void 0 ? _b : '';
107
+ }, [props === null || props === void 0 ? void 0 : props.roomCode, selectedBasketRow]);
103
108
  const onClickDate = (newDate) => __awaiter(this, void 0, void 0, function* () {
104
109
  let newPickingState = null;
105
- const selectedBasketRow = basketContext.selectedBasketRow;
106
110
  const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;
107
111
  const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;
108
112
  const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;
109
113
  const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';
110
- const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';
111
114
  const newDatePrice = yield BookingAPI_1.default.Availability.getCheapestPriceForDay(newDate, adults, children, infants, promoCode, roomCode, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber, false);
112
115
  switch (pickingState) {
113
116
  default:
@@ -237,12 +240,13 @@ function DatePicker(props) {
237
240
  arrivalNightStay,
238
241
  nightStayValidation,
239
242
  nightStayRequirements,
243
+ roomCode: roomCode,
240
244
  };
241
245
  const printMonths = (0, react_1.useMemo)(() => (react_1.default.createElement(react_1.default.Fragment, null, calendarStyle === 'Month' ? (react_1.default.createElement(react_1.default.Fragment, null,
242
246
  react_1.default.createElement(DatePickerMonth_1.default, { small: props.small, showingMonth: currentMonth, readOnly: props.readOnly }),
243
247
  props.showMultipleMonths && react_1.default.createElement(DatePickerMonth_1.default, { showingMonth: currentMonth.add(1, 'month'), readOnly: props.readOnly }))) : (react_1.default.createElement(react_1.default.Fragment, null,
244
248
  react_1.default.createElement(react_1.default.Suspense, { fallback: react_1.default.createElement(WeekViewSkeleton_1.default, null) },
245
- react_1.default.createElement(DatePickerWeek, null)))))), [currentMonth, props.showMultipleMonths, calendarStyle, props.readOnly]);
249
+ react_1.default.createElement(DatePickerWeek, null)))))), [currentMonth, props.showMultipleMonths, calendarStyle, props.readOnly, roomCode]);
246
250
  const calendarClassNames = (0, classnames_1.default)('diji-calendar', {
247
251
  '--single': !props.showMultipleMonths,
248
252
  '--small': props.small,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport { IArrivalNightStay, INightStayValidation, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { lazy, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs, selectionState?: { validationMinNightStay: number | null; validationMaxNightStay: number | null }) => void;\n\n readOnly?: boolean; //Set to true to disable all event listeners\n className?: string;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useSignedInMember();\n const { t } = useTranslation();\n\n const getInitialMonth = () => props.showMonthOnLoad ?? props.selectedStartDate ?? dayjs();\n const [currentMonth, setCurrentMonth] = useState(getInitialMonth());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n useEffect(() => {\n // Sync selectedStartDate when props.selectedStartDate changes\n setSelectedStartDate(props.selectedStartDate ?? null);\n // Optionally update the calendar's current month based on the new start date, allows the calendar to jump to a different month if `props.selectedStartDate` belongs to another month (currently disabled).\n // setCurrentMonth(getInitialMonth());\n }, [props.selectedStartDate]);\n\n useEffect(() => {\n // Sync selectedEndDate when props.selectedEndDate changes\n setSelectedEndDate(props.selectedEndDate ?? null);\n }, [props.selectedEndDate]);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n const { getLastValidDay, getArrivalNightStay } = useCalendarNightStay({ basketContext });\n const [nightStayValidation, setNightStayValidation] = useState<INightStayValidation>({\n init: false,\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n });\n const [arrivalNightStay, setArrivalNightStay] = useState<IArrivalNightStay>({\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n });\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, infants, promoCode, roomCode, hotel?.hotelID as string, memberNumber, false);\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice?.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n const result = await getArrivalNightStay(newDate);\n setArrivalNightStay(result);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (!newDate) break;\n\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n const result = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n setNightStayValidation(result.nightStayValidation);\n if (!result.isValidNightStay) break;\n\n newPickingState = DateRangePickingState.StartDate;\n setHoveringOverDate(null);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(result.lastValidDay.add(1, 'day'));\n } else {\n setSelectedEndDate(result.lastValidDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((result) => {\n setNightStayValidation(result.nightStayValidation);\n setHoveringOverDate(result.lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs, {\n validationMinNightStay: nightStayValidation.validationMinNightStay,\n validationMaxNightStay: nightStayValidation.validationMaxNightStay,\n });\n }\n }, [selectedEndDate]);\n\n const nightStayRequirements: string[] = useMemo(() => {\n const check: {\n MinNightStayRequired: boolean;\n MaxNightStayRequired: boolean;\n } = {\n MinNightStayRequired: false,\n MaxNightStayRequired: false,\n };\n const options = {\n minNightStay: arrivalNightStay.arrivalMinNightStay,\n maxNightStay: arrivalNightStay.arrivalMaxNightStay,\n };\n if (selectedStartDate) {\n if ((arrivalNightStay?.arrivalMinNightStay && !selectedEndDate) || (nightStayValidation?.validationMinNightStay && selectedEndDate)) {\n check.MinNightStayRequired = true;\n }\n if ((arrivalNightStay?.arrivalMaxNightStay && !selectedEndDate) || (nightStayValidation?.validationMaxNightStay && selectedEndDate)) {\n check.MaxNightStayRequired = true;\n }\n }\n if (check.MinNightStayRequired && check.MaxNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.BothMinMaxNightStayRequired, options)];\n }\n if (check.MinNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.MinNightStayRequired, options)];\n }\n if (check.MaxNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.MaxNightStayRequired, options)];\n }\n return [];\n }, [selectedStartDate, selectedEndDate, arrivalNightStay, nightStayValidation]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n arrivalNightStay,\n nightStayValidation,\n nightStayRequirements,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} readOnly={props.readOnly} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} readOnly={props.readOnly} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle, props.readOnly]\n );\n\n const calendarClassNames = classNames(\n 'diji-calendar',\n {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n },\n props?.className\n );\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n useEffect(() => {\n if (props.selectedStartDate && props.selectedEndDate && !nightStayValidation.init) {\n getLastValidDay(props.selectedStartDate, props.selectedEndDate).then((result) => {\n setNightStayValidation(result.nightStayValidation);\n });\n }\n }, [props.selectedStartDate, props.selectedEndDate]);\n\n useEffect(() => {\n if (props.selectedStartDate) {\n getArrivalNightStay(props.selectedStartDate).then((result) => {\n setArrivalNightStay(result);\n });\n }\n }, [props.selectedStartDate]);\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon\n name=\"Calendar_MothViewButton\"\n icon={IconType.ViewMonth}\n size=\"32px\"\n color={calendarStyle === 'Month' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsMonth}\n />\n <Icon\n name=\"Calendar_WeekViewButton\"\n icon={IconType.ViewWeek}\n size=\"32px\"\n color={calendarStyle === 'Week' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsWeek}\n />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <MinimumNightStayPill />\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <MinimumNightStayPill />\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport { IArrivalNightStay, INightStayValidation, useCalendarNightStay, useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { lazy, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs, selectionState?: { validationMinNightStay: number | null; validationMaxNightStay: number | null }) => void;\n\n readOnly?: boolean; //Set to true to disable all event listeners\n className?: string;\n\n /**\n * Filters availability/calendar results by the provided room code.\n * If undefined, falls back to the room code from the selected basket row.\n */\n roomCode?: string;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useSignedInMember();\n const { t } = useTranslation();\n\n const getInitialMonth = () => props.showMonthOnLoad ?? props.selectedStartDate ?? dayjs();\n const [currentMonth, setCurrentMonth] = useState(getInitialMonth());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n useEffect(() => {\n // Sync selectedStartDate when props.selectedStartDate changes\n setSelectedStartDate(props.selectedStartDate ?? null);\n // Optionally update the calendar's current month based on the new start date, allows the calendar to jump to a different month if `props.selectedStartDate` belongs to another month (currently disabled).\n // setCurrentMonth(getInitialMonth());\n }, [props.selectedStartDate]);\n\n useEffect(() => {\n // Sync selectedEndDate when props.selectedEndDate changes\n setSelectedEndDate(props.selectedEndDate ?? null);\n }, [props.selectedEndDate]);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n const { getLastValidDay, getArrivalNightStay } = useCalendarNightStay({ basketContext });\n const [nightStayValidation, setNightStayValidation] = useState<INightStayValidation>({\n init: false,\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n });\n const [arrivalNightStay, setArrivalNightStay] = useState<IArrivalNightStay>({\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n });\n\n const { selectedBasketRow } = basketContext;\n const roomCode: string = useMemo(() => {\n return props?.roomCode ?? selectedBasketRow?.getRoomCode() ?? '';\n }, [props?.roomCode, selectedBasketRow]);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, infants, promoCode, roomCode, hotel?.hotelID as string, memberNumber, false);\n\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice?.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n const result = await getArrivalNightStay(newDate);\n setArrivalNightStay(result);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (!newDate) break;\n\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n const result = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n setNightStayValidation(result.nightStayValidation);\n if (!result.isValidNightStay) break;\n\n newPickingState = DateRangePickingState.StartDate;\n setHoveringOverDate(null);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(result.lastValidDay.add(1, 'day'));\n } else {\n setSelectedEndDate(result.lastValidDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((result) => {\n setNightStayValidation(result.nightStayValidation);\n setHoveringOverDate(result.lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs, {\n validationMinNightStay: nightStayValidation.validationMinNightStay,\n validationMaxNightStay: nightStayValidation.validationMaxNightStay,\n });\n }\n }, [selectedEndDate]);\n\n const nightStayRequirements: string[] = useMemo(() => {\n const check: {\n MinNightStayRequired: boolean;\n MaxNightStayRequired: boolean;\n } = {\n MinNightStayRequired: false,\n MaxNightStayRequired: false,\n };\n const options = {\n minNightStay: arrivalNightStay.arrivalMinNightStay,\n maxNightStay: arrivalNightStay.arrivalMaxNightStay,\n };\n if (selectedStartDate) {\n if ((arrivalNightStay?.arrivalMinNightStay && !selectedEndDate) || (nightStayValidation?.validationMinNightStay && selectedEndDate)) {\n check.MinNightStayRequired = true;\n }\n if ((arrivalNightStay?.arrivalMaxNightStay && !selectedEndDate) || (nightStayValidation?.validationMaxNightStay && selectedEndDate)) {\n check.MaxNightStayRequired = true;\n }\n }\n if (check.MinNightStayRequired && check.MaxNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.BothMinMaxNightStayRequired, options)];\n }\n if (check.MinNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.MinNightStayRequired, options)];\n }\n if (check.MaxNightStayRequired) {\n return [t(Translation.Step.Date.NightStayRequirement.MaxNightStayRequired, options)];\n }\n return [];\n }, [selectedStartDate, selectedEndDate, arrivalNightStay, nightStayValidation]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n arrivalNightStay,\n nightStayValidation,\n nightStayRequirements,\n\n roomCode: roomCode,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} readOnly={props.readOnly} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} readOnly={props.readOnly} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle, props.readOnly, roomCode]\n );\n\n const calendarClassNames = classNames(\n 'diji-calendar',\n {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n },\n props?.className\n );\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n useEffect(() => {\n if (props.selectedStartDate && props.selectedEndDate && !nightStayValidation.init) {\n getLastValidDay(props.selectedStartDate, props.selectedEndDate).then((result) => {\n setNightStayValidation(result.nightStayValidation);\n });\n }\n }, [props.selectedStartDate, props.selectedEndDate]);\n\n useEffect(() => {\n if (props.selectedStartDate) {\n getArrivalNightStay(props.selectedStartDate).then((result) => {\n setArrivalNightStay(result);\n });\n }\n }, [props.selectedStartDate]);\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon\n name=\"Calendar_MothViewButton\"\n icon={IconType.ViewMonth}\n size=\"32px\"\n color={calendarStyle === 'Month' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsMonth}\n />\n <Icon\n name=\"Calendar_WeekViewButton\"\n icon={IconType.ViewWeek}\n size=\"32px\"\n color={calendarStyle === 'Week' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsWeek}\n />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <MinimumNightStayPill />\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <MinimumNightStayPill />\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
@@ -71,12 +71,14 @@ function DatePickerDay(props) {
71
71
  const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;
72
72
  const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;
73
73
  const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';
74
- const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';
74
+ const roomCode = datePickerContext.roomCode;
75
75
  if (props.day && !isPast) {
76
76
  if (hotel) {
77
77
  setPrice(0);
78
78
  setIsLoading(true);
79
- BookingAPI_1.default.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, hotel.hotelID, memberNumber).then((foundedPrice) => {
79
+ // If dates are selected, the errors from the /availability call take precedence.
80
+ const parseErrors = !datePickerContext.startDate;
81
+ BookingAPI_1.default.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, hotel.hotelID, memberNumber, parseErrors).then((foundedPrice) => {
80
82
  if (!cancelled) {
81
83
  if (foundedPrice) {
82
84
  setPrice(foundedPrice.price);
@@ -97,7 +99,15 @@ function DatePickerDay(props) {
97
99
  return () => {
98
100
  cancelled = true;
99
101
  };
100
- }, [props.day, selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getInfants(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getPromoCode(), memberNumber]);
102
+ }, [
103
+ props.day,
104
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(),
105
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(),
106
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getInfants(),
107
+ selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getPromoCode(),
108
+ datePickerContext.roomCode,
109
+ memberNumber,
110
+ ]);
101
111
  (0, react_1.useEffect)(() => {
102
112
  if (datePickerContext.hoveredMonth) {
103
113
  if (props.unix && datePickerContext.startDate.isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {
@@ -1 +1 @@
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;AAcrC,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;QAC5E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,EAAE;gBACP,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEZ,YAAY,CAAC,IAAI,CAAC,CAAC;gBAEnB,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;oBAClJ,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,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACjB,6BAA6B;YAC7B,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;YAChC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC;YACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;QAED,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,iBAAiB,QAAC,mBAAmB,UAChG,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;QACT,KAAK,CAAC,QAAQ;KACjB,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC;AA3VD,gCA2VC","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 { useSignedInMember } from '@/hooks/useSignedInMember';\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 readOnly?: boolean;\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 } = useSignedInMember();\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 const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, 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 if (!props.readOnly) {\n //Disable all event listeners\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n }\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} forceHideDecimals 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 props.readOnly,\n ]);\n\n return memo;\n}\n"]}
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 { useSignedInMember } from '@/hooks/useSignedInMember';\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 readOnly?: boolean;\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 } = useSignedInMember();\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 const roomCode = datePickerContext.roomCode;\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n\n setIsLoading(true);\n\n // If dates are selected, the errors from the /availability call take precedence.\n const parseErrors = !datePickerContext.startDate;\n\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, roomCode, hotel.hotelID, memberNumber, parseErrors).then(\n (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 );\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [\n props.day,\n selectedBasketRow?.getAdults(),\n selectedBasketRow?.getChildren(),\n selectedBasketRow?.getInfants(),\n selectedBasketRow?.getPromoCode(),\n datePickerContext.roomCode,\n memberNumber,\n ]);\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 if (!props.readOnly) {\n //Disable all event listeners\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n }\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} forceHideDecimals 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 props.readOnly,\n ]);\n\n return memo;\n}\n"]}
@@ -47,6 +47,7 @@ const AccountRoutes_1 = require("../../pages/account/AccountRoutes");
47
47
  const ModifyBookingFeature_1 = __importDefault(require("../../providers/feature/ModifyBookingFeature"));
48
48
  const ImageProvider_1 = require("../../providers/ImageProvider");
49
49
  const Color_1 = require("../../util/Color");
50
+ const EventsHelper_1 = require("../../util/EventsHelper");
50
51
  const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
51
52
  const StepManager_1 = __importDefault(require("../../util/StepManager"));
52
53
  const TextAlignment_1 = require("../../util/TextAlignment");
@@ -63,6 +64,8 @@ const defaultActions = [ReservationAction.MoreDetails];
63
64
  const ReservationItem = (props) => {
64
65
  var _a, _b, _c, _d, _e, _f, _g;
65
66
  const { itineraryItem, disableMarginBottom, actions = defaultActions, showCancelledNotifications = false, defaultEventsExpanded } = props;
67
+ // no events should be shown on “Past Stays” or “Cancelled Stays”
68
+ const hideEvents = (0, EventsHelper_1.isCancelledBooking)(itineraryItem) || (0, EventsHelper_1.isPastBooking)(itineraryItem);
66
69
  const { t } = (0, react_i18next_1.useTranslation)();
67
70
  const context = (0, react_1.useContext)(contexts_1.BookingEngineContext);
68
71
  const { hotel } = (0, hooks_1.useCurrentHotel)();
@@ -175,9 +178,9 @@ const ReservationItem = (props) => {
175
178
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Misc.CheckOut)),
176
179
  react_1.default.createElement(CheckinCheckoutComponent, { translation: Translation_1.Translation.Reservation.Before, value: (_g = itineraryItem === null || itineraryItem === void 0 ? void 0 : itineraryItem.hotel) === null || _g === void 0 ? void 0 : _g.checkOutTime }))),
177
180
  react_1.default.createElement("div", { className: "reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy" }, renderActions())))),
178
- react_1.default.createElement(NoPrint_1.default, null,
181
+ hideEvents ? null : (react_1.default.createElement(NoPrint_1.default, null,
179
182
  react_1.default.createElement("div", { className: "u-marg-top--medium" },
180
- react_1.default.createElement(EventCarouselContainer_1.default, { defaultExpanded: defaultEventsExpanded, itineraryItem: itineraryItem })))));
183
+ react_1.default.createElement(EventCarouselContainer_1.default, { defaultExpanded: defaultEventsExpanded, itineraryItem: itineraryItem }))))));
181
184
  };
182
185
  exports.default = ReservationItem;
183
186
  //# sourceMappingURL=ReservationItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationItem.js","sourceRoot":"/","sources":["src/components/reservation/ReservationItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { IBookingStatus } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport EventCarouselContainer from '@/components/Event/EventCarouselContainer';\nimport BEButton, { BEButtonProps } from '@/components/generic/BEButton';\nimport Headline, { HeadlineProps } from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NoPrint from '@/components/generic/print/NoPrint';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useCurrentHotel } from '@/hooks';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\nimport { TextAlign } from '@/util/TextAlignment';\nimport TimeHelper from '@/util/TimeHelper';\n\nimport styles from './ReservationItem.module.scss';\n\nexport enum ReservationAction {\n MoreDetails = 'MoreDetails',\n BookAgain = 'BookAgain',\n Cancel = 'Cancel',\n Modify = 'Modify',\n}\n\nexport type ReservationItemProps = {\n itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;\n disableMarginBottom?: boolean;\n actions?: ReservationAction[];\n showCancelledNotifications?: boolean;\n onActionClick?: (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => void;\n defaultEventsExpanded?: boolean;\n};\n\nconst defaultActions: ReservationAction[] = [ReservationAction.MoreDetails];\n\nconst ReservationItem = (props: ReservationItemProps) => {\n const { itineraryItem, disableMarginBottom, actions = defaultActions, showCancelledNotifications = false, defaultEventsExpanded } = props;\n\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const nameSize: HeadlineProps['size'] = isMobile ? 'normal' : 'large';\n\n const CheckinCheckoutComponent = ({ translation, value }: { translation: string; value: string }) => {\n const TextContainer = isMobile ? Text : Headline;\n\n const time = useMemo(() => {\n // Using timeHelper to convert 24hr to 12hr\n return TimeHelper.convert24To12hr(value);\n }, [value]);\n\n return (\n <TextContainer>\n {t(translation)} {time}\n </TextContainer>\n );\n };\n\n const renderActions = () =>\n actions.map((action, index) => {\n const defaultButtonProps: BEButtonProps = {\n mobileWidth: true,\n rounded: true,\n wide: isMobile,\n key: index,\n className: classNames({\n 'u-marg-right@m': index === 0,\n }),\n };\n\n const onActionClick = () => {\n if (props.onActionClick) {\n props.onActionClick(action, itineraryItem);\n }\n };\n\n /**\n * Only renders Cancel/Modify if the booking is NOT cancelled\n */\n if (cancelled && [ReservationAction.Cancel, ReservationAction.Modify].includes(action)) {\n return;\n }\n\n /**\n * Only renders BookAgain if booking IS cancelled\n */\n if (!cancelled && action === ReservationAction.BookAgain) {\n return;\n }\n\n switch (action) {\n case ReservationAction.Modify:\n return ModifyBookingFeature.isActive() ? (\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.ModifyThisRoom)}\n </BEButton>\n ) : null;\n case ReservationAction.Cancel:\n return (\n <BEButton {...defaultButtonProps} danger onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.CancelReservation)}\n </BEButton>\n );\n case ReservationAction.BookAgain:\n return (\n <Link to={StepManager.getFirstStep().getStepUrl()} key={index}>\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick}>\n {t(Translation.Reservation.BookAgain)}\n </BEButton>\n </Link>\n );\n case ReservationAction.MoreDetails:\n return (\n <Link to={`${AccountRoutes.SingleReservation.path}${itineraryItem.bookingId}/item`} key={index}>\n <BEButton {...defaultButtonProps} primary filled icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.MoreDetails)}\n </BEButton>\n </Link>\n );\n }\n });\n\n if (!itineraryItem) {\n return <></>;\n }\n\n const itineraryItemNights = Object.keys(itineraryItem.nights);\n\n const checkInDate = dayjs(itineraryItem.checkInDate);\n const checkOutDate = dayjs(itineraryItem.checkOutDate);\n\n const reservationOccupancy = itineraryItem.adults + (itineraryItem?.children || 0);\n\n const cancelled = itineraryItem.status === IBookingStatus.Cancelled;\n\n const colorProfile = itineraryItem?.hotel?.colors;\n\n return (\n <div id={`reservation-${itineraryItem.id}`} className={classNames({ 'u-marg-bottom--heavy u-marg-bottom@m-': !disableMarginBottom })}>\n {showCancelledNotifications && cancelled && (\n <div className={styles['cancelledNotification']}>\n <div className={styles['cancelledNotification-icon']}>\n <Icon icon={IconType.Error} size=\"44px\" color={Color.Danger} />\n </div>\n <div>\n <Text type={TextType.Small} bold color={Color.Danger} className={styles['cancelledNotification-title']}>\n {t(Translation.Reservation.Notification.ThisRoomIsCancelled.Title)}\n </Text>\n <Trans\n i18nKey={Translation.Reservation.Notification.ThisRoomIsCancelled.Detail}\n components={[<Link key={0} to={AccountRoutes.Help.path} style={{ color: Color.Accent }}></Link>]}\n />\n </div>\n </div>\n )}\n <div className=\"reservation-item-container\">\n {!!colorProfile && (\n <style>\n {`\n #reservation-${itineraryItem.id} {\n ${getAccentOverrideStyleContent(colorProfile)}\n }\n `}\n </style>\n )}\n\n <div className=\"reservation-item\">\n <div className={classNames('reservation-item--image u-border-rounded u-print-none', { 'reservation-item--disabled': cancelled })}>\n <ImageGallerySlider images={itineraryItem.images} imageSize={ImageSize.Medium} />\n <div className=\"reservation-item--floating-date\">\n <Headline size=\"extra-large\" color={cancelled ? Color.DarkGrey : Color.White} align={TextAlign.Center}>\n {checkInDate.format('DD')}\n </Headline>\n <Text type={TextType.Small} color={cancelled ? Color.DarkGrey : Color.White} bold>\n {checkInDate.format('MMM YYYY')}\n </Text>\n </div>\n </div>\n\n <div className=\"reservation-item--content u-pad--heavy u-pad-left-none@m- u-pad-right-none@m- u-pad-bottom-none@m- u-print-pad-left-none\">\n <div className=\"reservation-item--content-title u-marg-bottom--light\">\n {hotel?.hotelID !== itineraryItem.hotelId && (\n <Text color={Color.Accent} size={nameSize} bold>\n {itineraryItem.hotel.name}\n </Text>\n )}\n <Headline bold size={nameSize}>\n {itineraryItem.roomName}\n </Headline>\n </div>\n <div className=\"text-body u-marg-bottom\">{(itineraryItem?.profile?.firstName ?? '') + ' ' + (itineraryItem?.profile?.lastName ?? '')}</div>\n <div className=\"reservation-item--info u-marg-bottom--heavy\">\n <div className=\"u-flex u-flex-gap--light\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <Text type={TextType.Small}>{checkInDate.format('D MMM, YYYY')}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.ArrowRight2} color={Color.Grey} />\n <Text type={TextType.Small}>{checkOutDate.format('D MMM, YYYY')}</Text>\n </div>\n </div>\n <div className=\"u-flex u-flex-gap\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.LateCheckout} color={Color.Grey} />\n <Text type={TextType.Small}>{`${itineraryItemNights.length} night${itineraryItemNights.length > 1 ? 's' : ''}`}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Person} color={Color.Grey} />\n <Text type={TextType.Small}>{`${reservationOccupancy} guest${reservationOccupancy > 1 ? 's' : ''}`}</Text>\n </div>\n </div>\n </div>\n <div className=\"reservation-item--checkin-checkout u-flex justify-content-start u-pad u-border-rounded\">\n <div className=\"u-marg-right--heavy\">\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckIn)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.After} value={itineraryItem?.hotel?.checkInTime} />\n </div>\n <div>\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckOut)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.Before} value={itineraryItem?.hotel?.checkOutTime} />\n </div>\n </div>\n <div className=\"reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy\">{renderActions()}</div>\n </div>\n </div>\n </div>\n <NoPrint>\n <div className=\"u-marg-top--medium\">\n <EventCarouselContainer defaultExpanded={defaultEventsExpanded} itineraryItem={itineraryItem} />\n </div>\n </NoPrint>\n </div>\n );\n};\n\nexport default ReservationItem;\n"]}
1
+ {"version":3,"file":"ReservationItem.js","sourceRoot":"/","sources":["src/components/reservation/ReservationItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { IBookingStatus } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport EventCarouselContainer from '@/components/Event/EventCarouselContainer';\nimport BEButton, { BEButtonProps } from '@/components/generic/BEButton';\nimport Headline, { HeadlineProps } from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NoPrint from '@/components/generic/print/NoPrint';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useCurrentHotel } from '@/hooks';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport { isCancelledBooking, isPastBooking } from '@/util/EventsHelper';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\nimport { TextAlign } from '@/util/TextAlignment';\nimport TimeHelper from '@/util/TimeHelper';\n\nimport styles from './ReservationItem.module.scss';\n\nexport enum ReservationAction {\n MoreDetails = 'MoreDetails',\n BookAgain = 'BookAgain',\n Cancel = 'Cancel',\n Modify = 'Modify',\n}\n\nexport type ReservationItemProps = {\n itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;\n disableMarginBottom?: boolean;\n actions?: ReservationAction[];\n showCancelledNotifications?: boolean;\n onActionClick?: (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => void;\n defaultEventsExpanded?: boolean;\n};\n\nconst defaultActions: ReservationAction[] = [ReservationAction.MoreDetails];\n\nconst ReservationItem = (props: ReservationItemProps) => {\n const { itineraryItem, disableMarginBottom, actions = defaultActions, showCancelledNotifications = false, defaultEventsExpanded } = props;\n\n // no events should be shown on “Past Stays” or “Cancelled Stays”\n const hideEvents = isCancelledBooking(itineraryItem) || isPastBooking(itineraryItem);\n\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const nameSize: HeadlineProps['size'] = isMobile ? 'normal' : 'large';\n\n const CheckinCheckoutComponent = ({ translation, value }: { translation: string; value: string }) => {\n const TextContainer = isMobile ? Text : Headline;\n\n const time = useMemo(() => {\n // Using timeHelper to convert 24hr to 12hr\n return TimeHelper.convert24To12hr(value);\n }, [value]);\n\n return (\n <TextContainer>\n {t(translation)} {time}\n </TextContainer>\n );\n };\n\n const renderActions = () =>\n actions.map((action, index) => {\n const defaultButtonProps: BEButtonProps = {\n mobileWidth: true,\n rounded: true,\n wide: isMobile,\n key: index,\n className: classNames({\n 'u-marg-right@m': index === 0,\n }),\n };\n\n const onActionClick = () => {\n if (props.onActionClick) {\n props.onActionClick(action, itineraryItem);\n }\n };\n\n /**\n * Only renders Cancel/Modify if the booking is NOT cancelled\n */\n if (cancelled && [ReservationAction.Cancel, ReservationAction.Modify].includes(action)) {\n return;\n }\n\n /**\n * Only renders BookAgain if booking IS cancelled\n */\n if (!cancelled && action === ReservationAction.BookAgain) {\n return;\n }\n\n switch (action) {\n case ReservationAction.Modify:\n return ModifyBookingFeature.isActive() ? (\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.ModifyThisRoom)}\n </BEButton>\n ) : null;\n case ReservationAction.Cancel:\n return (\n <BEButton {...defaultButtonProps} danger onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.CancelReservation)}\n </BEButton>\n );\n case ReservationAction.BookAgain:\n return (\n <Link to={StepManager.getFirstStep().getStepUrl()} key={index}>\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick}>\n {t(Translation.Reservation.BookAgain)}\n </BEButton>\n </Link>\n );\n case ReservationAction.MoreDetails:\n return (\n <Link to={`${AccountRoutes.SingleReservation.path}${itineraryItem.bookingId}/item`} key={index}>\n <BEButton {...defaultButtonProps} primary filled icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.MoreDetails)}\n </BEButton>\n </Link>\n );\n }\n });\n\n if (!itineraryItem) {\n return <></>;\n }\n\n const itineraryItemNights = Object.keys(itineraryItem.nights);\n\n const checkInDate = dayjs(itineraryItem.checkInDate);\n const checkOutDate = dayjs(itineraryItem.checkOutDate);\n\n const reservationOccupancy = itineraryItem.adults + (itineraryItem?.children || 0);\n\n const cancelled = itineraryItem.status === IBookingStatus.Cancelled;\n\n const colorProfile = itineraryItem?.hotel?.colors;\n\n return (\n <div id={`reservation-${itineraryItem.id}`} className={classNames({ 'u-marg-bottom--heavy u-marg-bottom@m-': !disableMarginBottom })}>\n {showCancelledNotifications && cancelled && (\n <div className={styles['cancelledNotification']}>\n <div className={styles['cancelledNotification-icon']}>\n <Icon icon={IconType.Error} size=\"44px\" color={Color.Danger} />\n </div>\n <div>\n <Text type={TextType.Small} bold color={Color.Danger} className={styles['cancelledNotification-title']}>\n {t(Translation.Reservation.Notification.ThisRoomIsCancelled.Title)}\n </Text>\n <Trans\n i18nKey={Translation.Reservation.Notification.ThisRoomIsCancelled.Detail}\n components={[<Link key={0} to={AccountRoutes.Help.path} style={{ color: Color.Accent }}></Link>]}\n />\n </div>\n </div>\n )}\n <div className=\"reservation-item-container\">\n {!!colorProfile && (\n <style>\n {`\n #reservation-${itineraryItem.id} {\n ${getAccentOverrideStyleContent(colorProfile)}\n }\n `}\n </style>\n )}\n\n <div className=\"reservation-item\">\n <div className={classNames('reservation-item--image u-border-rounded u-print-none', { 'reservation-item--disabled': cancelled })}>\n <ImageGallerySlider images={itineraryItem.images} imageSize={ImageSize.Medium} />\n <div className=\"reservation-item--floating-date\">\n <Headline size=\"extra-large\" color={cancelled ? Color.DarkGrey : Color.White} align={TextAlign.Center}>\n {checkInDate.format('DD')}\n </Headline>\n <Text type={TextType.Small} color={cancelled ? Color.DarkGrey : Color.White} bold>\n {checkInDate.format('MMM YYYY')}\n </Text>\n </div>\n </div>\n\n <div className=\"reservation-item--content u-pad--heavy u-pad-left-none@m- u-pad-right-none@m- u-pad-bottom-none@m- u-print-pad-left-none\">\n <div className=\"reservation-item--content-title u-marg-bottom--light\">\n {hotel?.hotelID !== itineraryItem.hotelId && (\n <Text color={Color.Accent} size={nameSize} bold>\n {itineraryItem.hotel.name}\n </Text>\n )}\n <Headline bold size={nameSize}>\n {itineraryItem.roomName}\n </Headline>\n </div>\n <div className=\"text-body u-marg-bottom\">{(itineraryItem?.profile?.firstName ?? '') + ' ' + (itineraryItem?.profile?.lastName ?? '')}</div>\n <div className=\"reservation-item--info u-marg-bottom--heavy\">\n <div className=\"u-flex u-flex-gap--light\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <Text type={TextType.Small}>{checkInDate.format('D MMM, YYYY')}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.ArrowRight2} color={Color.Grey} />\n <Text type={TextType.Small}>{checkOutDate.format('D MMM, YYYY')}</Text>\n </div>\n </div>\n <div className=\"u-flex u-flex-gap\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.LateCheckout} color={Color.Grey} />\n <Text type={TextType.Small}>{`${itineraryItemNights.length} night${itineraryItemNights.length > 1 ? 's' : ''}`}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Person} color={Color.Grey} />\n <Text type={TextType.Small}>{`${reservationOccupancy} guest${reservationOccupancy > 1 ? 's' : ''}`}</Text>\n </div>\n </div>\n </div>\n <div className=\"reservation-item--checkin-checkout u-flex justify-content-start u-pad u-border-rounded\">\n <div className=\"u-marg-right--heavy\">\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckIn)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.After} value={itineraryItem?.hotel?.checkInTime} />\n </div>\n <div>\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckOut)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.Before} value={itineraryItem?.hotel?.checkOutTime} />\n </div>\n </div>\n <div className=\"reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy\">{renderActions()}</div>\n </div>\n </div>\n </div>\n\n {hideEvents ? null : (\n <NoPrint>\n <div className=\"u-marg-top--medium\">\n <EventCarouselContainer defaultExpanded={defaultEventsExpanded} itineraryItem={itineraryItem} />\n </div>\n </NoPrint>\n )}\n </div>\n );\n};\n\nexport default ReservationItem;\n"]}
@@ -11,7 +11,7 @@ const ReservationList = (props) => {
11
11
  if (!reservationItems.length) {
12
12
  return react_1.default.createElement(EmptyReservation_1.default, { isCancelled: isCancelled });
13
13
  }
14
- return (react_1.default.createElement("div", null, reservationItems.map((reservationItem, index) => (react_1.default.createElement(ReservationItem_1.default, { key: reservationItem.id, itineraryItem: reservationItem, disableMarginBottom: index === reservationItems.length - 1, actions: actions, onActionClick: props.onActionClick, showCancelledNotifications: props.showCancelledNotifications, defaultEventsExpanded: index === 0 })))));
14
+ return (react_1.default.createElement("div", { className: "reservation-list" }, reservationItems.map((reservationItem, index) => (react_1.default.createElement(ReservationItem_1.default, { key: reservationItem.id, itineraryItem: reservationItem, disableMarginBottom: index === reservationItems.length - 1, actions: actions, onActionClick: props.onActionClick, showCancelledNotifications: props.showCancelledNotifications, defaultEventsExpanded: index === 0 })))));
15
15
  };
16
16
  exports.default = ReservationList;
17
17
  //# sourceMappingURL=ReservationList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationList.js","sourceRoot":"/","sources":["src/components/reservation/ReservationList.tsx"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAE1B,iGAAoG;AACpG,+FAAiG;AASjG,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC1B,OAAO,8BAAC,0BAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,CAAC;KACzD;IAED,OAAO,CACH,2CACK,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9C,8BAAC,yBAAe,IACZ,GAAG,EAAE,eAAe,CAAC,EAAE,EACvB,aAAa,EAAE,eAAe,EAC9B,mBAAmB,EAAE,KAAK,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAC1D,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,0BAA0B,EAAE,KAAK,CAAC,0BAA0B,EAC5D,qBAAqB,EAAE,KAAK,KAAK,CAAC,GACpC,CACL,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC","sourcesContent":["import { IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport React from 'react';\n\nimport EmptyReservation, { EmptyReservationProps } from '@/components/reservation/EmptyReservation';\nimport ReservationItem, { ReservationItemProps } from '@/components/reservation/ReservationItem';\n\ninterface ReservationListProps extends EmptyReservationProps {\n reservationItems: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n actions?: ReservationItemProps['actions'];\n onActionClick?: ReservationItemProps['onActionClick'];\n showCancelledNotifications?: boolean;\n}\n\nconst ReservationList: React.FC<ReservationListProps> = (props) => {\n const { reservationItems = [], actions, isCancelled } = props;\n\n if (!reservationItems.length) {\n return <EmptyReservation isCancelled={isCancelled} />;\n }\n\n return (\n <div>\n {reservationItems.map((reservationItem, index) => (\n <ReservationItem\n key={reservationItem.id}\n itineraryItem={reservationItem}\n disableMarginBottom={index === reservationItems.length - 1}\n actions={actions}\n onActionClick={props.onActionClick}\n showCancelledNotifications={props.showCancelledNotifications}\n defaultEventsExpanded={index === 0}\n />\n ))}\n </div>\n );\n};\n\nexport default ReservationList;\n"]}
1
+ {"version":3,"file":"ReservationList.js","sourceRoot":"/","sources":["src/components/reservation/ReservationList.tsx"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAE1B,iGAAoG;AACpG,+FAAiG;AASjG,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC1B,OAAO,8BAAC,0BAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,CAAC;KACzD;IAED,OAAO,CACH,uCAAK,SAAS,EAAC,kBAAkB,IAC5B,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9C,8BAAC,yBAAe,IACZ,GAAG,EAAE,eAAe,CAAC,EAAE,EACvB,aAAa,EAAE,eAAe,EAC9B,mBAAmB,EAAE,KAAK,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAC1D,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,0BAA0B,EAAE,KAAK,CAAC,0BAA0B,EAC5D,qBAAqB,EAAE,KAAK,KAAK,CAAC,GACpC,CACL,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC","sourcesContent":["import { IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport React from 'react';\n\nimport EmptyReservation, { EmptyReservationProps } from '@/components/reservation/EmptyReservation';\nimport ReservationItem, { ReservationItemProps } from '@/components/reservation/ReservationItem';\n\ninterface ReservationListProps extends EmptyReservationProps {\n reservationItems: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n actions?: ReservationItemProps['actions'];\n onActionClick?: ReservationItemProps['onActionClick'];\n showCancelledNotifications?: boolean;\n}\n\nconst ReservationList: React.FC<ReservationListProps> = (props) => {\n const { reservationItems = [], actions, isCancelled } = props;\n\n if (!reservationItems.length) {\n return <EmptyReservation isCancelled={isCancelled} />;\n }\n\n return (\n <div className=\"reservation-list\">\n {reservationItems.map((reservationItem, index) => (\n <ReservationItem\n key={reservationItem.id}\n itineraryItem={reservationItem}\n disableMarginBottom={index === reservationItems.length - 1}\n actions={actions}\n onActionClick={props.onActionClick}\n showCancelledNotifications={props.showCancelledNotifications}\n defaultEventsExpanded={index === 0}\n />\n ))}\n </div>\n );\n};\n\nexport default ReservationList;\n"]}
@@ -53,7 +53,10 @@ const PaymentInformation = () => {
53
53
  return (react_1.default.createElement(react_hook_form_1.Controller, { control: methods.control, name: "paymentMethod", render: ({ field: { onChange, value } }) => {
54
54
  return (react_1.default.createElement(react_1.default.Fragment, null,
55
55
  react_1.default.createElement("div", null,
56
- react_1.default.createElement(RadioButtonGroup_1.default, { options: currentOptions, value: value, onChange: (code) => {
56
+ react_1.default.createElement(RadioButtonGroup_1.default, { options: currentOptions, value: value, onChange: (code, option) => {
57
+ var _a;
58
+ const handler = availablePaymentHandlers.find((handler) => handler.name === code);
59
+ (_a = handler === null || handler === void 0 ? void 0 : handler.onSubOptionChange) === null || _a === void 0 ? void 0 : _a.call(handler, option);
57
60
  onChange(code);
58
61
  } }))));
59
62
  } }));