@roomstay/frontend 2.8.0 → 2.9.0

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 (116) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/449.bundle.js +1 -1
  6. package/dist/537.bundle.js +1 -1
  7. package/dist/596.bundle.js +1 -0
  8. package/dist/625.bundle.js +1 -1
  9. package/dist/686.bundle.js +1 -1
  10. package/dist/836.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -1
  12. package/dist/main.bundle.js +1 -1
  13. package/dist/src/api/AvailabilityAPI.d.ts +2 -4
  14. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  15. package/dist/src/components/generic/Alert.d.ts +7 -1
  16. package/dist/src/components/generic/Alert.js +6 -0
  17. package/dist/src/components/generic/Alert.js.map +1 -1
  18. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.d.ts +11 -0
  19. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js +24 -0
  20. package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js.map +1 -0
  21. package/dist/src/components/generic/RecentSearchesCard.js +4 -2
  22. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  23. package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
  24. package/dist/src/components/generic/date/DatePicker.js +2 -1
  25. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  26. package/dist/src/components/reservation/ReservationItem.js +3 -2
  27. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  28. package/dist/src/components/steps/DaysSelectedInformer.js +6 -4
  29. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  30. package/dist/src/components/steps/confirmation/RoomContactDetails.js +14 -12
  31. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  32. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +8 -6
  33. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  34. package/dist/src/components/steps/date/StepOneDateRange.js +5 -3
  35. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  36. package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
  37. package/dist/src/components/steps/date/StepOneDateRangePicker.js +3 -3
  38. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  39. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +55 -58
  40. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  41. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -3
  42. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  43. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +4 -3
  44. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  45. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.d.ts +17 -0
  46. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js +117 -0
  47. package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js.map +1 -0
  48. package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +0 -1
  49. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +9 -2
  50. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  51. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +0 -1
  52. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -4
  53. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  54. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +0 -1
  55. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +2 -11
  56. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  57. package/dist/src/components/summary/BEMobileSummary.js +3 -2
  58. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  59. package/dist/src/components/summary/BEMobileSummaryModal.js +3 -2
  60. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  61. package/dist/src/components/summary/BESummaryAddonRow.js +2 -1
  62. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  63. package/dist/src/components/summary/BESummaryRoomRow.js +3 -2
  64. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  65. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -1
  66. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  67. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -4
  68. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  69. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +14 -5
  70. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
  71. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  72. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  73. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  74. package/dist/src/hooks/AutoFocusOnSelect.d.ts +11 -1
  75. package/dist/src/hooks/AutoFocusOnSelect.js +7 -7
  76. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  77. package/dist/src/hooks/index.d.ts +1 -0
  78. package/dist/src/hooks/index.js +1 -0
  79. package/dist/src/hooks/index.js.map +1 -1
  80. package/dist/src/hooks/useAreaAvailability.d.ts +10 -1
  81. package/dist/src/hooks/useAreaAvailability.js +67 -30
  82. package/dist/src/hooks/useAreaAvailability.js.map +1 -1
  83. package/dist/src/hooks/useAuxiliaryFilters.d.ts +8 -0
  84. package/dist/src/hooks/useAuxiliaryFilters.js +55 -0
  85. package/dist/src/hooks/useAuxiliaryFilters.js.map +1 -0
  86. package/dist/src/hooks/useGuestDateFormat.d.ts +11 -0
  87. package/dist/src/hooks/useGuestDateFormat.js +22 -0
  88. package/dist/src/hooks/useGuestDateFormat.js.map +1 -0
  89. package/dist/src/index.d.ts +1 -1
  90. package/dist/src/index.js +2 -1
  91. package/dist/src/index.js.map +1 -1
  92. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  93. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  94. package/dist/src/models/BasketRow.d.ts +6 -11
  95. package/dist/src/models/BasketRow.js +4 -4
  96. package/dist/src/models/BasketRow.js.map +1 -1
  97. package/dist/src/pages/findReservation/ReservationRow.js +3 -2
  98. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  99. package/dist/src/pages/findReservation/ReservationRowModal.js +5 -4
  100. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  101. package/dist/src/pages/steps/StepDate/StepDateComponent.js +13 -7
  102. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  103. package/dist/src/providers/RoomstayThemeEngine.js +2 -0
  104. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  105. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.d.ts +13 -1
  106. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js +20 -0
  107. package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js.map +1 -1
  108. package/dist/src/translations/Translation.d.ts +12 -0
  109. package/dist/src/translations/Translation.js +12 -0
  110. package/dist/src/translations/Translation.js.map +1 -1
  111. package/dist/src/translations/languages/en-gb.js +12 -0
  112. package/dist/src/translations/languages/en-gb.js.map +1 -1
  113. package/dist/test.bundle.js +1 -1
  114. package/dist/vendors.bundle.js +1 -1
  115. package/package.json +2 -2
  116. package/dist/422.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport i18n from 'i18next';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { Language } from '@/providers/LanguageProvider';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n getPricesIncludeFeesMessage: (hotelId: string) => Promise<string>;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO | null>(null);\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n try {\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n\n loadingSet(false);\n overridesSet(apiData);\n } catch (error) {\n console.error('Failed to fetch hotel overrides', error);\n }\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides?.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n const { showYearOnCalendar, yearDisplayOption } = useMemo(() => {\n return {\n showYearOnCalendar: !!overrides?.showYearOnCalendar,\n yearDisplayOption: !!overrides?.showYearOnCalendar ? overrides?.yearDisplayOption : '',\n };\n }, [overrides?.showYearOnCalendar, overrides?.yearDisplayOption]);\n\n const { showPromoCodeAlert, promoCodeAlertType } = useMemo(() => {\n return {\n showPromoCodeAlert: !!overrides?.showPromoCodeAlert,\n promoCodeAlertType: !!overrides?.showPromoCodeAlert ? overrides?.promoCodeAlertType : undefined,\n };\n }, [overrides?.showPromoCodeAlert, overrides?.promoCodeAlertType]);\n\n const pageTitle = useMemo(() => {\n return overrides?.pageTitle;\n }, [overrides?.pageTitle]);\n\n const showPromoCodeDescription: boolean = useMemo(() => {\n return !!overrides?.showPromoCodeDescription;\n }, [overrides?.showPromoCodeDescription]);\n\n const alwaysShowDecimals: boolean = useMemo(() => {\n return !!overrides?.alwaysShowDecimals;\n }, [overrides?.alwaysShowDecimals]);\n\n const roomModalDescSideBySide: boolean = useMemo(() => {\n return !!overrides?.roomModalDescSideBySide;\n }, [overrides?.roomModalDescSideBySide]);\n\n const disableGroupRoomsAllTab = useMemo(() => {\n return !!overrides?.disableGroupRoomsAllTab;\n }, [overrides?.disableGroupRoomsAllTab]);\n\n const orderUnavailableRoomsLast: boolean = useMemo(() => {\n return !!overrides?.orderUnavailableRoomsLast;\n }, [overrides?.orderUnavailableRoomsLast]);\n\n const showPromocodeFieldInCheckout: boolean = useMemo(() => {\n return !!overrides?.showPromocodeFieldInCheckout;\n }, [overrides?.showPromocodeFieldInCheckout]);\n\n const messages = useMemo(() => {\n if (overrides?.messages?.enable) {\n if (overrides.messages.pricesIncludeFeesMessage) {\n i18n.addResource(Language.en_us, 'translation', Translation.Step.Room.RoomInfo.IncludesTaxes, overrides.messages.pricesIncludeFeesMessage);\n }\n\n return overrides.messages;\n }\n return undefined;\n }, [overrides?.messages]);\n\n const getPricesIncludeFeesMessage = async (hotelId: string): Promise<string> => {\n if (hotelId === hotel?.hotelID) {\n const translated = t(Translation.Step.Room.RoomInfo.IncludesTaxes);\n return translated;\n }\n\n try {\n const overrideData = await API.Hotel.fetchOverrides(hotelId);\n const msg = overrideData?.messages?.pricesIncludeFeesMessage || DefaultPricesIncludeFeesMessage;\n return msg;\n } catch {\n return DefaultPricesIncludeFeesMessage;\n }\n };\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n showYearOnCalendar,\n yearDisplayOption,\n showPromoCodeAlert,\n promoCodeAlertType,\n pageTitle,\n showPromoCodeDescription,\n alwaysShowDecimals,\n messages,\n roomModalDescSideBySide,\n\n getPricesIncludeFeesMessage,\n disableGroupRoomsAllTab,\n orderUnavailableRoomsLast,\n showPromocodeFieldInCheckout,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n\nconst DefaultPricesIncludeFeesMessage = 'Including taxes & fees.';\n"]}
1
+ {"version":3,"file":"HotelOverridesContext.js","sourceRoot":"/","sources":["src/contexts/HotelOverridesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport i18n from 'i18next';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { Language } from '@/providers/LanguageProvider';\n\ninterface IHotelOverridesContext extends Omit<HotelOverrideDTO, 'overrideDistanceUnitType'> {\n loading: boolean;\n getPricesIncludeFeesMessage: (hotelId: string) => Promise<string>;\n}\n\nexport const HotelOverridesContext = createContext<IHotelOverridesContext>({} as IHotelOverridesContext);\n\nconst useHotelOverrides = (): IHotelOverridesContext => {\n const companyContext = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n const [loading, loadingSet] = useState<boolean>(false);\n const [overrides, overridesSet] = useState<HotelOverrideDTO | null>(null);\n\n const fetchApiData = useCallback(async () => {\n if (companyContext.selectedHotelID) {\n loadingSet(true);\n try {\n const apiData = await API.Hotel.fetchOverrides(companyContext.selectedHotelID);\n\n loadingSet(false);\n overridesSet(apiData);\n } catch (error) {\n console.error('Failed to fetch hotel overrides', error);\n }\n }\n }, [companyContext.selectedHotelID]);\n\n const hideByLine: boolean = useMemo(() => {\n return !!overrides?.hideByLine || !!hotel?.hideByLine;\n }, [overrides?.hideByLine]);\n\n const distanceUnitType: DistanceUnitType = useMemo(() => {\n // Metric by default\n return (overrides?.overrideDistanceUnitType && overrides?.distanceUnitType) || hotel?.distanceUnitType || DistanceUnitType.Metric;\n }, [overrides?.distanceUnitType, hotel?.distanceUnitType, hotel?.hasLoadedDetails]);\n\n const transportDistances = useMemo(() => {\n return overrides?.transportDistances ?? hotel?.transportDistances;\n }, [overrides?.transportDistances]);\n\n const phoneNumberInSummary = useMemo(() => {\n return overrides?.phoneNumberInSummary;\n }, [overrides?.phoneNumberInSummary]);\n\n const enabledEventIds = useMemo(() => {\n return overrides?.enabledEventIds;\n }, [overrides?.enabledEventIds]);\n\n const { showYearOnCalendar, yearDisplayOption } = useMemo(() => {\n return {\n showYearOnCalendar: !!overrides?.showYearOnCalendar,\n yearDisplayOption: !!overrides?.showYearOnCalendar ? overrides?.yearDisplayOption : '',\n };\n }, [overrides?.showYearOnCalendar, overrides?.yearDisplayOption]);\n\n const { showPromoCodeAlert, promoCodeAlertType } = useMemo(() => {\n return {\n showPromoCodeAlert: !!overrides?.showPromoCodeAlert,\n promoCodeAlertType: !!overrides?.showPromoCodeAlert ? overrides?.promoCodeAlertType : undefined,\n };\n }, [overrides?.showPromoCodeAlert, overrides?.promoCodeAlertType]);\n\n const pageTitle = useMemo(() => {\n return overrides?.pageTitle;\n }, [overrides?.pageTitle]);\n\n const showPromoCodeDescription: boolean = useMemo(() => {\n return !!overrides?.showPromoCodeDescription;\n }, [overrides?.showPromoCodeDescription]);\n\n const alwaysShowDecimals: boolean = useMemo(() => {\n return !!overrides?.alwaysShowDecimals;\n }, [overrides?.alwaysShowDecimals]);\n\n const roomModalDescSideBySide: boolean = useMemo(() => {\n return !!overrides?.roomModalDescSideBySide;\n }, [overrides?.roomModalDescSideBySide]);\n\n const disableGroupRoomsAllTab = useMemo(() => {\n return !!overrides?.disableGroupRoomsAllTab;\n }, [overrides?.disableGroupRoomsAllTab]);\n\n const orderUnavailableRoomsLast: boolean = useMemo(() => {\n return !!overrides?.orderUnavailableRoomsLast;\n }, [overrides?.orderUnavailableRoomsLast]);\n\n const showPromocodeFieldInCheckout: boolean = useMemo(() => {\n return !!overrides?.showPromocodeFieldInCheckout;\n }, [overrides?.showPromocodeFieldInCheckout]);\n\n const showDayNameInDates: boolean = useMemo(() => {\n return !!overrides?.showDayNameInDates;\n }, [overrides?.showDayNameInDates]);\n\n const messages = useMemo(() => {\n if (overrides?.messages?.enable) {\n if (overrides.messages.pricesIncludeFeesMessage) {\n i18n.addResource(Language.en_us, 'translation', Translation.Step.Room.RoomInfo.IncludesTaxes, overrides.messages.pricesIncludeFeesMessage);\n }\n\n return overrides.messages;\n }\n return undefined;\n }, [overrides?.messages]);\n\n const getPricesIncludeFeesMessage = async (hotelId: string): Promise<string> => {\n if (hotelId === hotel?.hotelID) {\n const translated = t(Translation.Step.Room.RoomInfo.IncludesTaxes);\n return translated;\n }\n\n try {\n const overrideData = await API.Hotel.fetchOverrides(hotelId);\n const msg = overrideData?.messages?.pricesIncludeFeesMessage || DefaultPricesIncludeFeesMessage;\n return msg;\n } catch {\n return DefaultPricesIncludeFeesMessage;\n }\n };\n\n useEffect(() => {\n fetchApiData();\n }, [fetchApiData]);\n\n return {\n loading,\n hideByLine,\n distanceUnitType,\n transportDistances,\n phoneNumberInSummary,\n enabledEventIds,\n showYearOnCalendar,\n yearDisplayOption,\n showPromoCodeAlert,\n promoCodeAlertType,\n pageTitle,\n showPromoCodeDescription,\n alwaysShowDecimals,\n messages,\n roomModalDescSideBySide,\n\n getPricesIncludeFeesMessage,\n disableGroupRoomsAllTab,\n orderUnavailableRoomsLast,\n showPromocodeFieldInCheckout,\n showDayNameInDates,\n };\n};\n\nexport const HotelOverridesContextWrapper = ({ children }: { children?: React.ReactNode }) => {\n const hotelOverrides = useHotelOverrides();\n return <HotelOverridesContext.Provider value={hotelOverrides}>{children}</HotelOverridesContext.Provider>;\n};\n\nconst DefaultPricesIncludeFeesMessage = 'Including taxes & fees.';\n"]}
@@ -18,9 +18,19 @@ export interface UseAutoFocusOnSelectProps {
18
18
  */
19
19
  focusOnSelected?: boolean;
20
20
  /**
21
- * If `true`, disables automatically opening the dropdown
21
+ * If `true`, prevents the dropdown from automatically opening
22
22
  * when the input element receives focus.
23
23
  *
24
+ * Examples:
25
+ * - `EnhancedPhoneNumberField` has two parts: the flag selector and the number input.
26
+ * Clicking the number input should not trigger the flag selector to open,
27
+ * so set `disableOpenOnFocus = true`.
28
+ *
29
+ * - When validating the form at the Confirmation step, if the country input
30
+ * is required but empty, the form may automatically focus the country input.
31
+ * In this case, set `disableOpenOnFocus = true` to prevent the dropdown
32
+ * from opening automatically during validation focus.
33
+ *
24
34
  * @default false
25
35
  */
26
36
  disableOpenOnFocus?: boolean;
@@ -9,10 +9,12 @@ const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOn
9
9
  const [isDropdownOpen, setIsDropdownOpen] = (0, react_1.useState)(false);
10
10
  const lockOpen = (0, react_1.useRef)(false);
11
11
  const timeout = (0, react_1.useRef)();
12
- (0, react_1.useEffect)(() => clearTimeout(timeout.current), []);
12
+ const isFocusedRef = (0, react_1.useRef)(isFocused);
13
+ (0, react_1.useEffect)(() => () => clearTimeout(timeout.current), []);
13
14
  const debounceSetFocus = (0, react_1.useCallback)((0, Debounce_1.debounce)((value) => {
15
+ isFocusedRef.current = value;
14
16
  setIsFocused(value);
15
- }, duration), []);
17
+ }, duration), [isFocusedRef, setIsFocused]);
16
18
  const onTriggerClicked = () => {
17
19
  setIsDropdownOpen(true);
18
20
  debounceSetFocus(true);
@@ -36,7 +38,7 @@ const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOn
36
38
  ref === null || ref === void 0 ? void 0 : ref.blur();
37
39
  };
38
40
  const _onFocus = (0, react_1.useCallback)(() => {
39
- if (!isFocused) {
41
+ if (!isFocusedRef.current) {
40
42
  if (!onlyAutoOpenWhenInputEmpty || !(ref === null || ref === void 0 ? void 0 : ref.value)) {
41
43
  setIsDropdownOpen(!disableOpenOnFocus);
42
44
  lockOpen.current = true;
@@ -46,10 +48,10 @@ const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOn
46
48
  }
47
49
  }
48
50
  debounceSetFocus(true);
49
- }, [setIsFocused, isFocused, isDropdownOpen, setIsDropdownOpen, disableOpenOnFocus]);
51
+ }, [onlyAutoOpenWhenInputEmpty, disableOpenOnFocus, ref, isFocusedRef, setIsDropdownOpen, lockOpen, timeout]);
50
52
  const _onBlur = (0, react_1.useCallback)(() => {
51
53
  debounceSetFocus(false);
52
- }, [setIsFocused]);
54
+ }, [debounceSetFocus]);
53
55
  (0, react_1.useEffect)(() => {
54
56
  if (!ref)
55
57
  return;
@@ -57,8 +59,6 @@ const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOn
57
59
  ref.addEventListener('blur', _onBlur);
58
60
  ref.addEventListener('click', _onFocus);
59
61
  return () => {
60
- if (!ref)
61
- return;
62
62
  ref.removeEventListener('focus', _onFocus);
63
63
  ref.removeEventListener('blur', _onBlur);
64
64
  ref.removeEventListener('click', _onFocus);
@@ -1 +1 @@
1
- {"version":3,"file":"AutoFocusOnSelect.js","sourceRoot":"/","sources":["src/hooks/AutoFocusOnSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { debounce } from '../util/Debounce';\n\nexport interface UseAutoFocusOnSelectProps {\n /**\n * Reference to the input element that should be managed by the hook.\n * Required for attaching focus, blur, and click event listeners.\n */\n ref: HTMLInputElement | null;\n /**\n * If `true`, the dropdown will only auto-open when the input field is empty.\n *\n * @default false\n */\n onlyAutoOpenWhenInputEmpty?: boolean;\n /**\n * If `true`, the input will regain focus after an item is selected.\n * If `false`, the input will blur after selection.\n *\n * @default true\n */\n focusOnSelected?: boolean;\n /**\n * If `true`, disables automatically opening the dropdown\n * when the input element receives focus.\n *\n * @default false\n */\n disableOpenOnFocus?: boolean;\n}\n\nconst duration = 300;\n\nexport const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOnSelected = true, disableOpenOnFocus = false }: UseAutoFocusOnSelectProps) => {\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const lockOpen = useRef<boolean>(false);\n const timeout = useRef<NodeJS.Timeout>();\n\n useEffect(() => clearTimeout(timeout.current), []);\n\n const debounceSetFocus = useCallback(\n debounce((value) => {\n setIsFocused(value);\n }, duration),\n []\n );\n\n const onTriggerClicked = () => {\n setIsDropdownOpen(true);\n debounceSetFocus(true);\n };\n\n const onDropdownClosed = (e: Event) => {\n const composedPath = e.composedPath() as HTMLElement[];\n if (composedPath.some((el) => el.isSameNode?.(ref))) {\n return;\n }\n if (!lockOpen.current) {\n setIsDropdownOpen(false);\n }\n debounceSetFocus(false);\n };\n\n const onItemSelected = () => {\n if (!lockOpen.current) setIsDropdownOpen(false);\n if (focusOnSelected) ref?.focus();\n else ref?.blur();\n };\n\n const _onFocus = useCallback(() => {\n if (!isFocused) {\n if (!onlyAutoOpenWhenInputEmpty || !ref?.value) {\n setIsDropdownOpen(!disableOpenOnFocus);\n lockOpen.current = true;\n timeout.current = setTimeout(() => {\n lockOpen.current = false;\n }, duration);\n }\n }\n debounceSetFocus(true);\n }, [setIsFocused, isFocused, isDropdownOpen, setIsDropdownOpen, disableOpenOnFocus]);\n\n const _onBlur = useCallback(() => {\n debounceSetFocus(false);\n }, [setIsFocused]);\n\n useEffect(() => {\n if (!ref) return;\n ref.addEventListener('focus', _onFocus);\n ref.addEventListener('blur', _onBlur);\n ref.addEventListener('click', _onFocus);\n return () => {\n if (!ref) return;\n ref.removeEventListener('focus', _onFocus);\n ref.removeEventListener('blur', _onBlur);\n ref.removeEventListener('click', _onFocus);\n };\n }, [ref, _onFocus, _onBlur]);\n return {\n isFocused,\n isDropdownOpen,\n onDropdownClosed,\n onTriggerClicked,\n onItemSelected,\n setIsDropdownOpen,\n };\n};\n"]}
1
+ {"version":3,"file":"AutoFocusOnSelect.js","sourceRoot":"/","sources":["src/hooks/AutoFocusOnSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { debounce } from '../util/Debounce';\n\nexport interface UseAutoFocusOnSelectProps {\n /**\n * Reference to the input element that should be managed by the hook.\n * Required for attaching focus, blur, and click event listeners.\n */\n ref: HTMLInputElement | null;\n /**\n * If `true`, the dropdown will only auto-open when the input field is empty.\n *\n * @default false\n */\n onlyAutoOpenWhenInputEmpty?: boolean;\n /**\n * If `true`, the input will regain focus after an item is selected.\n * If `false`, the input will blur after selection.\n *\n * @default true\n */\n focusOnSelected?: boolean;\n /**\n * If `true`, prevents the dropdown from automatically opening\n * when the input element receives focus.\n *\n * Examples:\n * - `EnhancedPhoneNumberField` has two parts: the flag selector and the number input.\n * Clicking the number input should not trigger the flag selector to open,\n * so set `disableOpenOnFocus = true`.\n *\n * - When validating the form at the Confirmation step, if the country input\n * is required but empty, the form may automatically focus the country input.\n * In this case, set `disableOpenOnFocus = true` to prevent the dropdown\n * from opening automatically during validation focus.\n *\n * @default false\n */\n disableOpenOnFocus?: boolean;\n}\n\nconst duration = 300;\n\nexport const useAutoFocusOnSelect = ({ ref, onlyAutoOpenWhenInputEmpty = false, focusOnSelected = true, disableOpenOnFocus = false }: UseAutoFocusOnSelectProps) => {\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const lockOpen = useRef<boolean>(false);\n const timeout = useRef<NodeJS.Timeout>();\n const isFocusedRef = useRef(isFocused);\n\n useEffect(() => () => clearTimeout(timeout.current), []);\n\n const debounceSetFocus = useCallback(\n debounce((value: boolean) => {\n isFocusedRef.current = value;\n setIsFocused(value);\n }, duration),\n [isFocusedRef, setIsFocused]\n );\n\n const onTriggerClicked = () => {\n setIsDropdownOpen(true);\n debounceSetFocus(true);\n };\n\n const onDropdownClosed = (e: Event) => {\n const composedPath = e.composedPath() as HTMLElement[];\n if (composedPath.some((el) => el.isSameNode?.(ref))) {\n return;\n }\n if (!lockOpen.current) {\n setIsDropdownOpen(false);\n }\n debounceSetFocus(false);\n };\n\n const onItemSelected = () => {\n if (!lockOpen.current) setIsDropdownOpen(false);\n if (focusOnSelected) ref?.focus();\n else ref?.blur();\n };\n\n const _onFocus = useCallback(() => {\n if (!isFocusedRef.current) {\n if (!onlyAutoOpenWhenInputEmpty || !ref?.value) {\n setIsDropdownOpen(!disableOpenOnFocus);\n lockOpen.current = true;\n timeout.current = setTimeout(() => {\n lockOpen.current = false;\n }, duration);\n }\n }\n debounceSetFocus(true);\n }, [onlyAutoOpenWhenInputEmpty, disableOpenOnFocus, ref, isFocusedRef, setIsDropdownOpen, lockOpen, timeout]);\n\n const _onBlur = useCallback(() => {\n debounceSetFocus(false);\n }, [debounceSetFocus]);\n\n useEffect(() => {\n if (!ref) return;\n ref.addEventListener('focus', _onFocus);\n ref.addEventListener('blur', _onBlur);\n ref.addEventListener('click', _onFocus);\n return () => {\n ref.removeEventListener('focus', _onFocus);\n ref.removeEventListener('blur', _onBlur);\n ref.removeEventListener('click', _onFocus);\n };\n }, [ref, _onFocus, _onBlur]);\n\n return {\n isFocused,\n isDropdownOpen,\n onDropdownClosed,\n onTriggerClicked,\n onItemSelected,\n setIsDropdownOpen,\n };\n};\n"]}
@@ -5,3 +5,4 @@ export * from './EventHook';
5
5
  export * from './LoggedInUserHook';
6
6
  export * from './ScrollFocusHook';
7
7
  export * from './useCalendarNightStay';
8
+ export * from './useGuestDateFormat';
@@ -21,4 +21,5 @@ __exportStar(require("./EventHook"), exports);
21
21
  __exportStar(require("./LoggedInUserHook"), exports);
22
22
  __exportStar(require("./ScrollFocusHook"), exports);
23
23
  __exportStar(require("./useCalendarNightStay"), exports);
24
+ __exportStar(require("./useGuestDateFormat"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,0DAAwC;AACxC,oDAAkC;AAClC,2DAAyC;AACzC,0DAAwC;AACxC,+DAA6C","sourcesContent":["export * from '@/hooks/BodyClickHook';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/ElementSortHook';\nexport * from '@/hooks/EventHook';\nexport * from '@/hooks/LoggedInUserHook';\nexport * from '@/hooks/ScrollFocusHook';\nexport * from '@/hooks/useCalendarNightStay';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,0DAAwC;AACxC,oDAAkC;AAClC,2DAAyC;AACzC,0DAAwC;AACxC,+DAA6C;AAC7C,6DAA2C","sourcesContent":["export * from '@/hooks/BodyClickHook';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/ElementSortHook';\nexport * from '@/hooks/EventHook';\nexport * from '@/hooks/LoggedInUserHook';\nexport * from '@/hooks/ScrollFocusHook';\nexport * from '@/hooks/useCalendarNightStay';\nexport * from '@/hooks/useGuestDateFormat';\n"]}
@@ -1,2 +1,11 @@
1
+ import { AuxiliaryFilterSelections } from '../contexts/index.js';
2
+ import { AuxiliaryFilterSelectsProps } from '../components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls';
1
3
  import { Room } from '../models/Room/Room';
2
- export declare const useAreaAvailability: (room?: Room) => boolean;
4
+ import { RoomRate } from '../models/Room/RoomRate';
5
+ export declare const useAreaAvailability: (room: Room, groupFilters: AuxiliaryFilterSelectsProps["groupFilters"]) => {
6
+ handleBookNow: (rate: RoomRate) => Promise<void>;
7
+ handleAuxiliaryUpdate: (selections: AuxiliaryFilterSelections) => Promise<boolean>;
8
+ auxiliaryPickerOpen: boolean;
9
+ auxiliaryPickerShowError: boolean;
10
+ setAuxiliaryPickerOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
11
+ };
@@ -1,42 +1,79 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.useAreaAvailability = void 0;
4
13
  const contexts_1 = require("../contexts/index.js");
5
14
  const react_1 = require("react");
6
15
  const index_1 = require("../index");
7
- const useAreaAvailability = (room) => {
8
- var _a;
9
- const { hotel } = (0, index_1.useCurrentHotel)();
16
+ const useAuxiliaryFilters_1 = require("./useAuxiliaryFilters");
17
+ const useAreaAvailability = (room, groupFilters) => {
18
+ const context = (0, react_1.useContext)(contexts_1.BookingEngineContext);
10
19
  const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
11
- const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
12
- // By default, we assume the room is available.
13
- const [isAvailable, setIsAvailable] = (0, react_1.useState)(true);
14
- const selectedBasketRow = (_a = basketContext.selectedBasketRow) !== null && _a !== void 0 ? _a : basketContext.currentBasketRows[0];
20
+ const { hotel } = (0, index_1.useCurrentHotel)();
21
+ const { applyAuxiliaryFilterSelections } = (0, useAuxiliaryFilters_1.useAuxiliaryFilters)();
22
+ const [auxiliaryPickerOpen, setAuxiliaryPickerOpen] = (0, react_1.useState)(false);
23
+ const [auxiliaryPickerShowError, setAuxiliaryPickerShowError] = (0, react_1.useState)(false);
24
+ const [pendingRate, setPendingRate] = (0, react_1.useState)(null);
25
+ const groupFilterIds = Object.keys(groupFilters || {});
26
+ const currentGroupedRoomFiltersRef = (0, react_1.useRef)(context.currentGroupedRoomFilters);
15
27
  (0, react_1.useEffect)(() => {
16
- var _a;
17
- let isCancelled = false;
18
- setIsAvailable(true);
19
- const roomCode = room === null || room === void 0 ? void 0 : room.code;
20
- if ((hotel === null || hotel === void 0 ? void 0 : hotel.checkAreaAvailabilityOnRoomStep) && roomCode) {
21
- // Find the room group that this room belongs to
22
- const roomGroup = (_a = hotel.roomGroups) === null || _a === void 0 ? void 0 : _a.find((group) => group.id === (room === null || room === void 0 ? void 0 : room.roomGroupId));
23
- // Get the filter IDs that belong to this room group
24
- const roomGroupFilterIds = (roomGroup === null || roomGroup === void 0 ? void 0 : roomGroup.filters) ? Object.keys(roomGroup.filters) : [];
25
- // Filter to only include filters that belong to this room's room group
26
- const applicableFilters = Object.fromEntries(Object.entries(beContext.currentGroupedRoomFilters).filter(([id]) => {
27
- return roomGroupFilterIds.includes(id);
28
- }));
29
- index_1.API.Availability.fetchAreaAvailability(selectedBasketRow, hotel.hotelID, applicableFilters).then((areaAvailability) => {
30
- if (!isCancelled && areaAvailability[roomCode] === 0) {
31
- setIsAvailable(false);
32
- }
33
- });
28
+ currentGroupedRoomFiltersRef.current = context.currentGroupedRoomFilters;
29
+ }, [context.currentGroupedRoomFilters]);
30
+ const getSelectedRow = () => { var _a, _b; return (_a = basketContext.selectedBasketRow) !== null && _a !== void 0 ? _a : (_b = basketContext.currentBasketRows) === null || _b === void 0 ? void 0 : _b[0]; };
31
+ const checkAvailabilityAndBook = (rate, selections) => __awaiter(void 0, void 0, void 0, function* () {
32
+ const row = getSelectedRow();
33
+ if (!row || !room.code || !(hotel === null || hotel === void 0 ? void 0 : hotel.hotelID))
34
+ return false;
35
+ const applicableFilters = Object.fromEntries(Object.entries(selections).filter(([id]) => groupFilterIds.includes(id)));
36
+ const availability = yield index_1.API.Availability.fetchAreaAvailability(row, hotel.hotelID, applicableFilters);
37
+ const isAvailable = !!availability[room.code];
38
+ if (!isAvailable)
39
+ return false;
40
+ applyAuxiliaryFilterSelections(Object.assign(Object.assign({}, currentGroupedRoomFiltersRef.current), selections), groupFilters);
41
+ yield basketContext.addRate(rate, true, applicableFilters);
42
+ return true;
43
+ });
44
+ const handleBookNow = (rate) => __awaiter(void 0, void 0, void 0, function* () {
45
+ const latestFilters = currentGroupedRoomFiltersRef.current;
46
+ if (!(hotel === null || hotel === void 0 ? void 0 : hotel.checkAreaAvailabilityOnRoomStep)) {
47
+ yield basketContext.addRate(rate, true, latestFilters);
48
+ return;
49
+ }
50
+ const hasUnselectedRequired = Object.entries(groupFilters).some(([id, f]) => f.requireSelection && !latestFilters[id]);
51
+ const noFiltersSelected = groupFilterIds.length > 0 && Object.keys(latestFilters).length === 0;
52
+ if (hasUnselectedRequired || noFiltersSelected) {
53
+ setPendingRate(rate);
54
+ setAuxiliaryPickerShowError(false);
55
+ setAuxiliaryPickerOpen(true);
56
+ return;
57
+ }
58
+ const available = yield checkAvailabilityAndBook(rate, latestFilters);
59
+ if (!available) {
60
+ setPendingRate(rate);
61
+ setAuxiliaryPickerShowError(true);
62
+ setAuxiliaryPickerOpen(true);
34
63
  }
35
- return () => {
36
- isCancelled = true;
37
- };
38
- }, [selectedBasketRow, beContext.currentGroupedRoomFilters, hotel, room]);
39
- return isAvailable;
64
+ });
65
+ const handleAuxiliaryUpdate = (selections) => __awaiter(void 0, void 0, void 0, function* () {
66
+ if (!pendingRate)
67
+ return false;
68
+ return checkAvailabilityAndBook(pendingRate, selections);
69
+ });
70
+ return {
71
+ handleBookNow,
72
+ handleAuxiliaryUpdate,
73
+ auxiliaryPickerOpen,
74
+ auxiliaryPickerShowError,
75
+ setAuxiliaryPickerOpen,
76
+ };
40
77
  };
41
78
  exports.useAreaAvailability = useAreaAvailability;
42
79
  //# sourceMappingURL=useAreaAvailability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAreaAvailability.js","sourceRoot":"/","sources":["src/hooks/useAreaAvailability.ts"],"names":[],"mappings":";;;AAAA,iDAAyE;AACzE,iCAAwD;AAExD,mCAA+C;AAGxC,MAAM,mBAAmB,GAAG,CAAC,IAAW,EAAE,EAAE;;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEnD,+CAA+C;IAC/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,CAAC;IAE9D,MAAM,iBAAiB,GAAG,MAAA,aAAa,CAAC,iBAAiB,mCAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEhG,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;QAE5B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,+BAA+B,KAAI,QAAQ,EAAE,CAAC;YACrD,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,MAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,CAAC,CAAC;YAEpF,oDAAoD;YACpD,MAAM,kBAAkB,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,EAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpF,uEAAuE;YACvE,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CACxC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CACL,CAAC;YAEF,WAAG,CAAC,YAAY,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBAClH,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,GAAG,EAAE;YACR,WAAW,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1E,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AA3CW,QAAA,mBAAmB,uBA2C9B","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useContext, useEffect, useState } from 'react';\n\nimport { API, useCurrentHotel } from '@/index';\nimport { Room } from '@/models/Room/Room';\n\nexport const useAreaAvailability = (room?: Room) => {\n const { hotel } = useCurrentHotel();\n const basketContext = useContext(BasketContext);\n const beContext = useContext(BookingEngineContext);\n\n // By default, we assume the room is available.\n const [isAvailable, setIsAvailable] = useState<boolean>(true);\n\n const selectedBasketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[0];\n\n useEffect(() => {\n let isCancelled = false;\n setIsAvailable(true);\n\n const roomCode = room?.code;\n\n if (hotel?.checkAreaAvailabilityOnRoomStep && roomCode) {\n // Find the room group that this room belongs to\n const roomGroup = hotel.roomGroups?.find((group) => group.id === room?.roomGroupId);\n\n // Get the filter IDs that belong to this room group\n const roomGroupFilterIds = roomGroup?.filters ? Object.keys(roomGroup.filters) : [];\n\n // Filter to only include filters that belong to this room's room group\n const applicableFilters = Object.fromEntries(\n Object.entries(beContext.currentGroupedRoomFilters).filter(([id]) => {\n return roomGroupFilterIds.includes(id);\n })\n );\n\n API.Availability.fetchAreaAvailability(selectedBasketRow, hotel.hotelID, applicableFilters).then((areaAvailability) => {\n if (!isCancelled && areaAvailability[roomCode] === 0) {\n setIsAvailable(false);\n }\n });\n }\n\n return () => {\n isCancelled = true;\n };\n }, [selectedBasketRow, beContext.currentGroupedRoomFilters, hotel, room]);\n\n return isAvailable;\n};\n"]}
1
+ {"version":3,"file":"useAreaAvailability.js","sourceRoot":"/","sources":["src/hooks/useAreaAvailability.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAsH;AACtH,iCAAgE;AAGhE,mCAA+C;AAI/C,+DAA4D;AAErD,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAE,YAAyD,EAAE,EAAE;IACzG,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,8BAA8B,EAAE,GAAG,IAAA,yCAAmB,GAAE,CAAC;IAEjE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAkB,IAAI,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,4BAA4B,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAE/E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,4BAA4B,CAAC,OAAO,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAC7E,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,GAAG,EAAE,eAAC,OAAA,MAAA,aAAa,CAAC,iBAAiB,mCAAI,MAAA,aAAa,CAAC,iBAAiB,0CAAG,CAAC,CAAC,CAAA,EAAA,CAAC;IAErG,MAAM,wBAAwB,GAAG,CAAO,IAAc,EAAE,UAAqC,EAAoB,EAAE;QAC/G,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA;YAAE,OAAO,KAAK,CAAC;QAExD,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvH,MAAM,YAAY,GAAqB,MAAM,WAAG,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAE3H,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,8BAA8B,iCAAM,4BAA4B,CAAC,OAAO,GAAK,UAAU,GAAI,YAAY,CAAC,CAAC;QAEzG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC,CAAA,CAAC;IAEF,MAAM,aAAa,GAAG,CAAO,IAAc,EAAE,EAAE;QAC3C,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC;QAE3D,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,+BAA+B,CAAA,EAAE,CAAC;YAC1C,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YACvD,OAAO;QACX,CAAC;QAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5H,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAE/F,IAAI,qBAAqB,IAAI,iBAAiB,EAAE,CAAC;YAC7C,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,2BAA2B,CAAC,KAAK,CAAC,CAAC;YACnC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAEtE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAClC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAO,UAAqC,EAAE,EAAE;QAC1E,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAA,CAAC;IAEF,OAAO;QACH,aAAa;QACb,qBAAqB;QACrB,mBAAmB;QACnB,wBAAwB;QACxB,sBAAsB;KACzB,CAAC;AACN,CAAC,CAAC;AA7EW,QAAA,mBAAmB,uBA6E9B","sourcesContent":["import { AreaAvailability, AuxiliaryFilterSelections, BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useContext, useEffect, useRef, useState } from 'react';\n\nimport { AuxiliaryFilterSelectsProps } from '@/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls';\nimport { API, useCurrentHotel } from '@/index';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\n\nimport { useAuxiliaryFilters } from './useAuxiliaryFilters';\n\nexport const useAreaAvailability = (room: Room, groupFilters: AuxiliaryFilterSelectsProps['groupFilters']) => {\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n const { applyAuxiliaryFilterSelections } = useAuxiliaryFilters();\n\n const [auxiliaryPickerOpen, setAuxiliaryPickerOpen] = useState(false);\n const [auxiliaryPickerShowError, setAuxiliaryPickerShowError] = useState(false);\n const [pendingRate, setPendingRate] = useState<RoomRate | null>(null);\n\n const groupFilterIds = Object.keys(groupFilters || {});\n const currentGroupedRoomFiltersRef = useRef(context.currentGroupedRoomFilters);\n\n useEffect(() => {\n currentGroupedRoomFiltersRef.current = context.currentGroupedRoomFilters;\n }, [context.currentGroupedRoomFilters]);\n\n const getSelectedRow = () => basketContext.selectedBasketRow ?? basketContext.currentBasketRows?.[0];\n\n const checkAvailabilityAndBook = async (rate: RoomRate, selections: AuxiliaryFilterSelections): Promise<boolean> => {\n const row = getSelectedRow();\n if (!row || !room.code || !hotel?.hotelID) return false;\n\n const applicableFilters = Object.fromEntries(Object.entries(selections).filter(([id]) => groupFilterIds.includes(id)));\n\n const availability: AreaAvailability = await API.Availability.fetchAreaAvailability(row, hotel.hotelID, applicableFilters);\n\n const isAvailable = !!availability[room.code];\n\n if (!isAvailable) return false;\n\n applyAuxiliaryFilterSelections({ ...currentGroupedRoomFiltersRef.current, ...selections }, groupFilters);\n\n await basketContext.addRate(rate, true, applicableFilters);\n return true;\n };\n\n const handleBookNow = async (rate: RoomRate) => {\n const latestFilters = currentGroupedRoomFiltersRef.current;\n\n if (!hotel?.checkAreaAvailabilityOnRoomStep) {\n await basketContext.addRate(rate, true, latestFilters);\n return;\n }\n\n const hasUnselectedRequired = Object.entries(groupFilters).some(([id, f]: any) => f.requireSelection && !latestFilters[id]);\n\n const noFiltersSelected = groupFilterIds.length > 0 && Object.keys(latestFilters).length === 0;\n\n if (hasUnselectedRequired || noFiltersSelected) {\n setPendingRate(rate);\n setAuxiliaryPickerShowError(false);\n setAuxiliaryPickerOpen(true);\n return;\n }\n\n const available = await checkAvailabilityAndBook(rate, latestFilters);\n\n if (!available) {\n setPendingRate(rate);\n setAuxiliaryPickerShowError(true);\n setAuxiliaryPickerOpen(true);\n }\n };\n\n const handleAuxiliaryUpdate = async (selections: AuxiliaryFilterSelections) => {\n if (!pendingRate) return false;\n return checkAvailabilityAndBook(pendingRate, selections);\n };\n\n return {\n handleBookNow,\n handleAuxiliaryUpdate,\n auxiliaryPickerOpen,\n auxiliaryPickerShowError,\n setAuxiliaryPickerOpen,\n };\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { AuxiliaryFilterSelections } from '../contexts/index.js';
2
+ import { AuxiliaryFilterSelectsProps } from '../components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls';
3
+ import { Room } from '../models/Room/Room';
4
+ export declare const useAuxiliaryFilters: () => {
5
+ applyAuxiliaryFilterSelections: (selections: AuxiliaryFilterSelections, groupFilters: AuxiliaryFilterSelectsProps["groupFilters"]) => void;
6
+ clearAuxiliaryFilterSelections: (groupFilters: AuxiliaryFilterSelectsProps["groupFilters"]) => void;
7
+ isValidRoomByAuxiliaryFilterSelections: (room: Room, filters: AuxiliaryFilterSelections) => boolean;
8
+ };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAuxiliaryFilters = void 0;
4
+ const contexts_1 = require("../contexts/index.js");
5
+ const react_1 = require("react");
6
+ const useAuxiliaryFilters = () => {
7
+ const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
8
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
9
+ const getSelectedRow = () => { var _a, _b; return (_a = basketContext.selectedBasketRow) !== null && _a !== void 0 ? _a : (_b = basketContext.currentBasketRows) === null || _b === void 0 ? void 0 : _b[0]; };
10
+ const isValidRoomByAuxiliaryFilterSelections = (room, filters) => {
11
+ return Object.entries(filters).every(([key, value]) => {
12
+ var _a;
13
+ if (!value)
14
+ return true;
15
+ const roomValues = (_a = room.auxiliaryValues) === null || _a === void 0 ? void 0 : _a[key];
16
+ if (!roomValues)
17
+ return true;
18
+ return roomValues.includes(String(value));
19
+ });
20
+ };
21
+ const hasRequiredAuxiliaryFilterSelections = (groupFilters) => Object.values(groupFilters || {}).some(({ requireSelection }) => requireSelection === true);
22
+ const applyAuxiliaryFilterSelections = (selections, groupFilters) => {
23
+ // Single source of truth
24
+ beContext.setCurrentGroupedRoomFilters(selections);
25
+ const row = getSelectedRow();
26
+ if (!row)
27
+ return;
28
+ row.setAuxiliaryFilter(selections);
29
+ const room = row.getRoom();
30
+ if (room && hasRequiredAuxiliaryFilterSelections(groupFilters) && !isValidRoomByAuxiliaryFilterSelections(room, selections)) {
31
+ row.setRate(null);
32
+ }
33
+ basketContext.updateBasketRow(row, false);
34
+ };
35
+ const clearAuxiliaryFilterSelections = (groupFilters) => {
36
+ const emptySelections = {};
37
+ // Reset BE context
38
+ beContext.setCurrentGroupedRoomFilters(emptySelections);
39
+ const row = getSelectedRow();
40
+ if (!row)
41
+ return;
42
+ row.setAuxiliaryFilter(emptySelections);
43
+ if (hasRequiredAuxiliaryFilterSelections(groupFilters)) {
44
+ row.setRate(null);
45
+ }
46
+ basketContext.updateBasketRow(row, false);
47
+ };
48
+ return {
49
+ applyAuxiliaryFilterSelections,
50
+ clearAuxiliaryFilterSelections,
51
+ isValidRoomByAuxiliaryFilterSelections,
52
+ };
53
+ };
54
+ exports.useAuxiliaryFilters = useAuxiliaryFilters;
55
+ //# sourceMappingURL=useAuxiliaryFilters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuxiliaryFilters.js","sourceRoot":"/","sources":["src/hooks/useAuxiliaryFilters.ts"],"names":[],"mappings":";;;AAAA,iDAAoG;AACpG,iCAAmC;AAK5B,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACpC,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAG,GAAG,EAAE,eAAC,OAAA,MAAA,aAAa,CAAC,iBAAiB,mCAAI,MAAA,aAAa,CAAC,iBAAiB,0CAAG,CAAC,CAAC,CAAA,EAAA,CAAC;IAErG,MAAM,sCAAsC,GAAG,CAAC,IAAU,EAAE,OAAkC,EAAE,EAAE;QAC9F,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;;YAClD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAExB,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,eAAe,0CAAG,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAE7B,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,oCAAoC,GAAG,CAAC,YAAyD,EAAE,EAAE,CACvG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC;IAEhG,MAAM,8BAA8B,GAAG,CAAC,UAAqC,EAAE,YAAyD,EAAE,EAAE;QACxI,yBAAyB;QACzB,SAAS,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,IAAI,oCAAoC,CAAC,YAAY,CAAC,IAAI,CAAC,sCAAsC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1H,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,aAAa,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,8BAA8B,GAAG,CAAC,YAAyD,EAAE,EAAE;QACjG,MAAM,eAAe,GAA8B,EAAE,CAAC;QACtD,mBAAmB;QACnB,SAAS,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,GAAG,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,oCAAoC,CAAC,YAAY,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,aAAa,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO;QACH,8BAA8B;QAC9B,8BAA8B;QAC9B,sCAAsC;KACzC,CAAC;AACN,CAAC,CAAC;AAtDW,QAAA,mBAAmB,uBAsD9B","sourcesContent":["import { AuxiliaryFilterSelections, BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useContext } from 'react';\n\nimport { AuxiliaryFilterSelectsProps } from '@/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls';\nimport { Room } from '@/models/Room/Room';\n\nexport const useAuxiliaryFilters = () => {\n const beContext = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n\n const getSelectedRow = () => basketContext.selectedBasketRow ?? basketContext.currentBasketRows?.[0];\n\n const isValidRoomByAuxiliaryFilterSelections = (room: Room, filters: AuxiliaryFilterSelections) => {\n return Object.entries(filters).every(([key, value]) => {\n if (!value) return true;\n\n const roomValues = room.auxiliaryValues?.[key];\n if (!roomValues) return true;\n\n return roomValues.includes(String(value));\n });\n };\n\n const hasRequiredAuxiliaryFilterSelections = (groupFilters: AuxiliaryFilterSelectsProps['groupFilters']) =>\n Object.values(groupFilters || {}).some(({ requireSelection }) => requireSelection === true);\n\n const applyAuxiliaryFilterSelections = (selections: AuxiliaryFilterSelections, groupFilters: AuxiliaryFilterSelectsProps['groupFilters']) => {\n // Single source of truth\n beContext.setCurrentGroupedRoomFilters(selections);\n const row = getSelectedRow();\n if (!row) return;\n\n row.setAuxiliaryFilter(selections);\n const room = row.getRoom();\n if (room && hasRequiredAuxiliaryFilterSelections(groupFilters) && !isValidRoomByAuxiliaryFilterSelections(room, selections)) {\n row.setRate(null);\n }\n\n basketContext.updateBasketRow(row, false);\n };\n\n const clearAuxiliaryFilterSelections = (groupFilters: AuxiliaryFilterSelectsProps['groupFilters']) => {\n const emptySelections: AuxiliaryFilterSelections = {};\n // Reset BE context\n beContext.setCurrentGroupedRoomFilters(emptySelections);\n const row = getSelectedRow();\n if (!row) return;\n\n row.setAuxiliaryFilter(emptySelections);\n if (hasRequiredAuxiliaryFilterSelections(groupFilters)) {\n row.setRate(null);\n }\n basketContext.updateBasketRow(row, false);\n };\n\n return {\n applyAuxiliaryFilterSelections,\n clearAuxiliaryFilterSelections,\n isValidRoomByAuxiliaryFilterSelections,\n };\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import dayjs from 'dayjs';
2
+ export declare const GUEST_DATE_FORMAT = "D MMM";
3
+ export declare const GUEST_DATE_FORMAT_WITH_DAY = "ddd Do MMMM";
4
+ export declare const RESERVATION_DATE_FORMAT = "dddd, MMM D, YYYY";
5
+ /** Returns a date formatter that respects the hotel's "show day name in dates" override. */
6
+ export declare function useGuestDateFormat(): {
7
+ formatGuestDate: (date: dayjs.Dayjs) => string;
8
+ formatReservationDate: (date: dayjs.Dayjs) => string;
9
+ guestDateFormat: string;
10
+ showDayNameInDates: boolean | undefined;
11
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESERVATION_DATE_FORMAT = exports.GUEST_DATE_FORMAT_WITH_DAY = exports.GUEST_DATE_FORMAT = void 0;
4
+ exports.useGuestDateFormat = useGuestDateFormat;
5
+ const contexts_1 = require("../contexts/index.js");
6
+ const react_1 = require("react");
7
+ exports.GUEST_DATE_FORMAT = 'D MMM';
8
+ exports.GUEST_DATE_FORMAT_WITH_DAY = 'ddd Do MMMM';
9
+ exports.RESERVATION_DATE_FORMAT = 'dddd, MMM D, YYYY';
10
+ /** Returns a date formatter that respects the hotel's "show day name in dates" override. */
11
+ function useGuestDateFormat() {
12
+ const { showDayNameInDates } = (0, react_1.useContext)(contexts_1.HotelOverridesContext);
13
+ const guestDateFormat = showDayNameInDates ? exports.GUEST_DATE_FORMAT_WITH_DAY : exports.GUEST_DATE_FORMAT;
14
+ const formatGuestDate = (0, react_1.useCallback)((date) => {
15
+ return date.format(guestDateFormat);
16
+ }, [guestDateFormat]);
17
+ const formatReservationDate = (0, react_1.useCallback)((date) => {
18
+ return date.format(exports.RESERVATION_DATE_FORMAT);
19
+ }, []);
20
+ return { formatGuestDate, formatReservationDate, guestDateFormat, showDayNameInDates };
21
+ }
22
+ //# sourceMappingURL=useGuestDateFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGuestDateFormat.js","sourceRoot":"/","sources":["src/hooks/useGuestDateFormat.ts"],"names":[],"mappings":";;;AASA,gDAiBC;AA1BD,iDAA2D;AAE3D,iCAAgD;AAEnC,QAAA,iBAAiB,GAAG,OAAO,CAAC;AAC5B,QAAA,0BAA0B,GAAG,aAAa,CAAC;AAC3C,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D,4FAA4F;AAC5F,SAAgB,kBAAkB;IAC9B,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAEjE,MAAM,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC,kCAA0B,CAAC,CAAC,CAAC,yBAAiB,CAAC;IAE5F,MAAM,eAAe,GAAG,IAAA,mBAAW,EAC/B,CAAC,IAAiB,EAAU,EAAE;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,eAAe,CAAC,CACpB,CAAC;IAEF,MAAM,qBAAqB,GAAG,IAAA,mBAAW,EAAC,CAAC,IAAiB,EAAU,EAAE;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC;IAChD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;AAC3F,CAAC","sourcesContent":["import { HotelOverridesContext } from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport { useCallback, useContext } from 'react';\n\nexport const GUEST_DATE_FORMAT = 'D MMM';\nexport const GUEST_DATE_FORMAT_WITH_DAY = 'ddd Do MMMM';\nexport const RESERVATION_DATE_FORMAT = 'dddd, MMM D, YYYY';\n\n/** Returns a date formatter that respects the hotel's \"show day name in dates\" override. */\nexport function useGuestDateFormat() {\n const { showDayNameInDates } = useContext(HotelOverridesContext);\n\n const guestDateFormat = showDayNameInDates ? GUEST_DATE_FORMAT_WITH_DAY : GUEST_DATE_FORMAT;\n\n const formatGuestDate = useCallback(\n (date: dayjs.Dayjs): string => {\n return date.format(guestDateFormat);\n },\n [guestDateFormat]\n );\n\n const formatReservationDate = useCallback((date: dayjs.Dayjs): string => {\n return date.format(RESERVATION_DATE_FORMAT);\n }, []);\n\n return { formatGuestDate, formatReservationDate, guestDateFormat, showDayNameInDates };\n}\n"]}
@@ -67,7 +67,7 @@ export { default as PlanPayPricePreviewFeature } from './providers/feature/PlanP
67
67
  export { default as RoomRateReadMoreVersionFeature } from './providers/feature/RoomRateReadMoreVersionFeature';
68
68
  export { default as RoomUpsellFeature } from './providers/feature/RoomUpsellFeature';
69
69
  export { default as ShowIATANumberOnCheckoutFeature } from './providers/feature/ShowIATANumberOnCheckoutFeature';
70
- export { default as StepDateNextButtonAboveDatepickerFeature } from './providers/feature/StepDateNextButtonAboveDatepickerFeature';
70
+ export { EStepDateNextButtonLocation, default as StepDateNextButtonAboveDatepickerFeature } from './providers/feature/StepDateNextButtonAboveDatepickerFeature';
71
71
  export { registerReplacement, withDI } from './providers/DIProvider';
72
72
  export * from './providers/RoomstayThemeEngine';
73
73
  export { default as RoomstayThemeEngine } from './providers/RoomstayThemeEngine';
package/dist/src/index.js CHANGED
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.SessionProvider = exports.LocalStorageProvider = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.OriginalStepThanksBlock = exports.BE_STEP_THANKS_BLOCK = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.RatesNotFoundBlock = exports.BE_RATES_NOT_FOUND_BLOCK = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.OccupancyWarningBlock = exports.BE_OCCUPANCY_WARNING_BLOCK = exports.OriginalPeoplePickerBlock = exports.BE_PEOPLE_PICKER_BLOCK = exports.StepConfirmationCountrySelector = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.TextBox = exports.TextArea = exports.RadioFields = exports.OriginalHotelLocationMapBlock = exports.BE_HOTEL_LOCATION_MAP_BLOCK = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.EBookingWizardTheme = exports.EBookingWizardOverlayDirection = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
- exports.Version = exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.StepDateNextButtonAboveDatepickerFeature = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.MemberPortalFeature = exports.InlineAddonStepFeature = exports.HotelGroupFeature = exports.GuestTitleFieldFeature = exports.GiftCardFeature = void 0;
21
+ exports.Version = exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = exports.API = exports.useFormContext = exports.DataLayer = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.StepDateNextButtonAboveDatepickerFeature = exports.EStepDateNextButtonLocation = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.MemberPortalFeature = exports.InlineAddonStepFeature = exports.HotelGroupFeature = exports.GuestTitleFieldFeature = exports.GiftCardFeature = void 0;
22
22
  // TODO: Look into resolving this.
23
23
  const react_1 = __importDefault(require("react"));
24
24
  const StepConfirmation_1 = __importDefault(require("./pages/steps/StepConfirmation/StepConfirmation"));
@@ -156,6 +156,7 @@ Object.defineProperty(exports, "RoomUpsellFeature", { enumerable: true, get: fun
156
156
  var ShowIATANumberOnCheckoutFeature_1 = require("./providers/feature/ShowIATANumberOnCheckoutFeature");
157
157
  Object.defineProperty(exports, "ShowIATANumberOnCheckoutFeature", { enumerable: true, get: function () { return __importDefault(ShowIATANumberOnCheckoutFeature_1).default; } });
158
158
  var StepDateNextButtonAboveDatepickerFeature_1 = require("./providers/feature/StepDateNextButtonAboveDatepickerFeature");
159
+ Object.defineProperty(exports, "EStepDateNextButtonLocation", { enumerable: true, get: function () { return StepDateNextButtonAboveDatepickerFeature_1.EStepDateNextButtonLocation; } });
159
160
  Object.defineProperty(exports, "StepDateNextButtonAboveDatepickerFeature", { enumerable: true, get: function () { return __importDefault(StepDateNextButtonAboveDatepickerFeature_1).default; } });
160
161
  // Contexts
161
162
  var DIProvider_1 = require("./providers/DIProvider");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { BE_HOTEL_LOCATION_MAP_BLOCK, OriginalHotelLocationMapBlock } from '@/components/generic/map/BEHotelLocationMapBlock';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_PEOPLE_PICKER_BLOCK, OriginalPeoplePickerBlock } from '@/components/steps/date/BEPeoplePickerBlock';\nexport { BE_OCCUPANCY_WARNING_BLOCK, default as OccupancyWarningBlock } from '@/components/steps/date/OccupancyWarningBlock';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW, default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK, default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { BE_RATES_NOT_FOUND_BLOCK, default as RatesNotFoundBlock } from '@/components/steps/room/RatesNotFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW, default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport { BE_STEP_THANKS_BLOCK, OriginalStepThanksBlock } from '@/pages/steps/StepThanks/StepThanksComponent';\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as GiftCardFeature } from '@/providers/feature/GiftCardFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as HotelGroupFeature } from '@/providers/feature/HotelGroupFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as MemberPortalFeature } from '@/providers/feature/MemberPortalFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { default as StepDateNextButtonAboveDatepickerFeature } from '@/providers/feature/StepDateNextButtonAboveDatepickerFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport * from '@/util/Analytics/Analytics';\nexport * from '@/util/Analytics/GoogleAnalytics4';\nexport * from '@/util/Analytics/UniversalAnalytics';\nexport * from '@/util/DataLayer';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\nexport * from './config';\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { EBookingWizardOverlayDirection, EBookingWizardTheme } from '@/components/generic/BookingWizard/BookingWizard';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { BE_HOTEL_LOCATION_MAP_BLOCK, OriginalHotelLocationMapBlock } from '@/components/generic/map/BEHotelLocationMapBlock';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport { BE_PEOPLE_PICKER_BLOCK, OriginalPeoplePickerBlock } from '@/components/steps/date/BEPeoplePickerBlock';\nexport { BE_OCCUPANCY_WARNING_BLOCK, default as OccupancyWarningBlock } from '@/components/steps/date/OccupancyWarningBlock';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW, default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK, default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { BE_RATES_NOT_FOUND_BLOCK, default as RatesNotFoundBlock } from '@/components/steps/room/RatesNotFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW, default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nexport { BE_STEP_THANKS_BLOCK, OriginalStepThanksBlock } from '@/pages/steps/StepThanks/StepThanksComponent';\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as GiftCardFeature } from '@/providers/feature/GiftCardFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as HotelGroupFeature } from '@/providers/feature/HotelGroupFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as MemberPortalFeature } from '@/providers/feature/MemberPortalFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nexport { EStepDateNextButtonLocation, default as StepDateNextButtonAboveDatepickerFeature } from '@/providers/feature/StepDateNextButtonAboveDatepickerFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport * from '@/util/Analytics/Analytics';\nexport * from '@/util/Analytics/GoogleAnalytics4';\nexport * from '@/util/Analytics/UniversalAnalytics';\nexport * from '@/util/DataLayer';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\nexport * from './config';\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
@@ -77,4 +77,5 @@ export interface HotelOverrideDTO extends ShowYearOnCalendarProps, ShowPromoCode
77
77
  disableGroupRoomsAllTab?: boolean;
78
78
  orderUnavailableRoomsLast?: boolean;
79
79
  showPromocodeFieldInCheckout: boolean;
80
+ showDayNameInDates?: boolean;
80
81
  }