@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.
- package/dist/177.bundle.js +1 -1
- package/dist/279.bundle.js +1 -1
- package/dist/288.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/596.bundle.js +1 -0
- package/dist/625.bundle.js +1 -1
- package/dist/686.bundle.js +1 -1
- package/dist/836.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +2 -4
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/Alert.d.ts +7 -1
- package/dist/src/components/generic/Alert.js +6 -0
- package/dist/src/components/generic/Alert.js.map +1 -1
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.d.ts +11 -0
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js +24 -0
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js.map +1 -0
- package/dist/src/components/generic/RecentSearchesCard.js +4 -2
- package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
- package/dist/src/components/generic/date/DatePicker.js +2 -1
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +3 -2
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/steps/DaysSelectedInformer.js +6 -4
- package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +14 -12
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +8 -6
- package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
- package/dist/src/components/steps/date/StepOneDateRange.js +5 -3
- package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
- package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
- package/dist/src/components/steps/date/StepOneDateRangePicker.js +3 -3
- package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +55 -58
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -3
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +4 -3
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.d.ts +17 -0
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js +117 -0
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js.map +1 -0
- package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +9 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -4
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +2 -11
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummary.js +3 -2
- package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +3 -2
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.js +2 -1
- package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +3 -2
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -4
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +14 -5
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +4 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/hooks/AutoFocusOnSelect.d.ts +11 -1
- package/dist/src/hooks/AutoFocusOnSelect.js +7 -7
- package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAreaAvailability.d.ts +10 -1
- package/dist/src/hooks/useAreaAvailability.js +67 -30
- package/dist/src/hooks/useAreaAvailability.js.map +1 -1
- package/dist/src/hooks/useAuxiliaryFilters.d.ts +8 -0
- package/dist/src/hooks/useAuxiliaryFilters.js +55 -0
- package/dist/src/hooks/useAuxiliaryFilters.js.map +1 -0
- package/dist/src/hooks/useGuestDateFormat.d.ts +11 -0
- package/dist/src/hooks/useGuestDateFormat.js +22 -0
- package/dist/src/hooks/useGuestDateFormat.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +6 -11
- package/dist/src/models/BasketRow.js +4 -4
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js +3 -2
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRowModal.js +5 -4
- package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +13 -7
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +2 -0
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.d.ts +13 -1
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js +20 -0
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +12 -0
- package/dist/src/translations/Translation.js +12 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +12 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/422.bundle.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EGuaranteePolicyDepositMode, IAvailabilityGuaranteePolicyDetails, IPromoCodeDetails } from '@roomstay/core';
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import BaseAPI from './BaseAPI';
|
|
4
|
-
import {
|
|
4
|
+
import { AreaAvailability, AuxiliaryFilterSelections } from '../contexts';
|
|
5
5
|
import { HotelDTO } from '../models/Api/HotelDTO';
|
|
6
6
|
import BasketRow from '../models/BasketRow';
|
|
7
7
|
import { Room } from '../models/Room/Room';
|
|
@@ -118,9 +118,7 @@ export default class AvailabilityAPI extends BaseAPI {
|
|
|
118
118
|
* TODO: This logic is repeated multiple times throughout this file, we should try and refactor parts of this file to use this function.
|
|
119
119
|
*/
|
|
120
120
|
private getQueryIDParams;
|
|
121
|
-
fetchAreaAvailability: (basketRow: BasketRow, hotelId: string, auxiliaryFilters?:
|
|
122
|
-
[roomCode: string]: number;
|
|
123
|
-
}>;
|
|
121
|
+
fetchAreaAvailability: (basketRow: BasketRow, hotelId: string, auxiliaryFilters?: AuxiliaryFilterSelections) => Promise<AreaAvailability>;
|
|
124
122
|
private getQueryID;
|
|
125
123
|
}
|
|
126
124
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import { EGuaranteePolicyDepositMode, IAvailability, IAvailabilityGuaranteePolicyDetails, IPromoCodeDetails } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport GetAvailabilityError from 'errors/GetAvailabilityError';\nimport { NoHotelSelectedError } from 'errors/NoHotelSelectedError';\nimport { RoomstayError } from 'errors/RoomstayError';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\n\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from '@/api/BaseAPI';\nimport { EngineFilterType } from '@/contexts';\nimport { APIError } from '@/errors/APIError';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateNight from '@/models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\ninterface IPriceByDay {\n [date: string]: number;\n}\ninterface INightStayByDay {\n [date: string]: number;\n}\n\ntype AvailabilityParams = {\n checkInDate: string;\n checkOutDate: string;\n adults: string;\n children: string;\n infants: string;\n promoCode?: string;\n promoOnly?: string;\n roomCode?: string;\n memberNumber?: string;\n includeHotelInfo: string;\n};\n\ntype NullableAvailabilityGuaranteePolicyDetails = Omit<IAvailabilityGuaranteePolicyDetails, 'depositMode'> & {\n depositMode: EGuaranteePolicyDepositMode | null;\n};\n\nexport interface IAvailabilityByHotelId {\n [hotelId: string]: {\n hotel: HotelDTO;\n rooms: Room[];\n };\n}\n\nexport default class AvailabilityAPI extends BaseAPI {\n public static policyMappings: { guarantee: { [name: string]: NullableAvailabilityGuaranteePolicyDetails }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n public static maxNightPrice = 0;\n public static minNightPrice: number | null = null;\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private cachedAvailabilityByHotelIds: {\n [queryID: string]: IAvailabilityByHotelId;\n };\n private cachedHasMinStayUpsellOpportunities: { [id: string]: boolean } = {};\n private calendar: { [id: string]: IPriceByDay } = {};\n private arrivalMinNightStay: { [id: string]: INightStayByDay } = {};\n private arrivalMaxNightStay: { [id: string]: INightStayByDay } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> | null } = {};\n private fetchDataPromiseByHotelIds: {\n [queryID: string]: Promise<IAvailabilityByHotelId> | null;\n } = {};\n private calendarPromises: {\n [id: string]: Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n }>;\n } = {};\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n private promoCodeDetails: { [code: string]: IPromoCodeDetails } = {};\n private cachedAreaAvailability: { [id: string]: { [roomCode: string]: number } } = {};\n private areaAvailabilityPromises: { [id: string]: Promise<{ [roomCode: string]: number }> } = {};\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n this.cachedAvailabilityByHotelIds = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getPromoCodeDetails(promoCode: string): IPromoCodeDetails | null {\n return this.promoCodeDetails[promoCode] ?? null;\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelId: string,\n memberNumber: string | number = '',\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n const response = await this.fetchCalendar(fromDate, adults, children, infants, promoCode, roomCode, rateCode, hotelId, memberNumber, undefined, isCrossSell);\n dayPricingData = response?.prices;\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (\n day: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelID: string,\n memberNumber: string | number = '',\n parseErrors = true\n ): Promise<{\n price: number;\n perCent: number;\n arrivalMinNightStay: number;\n arrivalMaxNightStay: number;\n } | null> => {\n if (!day || day.isBefore(dayjs(), 'date')) return null;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, infants, promoCode, roomCode, rateCode, hotelID, memberNumber, parseErrors, false);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery?.prices) {\n return null;\n }\n\n const priceForDay = dataForQuery.prices[day.format(API_DATE_FORMAT)];\n const arrivalMinNightStay = dataForQuery.arrivalMinNightStay[day.format(API_DATE_FORMAT)];\n const arrivalMaxNightStay = dataForQuery.arrivalMaxNightStay[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n arrivalMinNightStay,\n arrivalMaxNightStay,\n };\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelId: string,\n memberNumber: number | string = '',\n parseErrors = true,\n isCrossSell = false\n ): Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n } | null> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, infants, promoCode, roomCode, rateCode, isCrossSell, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return {\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n };\n }\n\n if (!!this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n const searchParams: AvailabilityParams = {\n checkInDate: fromDatePretty,\n checkOutDate: toDatePretty,\n adults: `${adults}`,\n children: `${children}`,\n infants: `${infants}`,\n promoCode: `${promoCode}`,\n includeHotelInfo: isCrossSell ? `0` : `1`,\n memberNumber: `${memberNumber}`,\n ...(roomCode ? { roomCode } : {}),\n ...(rateCode ? { rateCode } : {}),\n };\n\n const queryParams = new URLSearchParams(searchParams);\n\n const apiPath = `${this.getApiPath()}availability/calendar/${targetHotel}?${queryParams.toString()}`;\n\n let response;\n\n try {\n response = await fetch(apiPath, {\n credentials: 'omit',\n headers: await BaseAPI.getBaseHeaders(),\n });\n } catch (error) {\n console.error('Error fetching availability calendar:', error);\n }\n\n if (response?.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (parseErrors) {\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n this.arrivalMinNightStay[id] = json?.arrivalMinNightStay ?? {};\n this.arrivalMaxNightStay[id] = json?.arrivalMaxNightStay ?? {};\n this.calendar[id] = json.prices;\n resolve({\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n });\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string, memberNumber?: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (!!this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n memberNumber,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n /**\n * Check if minimum stay upsell opportunities exist.\n */\n public hasMinStayUpsellOpportunities(basketRow: BasketRow, hotelId: string, memberNumber?: string): boolean {\n const params = this.getQueryIDParams(basketRow, hotelId, memberNumber);\n const id = this.getQueryID(params);\n\n return this.cachedHasMinStayUpsellOpportunities[id] || false;\n }\n\n /**\n * Fetches availability data with minimum stay extensions.\n * This is used for finding upsell opportunities that require extending the stay.\n */\n public fetchMinimumStayExtensions = async (basketRow: BasketRow, hotelId: string, memberNumber?: string) => {\n return this.fetchAvailabilityData(basketRow, hotelId, memberNumber, false, false, true);\n };\n\n /**\n * Fetches availability data.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelId - The unique identifier of the hotel.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @param eager - If true, returns alternative availability if selected dates are unavailable\n * @param findMinStayExtensions - If true, returns availability for extended dates to meet minimum stay requirements. Default: false.\n * @returns The fetched availability data.\n */\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false, eager = false, findMinStayExtensions = false) => {\n const today = dayjs();\n\n if (!basketRow || !hotelId) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCodeStatus() === EPromoCodeStatus.Forbidden ? '' : basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([\n hotelId,\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n findMinStayExtensions,\n ]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n const promoCodeDetails = this.promoCodeDetails[promoCode];\n BasketContextErrorHandler.handlePromoSuccess(promoCode, promoCodeDetails?.oneTimeUseOnly);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (!!this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n try {\n const json: IAvailability = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(eager && { searchType: 'eager' }),\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n ...(findMinStayExtensions ? { findMinStayExtensions: 'true' } : {}),\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n if (eager && json.alternativeAvailability) {\n // There was no availability for the currently selected dates, but we eagerly searched and found alternative dates with availability.\n\n const roomArray = this.parseRoomsFromAvailability(json.alternativeAvailability.availability, oneNightStay);\n\n const checkInDate = json.alternativeAvailability.checkInDate;\n const checkOutDate = json.alternativeAvailability.checkOutDate;\n\n basketRow.setStartDate(dayjs(checkInDate));\n basketRow.setEndDate(dayjs(checkOutDate));\n\n resolve(roomArray);\n return;\n }\n\n const roomArray = this.parseRoomsFromAvailability(json, oneNightStay);\n\n this.cachedAvailability[id] = roomArray;\n this.cachedHasMinStayUpsellOpportunities[id] = json.hasMinStayUpsellOpportunities || false;\n\n resolve(roomArray);\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings.map((warning) => warning.message);\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n if (json.promoCodeDetails) {\n this.promoCodeDetails[promoCode] = json.promoCodeDetails;\n }\n BasketContextErrorHandler.handlePromoSuccess(promoCode, json.promoCodeDetails?.oneTimeUseOnly);\n }\n\n resolve([]);\n } catch (ex) {\n return reject(new APIError());\n }\n }).catch((reason) => {\n console.error(reason);\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromise[id];\n }\n };\n\n /**\n * Fetches availability data for multiple hotels.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelIds - The list of hotel identifiers.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @returns The fetched availability data grouped by hotelId.\n */\n public fetchAvailabilityDataByHotelIds = async (\n basketRow: BasketRow,\n hotelIds: string[],\n memberNumber?: string,\n ignoreRoomFilter = false\n ): Promise<IAvailabilityByHotelId | undefined> => {\n const today = dayjs();\n\n if (!basketRow || !hotelIds?.length) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCodeStatus() === EPromoCodeStatus.Forbidden ? '' : basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([\n hotelIds.join(','),\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n ]);\n\n if (this.cachedAvailabilityByHotelIds[id]) {\n return this.cachedAvailabilityByHotelIds[id];\n }\n\n if (!!this.fetchDataPromiseByHotelIds[id]) {\n return this.fetchDataPromiseByHotelIds[id];\n } else {\n this.fetchDataPromiseByHotelIds[id] = new Promise<IAvailabilityByHotelId>(async (resolve, reject) => {\n try {\n const json: {\n [hotelId: string]: {\n hotel: HotelDTO;\n availability?: IAvailability;\n };\n } = await this.post(\n APIEndpoint.AvailabilityByHotelIds,\n {\n hotelIds,\n checkInDate: fromDate,\n checkOutDate: toDate,\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n },\n ''\n );\n\n this.fetchDataPromiseByHotelIds[id] = null;\n\n const availabilityByHotelId: IAvailabilityByHotelId = {};\n\n for (const hotelId of hotelIds) {\n const hotelData = json[hotelId];\n availabilityByHotelId[hotelId] = {\n hotel: hotelData?.hotel,\n rooms: hotelData?.availability ? this.parseRoomsFromAvailability(hotelData?.availability, oneNightStay) : [],\n };\n }\n\n this.cachedAvailabilityByHotelIds[id] = availabilityByHotelId;\n resolve(availabilityByHotelId);\n } catch (ex) {\n console.error(ex);\n return reject(new APIError());\n }\n }).catch((reason) => {\n console.error(reason);\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromiseByHotelIds[id];\n }\n };\n\n // TODO: Add a type for the JSON response\n private parseRoomsFromAvailability(json: IAvailability, oneNightStay = false): Room[] {\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n Object.keys(json.guaranteePolicies).map((code) => {\n if (json.guaranteePolicyDetails?.[code]?.depositMode) {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicyDetails[code];\n } else {\n // For backward compatibility and SynXis\n AvailabilityAPI.policyMappings.guarantee[code] = {\n code,\n name: code,\n longDescription: json.guaranteePolicies[code],\n hide: false,\n depositMode: null,\n };\n }\n });\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n const rooms: { [rate: string]: Room } = {};\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n this.rooms[roomCode].code = roomCode;\n rooms[roomCode] = this.rooms[roomCode];\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode]?.getRate(rateKey)?.nightRates ?? {}).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available.toString();\n rateNight.cost = nightData.cost.toString();\n rateNight.discount = nightData.discount.toString();\n rateNight.total = nightData.total.toString();\n rateNight.tax = nightData.tax.toString();\n rateNight.fee = nightData.fee.toString();\n rateNight.date = day;\n\n if (nightData.fees) {\n for (const fee of nightData.fees) {\n rateNight.fees.push({ name: fee.name, amount: fee.amount });\n }\n }\n\n (rooms[roomCode].getRate(rateKey) as RoomRate).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n return Object.values(rooms);\n }\n\n return [];\n }\n\n public fetchAvailability = async ({\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n promoOnly,\n hotelId,\n }: {\n fromDate: dayjs.Dayjs;\n toDate: dayjs.Dayjs;\n adults: number;\n children?: number;\n infants: number;\n promoCode?: string;\n roomCode?: string;\n promoOnly?: boolean;\n hotelId: string;\n }) => {\n if (!fromDate || !toDate) return;\n\n return await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelId\n );\n };\n\n /**\n * TODO: This logic is repeated multiple times throughout this file, we should try and refactor parts of this file to use this function.\n */\n private getQueryIDParams(basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false, findMinStayExtensions = false) {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n return [\n hotelId,\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n findMinStayExtensions,\n ];\n }\n\n public fetchAreaAvailability = async (basketRow: BasketRow, hotelId: string, auxiliaryFilters?: EngineFilterType) => {\n const roomCodes = Object.keys(this.rooms);\n\n const serializedAuxiliaryFilters = JSON.stringify(auxiliaryFilters);\n\n const id = this.getQueryID([hotelId, basketRow.getStartDate(), basketRow.getEndDate(), roomCodes.join(','), serializedAuxiliaryFilters]);\n\n if (id in this.cachedAreaAvailability) {\n return this.cachedAreaAvailability[id];\n }\n\n if (id in this.areaAvailabilityPromises) {\n return this.areaAvailabilityPromises[id];\n }\n\n this.areaAvailabilityPromises[id] = this.get(\n APIEndpoint.AreaAvailability,\n {\n roomCodes: Object.keys(this.rooms),\n checkInDate: basketRow.getStartDate(),\n checkOutDate: basketRow.getEndDate(),\n auxiliaryFilters: serializedAuxiliaryFilters,\n },\n '',\n hotelId\n );\n\n const result = await this.areaAvailabilityPromises[id];\n\n this.cachedAreaAvailability[id] = result;\n\n return result;\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AvailabilityAPI.js","sourceRoot":"/","sources":["src/api/AvailabilityAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import { EGuaranteePolicyDepositMode, IAvailability, IAvailabilityGuaranteePolicyDetails, IPromoCodeDetails } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport GetAvailabilityError from 'errors/GetAvailabilityError';\nimport { NoHotelSelectedError } from 'errors/NoHotelSelectedError';\nimport { RoomstayError } from 'errors/RoomstayError';\nimport { BasketContextErrorHandler } from 'handlers/BasketContextErrorHandler';\n\nimport BaseAPI, { API_DATE_FORMAT, APIEndpoint } from '@/api/BaseAPI';\nimport { AreaAvailability, AuxiliaryFilterSelections } from '@/contexts';\nimport { APIError } from '@/errors/APIError';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport RoomRateNight from '@/models/Room/RoomRateNight';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\ninterface IPriceByDay {\n [date: string]: number;\n}\ninterface INightStayByDay {\n [date: string]: number;\n}\n\ntype AvailabilityParams = {\n checkInDate: string;\n checkOutDate: string;\n adults: string;\n children: string;\n infants: string;\n promoCode?: string;\n promoOnly?: string;\n roomCode?: string;\n memberNumber?: string;\n includeHotelInfo: string;\n};\n\ntype NullableAvailabilityGuaranteePolicyDetails = Omit<IAvailabilityGuaranteePolicyDetails, 'depositMode'> & {\n depositMode: EGuaranteePolicyDepositMode | null;\n};\n\nexport interface IAvailabilityByHotelId {\n [hotelId: string]: {\n hotel: HotelDTO;\n rooms: Room[];\n };\n}\n\nexport default class AvailabilityAPI extends BaseAPI {\n public static policyMappings: { guarantee: { [name: string]: NullableAvailabilityGuaranteePolicyDetails }; cancel: { [name: string]: string } } = { guarantee: {}, cancel: {} };\n public static maxNightPrice = 0;\n public static minNightPrice: number | null = null;\n private roomTypesData: any = null;\n private ratePlansData: any = null;\n private cachedMinNightStay: { [id: string]: any } = {};\n private cachedAvailability: { [id: string]: Room[] };\n private cachedAvailabilityByHotelIds: {\n [queryID: string]: IAvailabilityByHotelId;\n };\n private cachedHasMinStayUpsellOpportunities: { [id: string]: boolean } = {};\n private calendar: { [id: string]: IPriceByDay } = {};\n private arrivalMinNightStay: { [id: string]: INightStayByDay } = {};\n private arrivalMaxNightStay: { [id: string]: INightStayByDay } = {};\n private crossSellHotelInfo: { [hotelId: string]: any } = {};\n private calendarWarnings: { [id: string]: string[] } = {};\n private availabilityWarnings: { [id: string]: string[] } = {};\n private rooms: { [code: string]: Room };\n private rates: { [code: string]: RoomRate };\n private fetchDataPromise: { [dateRange: string]: Promise<Room[]> | null } = {};\n private fetchDataPromiseByHotelIds: {\n [queryID: string]: Promise<IAvailabilityByHotelId> | null;\n } = {};\n private calendarPromises: {\n [id: string]: Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n }>;\n } = {};\n private cachedMidNightStayPromises: { [id: string]: Promise<any> } = {};\n private promoCodeDetails: { [code: string]: IPromoCodeDetails } = {};\n private cachedAreaAvailability: { [id: string]: { [roomCode: string]: number } } = {};\n private areaAvailabilityPromises: { [id: string]: Promise<AreaAvailability> } = {};\n\n public constructor() {\n super();\n\n this.rooms = {};\n this.rates = {};\n\n this.cachedAvailability = {};\n this.cachedAvailabilityByHotelIds = {};\n }\n\n public getCrossSellHotelInfo(hotelId: number | string) {\n return this.crossSellHotelInfo[String(hotelId)] ?? {};\n }\n\n public getPromoCodeDetails(promoCode: string): IPromoCodeDetails | null {\n return this.promoCodeDetails[promoCode] ?? null;\n }\n\n public getCheapestPricePerDay = async (\n fromDate: dayjs.Dayjs,\n toDate: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelId: string,\n memberNumber: string | number = '',\n isCrossSell = false\n ): Promise<{ [date: string]: number }> => {\n let dayPricingData = null;\n if (fromDate === undefined) {\n return {};\n }\n\n try {\n const response = await this.fetchCalendar(fromDate, adults, children, infants, promoCode, roomCode, rateCode, hotelId, memberNumber, undefined, isCrossSell);\n dayPricingData = response?.prices;\n } catch (ex) {\n if (!(ex instanceof GetAvailabilityError)) {\n throw ex;\n } else {\n return {};\n }\n }\n\n if (!dayPricingData) {\n return {};\n }\n\n const daysBetween = toDate.diff(fromDate, 'day');\n const prices: any = {};\n\n for (let i = 0; i <= daysBetween; i++) {\n const currentDay = fromDate.add(i, 'day');\n prices[currentDay.format(API_DATE_FORMAT)] = dayPricingData[currentDay.format(API_DATE_FORMAT)];\n }\n\n return prices;\n };\n\n public getCheapestPriceForDay = async (\n day: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelID: string,\n memberNumber: string | number = '',\n parseErrors = true\n ): Promise<{\n price: number;\n perCent: number;\n arrivalMinNightStay: number;\n arrivalMaxNightStay: number;\n } | null> => {\n if (!day || day.isBefore(dayjs(), 'date')) return null;\n\n let dataForQuery = null;\n try {\n dataForQuery = await this.fetchCalendar(day, adults, children, infants, promoCode, roomCode, rateCode, hotelID, memberNumber, parseErrors, false);\n } catch (ex) {\n console.log(ex);\n }\n\n if (!dataForQuery?.prices) {\n return null;\n }\n\n const priceForDay = dataForQuery.prices[day.format(API_DATE_FORMAT)];\n const arrivalMinNightStay = dataForQuery.arrivalMinNightStay[day.format(API_DATE_FORMAT)];\n const arrivalMaxNightStay = dataForQuery.arrivalMaxNightStay[day.format(API_DATE_FORMAT)];\n\n return {\n price: priceForDay,\n perCent: 0,\n arrivalMinNightStay,\n arrivalMaxNightStay,\n };\n };\n\n public fetchCalendar = async (\n month: dayjs.Dayjs,\n adults: number,\n children: number,\n infants: number,\n promoCode: string,\n roomCode: string,\n rateCode: string,\n hotelId: string,\n memberNumber: number | string = '',\n parseErrors = true,\n isCrossSell = false\n ): Promise<{\n prices: IPriceByDay;\n arrivalMinNightStay: INightStayByDay;\n arrivalMaxNightStay: INightStayByDay;\n } | null> => {\n month = month ?? dayjs();\n\n let fromMonth = month.startOf('month');\n fromMonth = Number(fromMonth.format('M')) % 2 === 0 ? fromMonth.subtract(1, 'month') : (fromMonth = month);\n\n fromMonth = fromMonth.startOf('month');\n\n const now = dayjs();\n if (fromMonth.isBefore(now, 'date')) {\n fromMonth = now;\n }\n\n const toMonth = fromMonth.add(1, 'month').endOf('month');\n\n const fromDatePretty = fromMonth.format(API_DATE_FORMAT);\n const toDatePretty = toMonth.format(API_DATE_FORMAT);\n\n const targetHotel = hotelId;\n\n if (!targetHotel) {\n return null;\n }\n\n const id = this.getQueryID([targetHotel, fromDatePretty, toDatePretty, adults, children, infants, promoCode, roomCode, rateCode, isCrossSell, memberNumber]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.calendar[id] && parseErrors) {\n if (this.calendarWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.calendarWarnings[id]);\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n\n return {\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n };\n }\n\n if (!!this.calendarPromises[id]) {\n return this.calendarPromises[id];\n }\n\n this.calendarPromises[id] = new Promise(async (resolve, reject) => {\n const searchParams: AvailabilityParams = {\n checkInDate: fromDatePretty,\n checkOutDate: toDatePretty,\n adults: `${adults}`,\n children: `${children}`,\n infants: `${infants}`,\n promoCode: `${promoCode}`,\n includeHotelInfo: isCrossSell ? `0` : `1`,\n memberNumber: `${memberNumber}`,\n ...(roomCode ? { roomCode } : {}),\n ...(rateCode ? { rateCode } : {}),\n };\n\n const queryParams = new URLSearchParams(searchParams);\n\n const apiPath = `${this.getApiPath()}availability/calendar/${targetHotel}?${queryParams.toString()}`;\n\n let response;\n\n try {\n response = await fetch(apiPath, {\n credentials: 'omit',\n headers: await BaseAPI.getBaseHeaders(),\n });\n } catch (error) {\n console.error('Error fetching availability calendar:', error);\n }\n\n if (response?.ok) {\n const json = await response.json();\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (parseErrors) {\n if (json.warnings && json.warnings.length) {\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n this.calendarWarnings[id] = json.warnings;\n } else {\n BasketContextErrorHandler.handlePromoSuccess(promoCode);\n }\n }\n\n Object.values(json.prices).forEach((price: any) => {\n if (!AvailabilityAPI.minNightPrice || Number(price) < AvailabilityAPI.minNightPrice) {\n AvailabilityAPI.minNightPrice = Number(price);\n }\n\n if (AvailabilityAPI.maxNightPrice < Number(price)) {\n AvailabilityAPI.maxNightPrice = Number(price);\n }\n });\n\n if (hotelId) {\n this.crossSellHotelInfo[String(hotelId)] = json.hotel;\n }\n this.arrivalMinNightStay[id] = json?.arrivalMinNightStay ?? {};\n this.arrivalMaxNightStay[id] = json?.arrivalMaxNightStay ?? {};\n this.calendar[id] = json.prices;\n resolve({\n prices: this.calendar[id],\n arrivalMinNightStay: this.arrivalMinNightStay[id],\n arrivalMaxNightStay: this.arrivalMaxNightStay[id],\n });\n } else {\n reject(new GetAvailabilityError(fromMonth, toMonth));\n }\n });\n\n return this.calendarPromises[id];\n };\n\n public invalidateAvailability = async (basketRow: BasketRow, hotelId: string) => {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelId, fromDate, toDate, adults, children, infants, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay]);\n delete this.cachedAvailability[id];\n };\n\n public fetchMinNightStayData = async (basketRow: BasketRow, hotelID: string, memberNumber?: string) => {\n // TODO: refactor this breakdown.\n\n if (!basketRow) {\n return;\n }\n\n if (!hotelID) {\n throw new NoHotelSelectedError();\n }\n\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const roomCode = basketRow.getRoomCode();\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([hotelID, fromDate, toDate, adults, children, promoCode, roomCode, RoomstayThemeEngine.selectedLang, oneNightStay, memberNumber]);\n\n if (this.cachedMinNightStay[id]) {\n return this.cachedMinNightStay[id];\n }\n\n if (!!this.cachedMidNightStayPromises[id]) {\n return this.cachedMidNightStayPromises[id];\n }\n\n this.cachedMidNightStayPromises[id] = new Promise(async (resolve) => {\n const json = await this.get(\n APIEndpoint.MinNightStay,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n memberNumber,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelID\n );\n\n delete this.cachedMidNightStayPromises[id];\n this.cachedMinNightStay[id] = json;\n\n resolve(this.cachedMinNightStay[id]);\n });\n\n return this.cachedMidNightStayPromises[id];\n };\n\n /**\n * Check if minimum stay upsell opportunities exist.\n */\n public hasMinStayUpsellOpportunities(basketRow: BasketRow, hotelId: string, memberNumber?: string): boolean {\n const params = this.getQueryIDParams(basketRow, hotelId, memberNumber);\n const id = this.getQueryID(params);\n\n return this.cachedHasMinStayUpsellOpportunities[id] || false;\n }\n\n /**\n * Fetches availability data with minimum stay extensions.\n * This is used for finding upsell opportunities that require extending the stay.\n */\n public fetchMinimumStayExtensions = async (basketRow: BasketRow, hotelId: string, memberNumber?: string) => {\n return this.fetchAvailabilityData(basketRow, hotelId, memberNumber, false, false, true);\n };\n\n /**\n * Fetches availability data.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelId - The unique identifier of the hotel.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @param eager - If true, returns alternative availability if selected dates are unavailable\n * @param findMinStayExtensions - If true, returns availability for extended dates to meet minimum stay requirements. Default: false.\n * @returns The fetched availability data.\n */\n public fetchAvailabilityData = async (basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false, eager = false, findMinStayExtensions = false) => {\n const today = dayjs();\n\n if (!basketRow || !hotelId) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCodeStatus() === EPromoCodeStatus.Forbidden ? '' : basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([\n hotelId,\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n findMinStayExtensions,\n ]);\n\n // Don't parse warnings when we're making a cross-hotel availability request\n if (this.cachedAvailability[id]) {\n if (this.availabilityWarnings[id]) {\n BasketContextErrorHandler.handleAvailabilityWarnings(this.availabilityWarnings[id]);\n } else {\n const promoCodeDetails = this.promoCodeDetails[promoCode];\n BasketContextErrorHandler.handlePromoSuccess(promoCode, promoCodeDetails?.oneTimeUseOnly);\n }\n\n return this.cachedAvailability[id];\n }\n\n if (!!this.fetchDataPromise[id]) {\n return this.fetchDataPromise[id];\n } else {\n this.fetchDataPromise[id] = new Promise<Room[]>(async (resolve, reject) => {\n try {\n const json: IAvailability = await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(eager && { searchType: 'eager' }),\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n ...(findMinStayExtensions ? { findMinStayExtensions: 'true' } : {}),\n },\n '',\n hotelId\n );\n\n this.fetchDataPromise[id] = null;\n\n if (eager && json.alternativeAvailability) {\n // There was no availability for the currently selected dates, but we eagerly searched and found alternative dates with availability.\n\n const roomArray = this.parseRoomsFromAvailability(json.alternativeAvailability.availability, oneNightStay);\n\n const checkInDate = json.alternativeAvailability.checkInDate;\n const checkOutDate = json.alternativeAvailability.checkOutDate;\n\n basketRow.setStartDate(dayjs(checkInDate));\n basketRow.setEndDate(dayjs(checkOutDate));\n\n resolve(roomArray);\n return;\n }\n\n const roomArray = this.parseRoomsFromAvailability(json, oneNightStay);\n\n this.cachedAvailability[id] = roomArray;\n this.cachedHasMinStayUpsellOpportunities[id] = json.hasMinStayUpsellOpportunities || false;\n\n resolve(roomArray);\n\n if (json.warnings?.length) {\n this.availabilityWarnings[id] = json.warnings.map((warning) => warning.message);\n BasketContextErrorHandler.handleAvailabilityWarnings(json.warnings);\n } else {\n if (json.promoCodeDetails) {\n this.promoCodeDetails[promoCode] = json.promoCodeDetails;\n }\n BasketContextErrorHandler.handlePromoSuccess(promoCode, json.promoCodeDetails?.oneTimeUseOnly);\n }\n\n resolve([]);\n } catch (ex) {\n return reject(new APIError());\n }\n }).catch((reason) => {\n console.error(reason);\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromise[id];\n }\n };\n\n /**\n * Fetches availability data for multiple hotels.\n *\n * @param basketRow - The basket row containing booking details.\n * @param hotelIds - The list of hotel identifiers.\n * @param memberNumber - (Optional) The membership number of the user.\n * @param ignoreRoomFilter - If true, skips sending the room code filter in the API request. Default: false.\n * @returns The fetched availability data grouped by hotelId.\n */\n public fetchAvailabilityDataByHotelIds = async (\n basketRow: BasketRow,\n hotelIds: string[],\n memberNumber?: string,\n ignoreRoomFilter = false\n ): Promise<IAvailabilityByHotelId | undefined> => {\n const today = dayjs();\n\n if (!basketRow || !hotelIds?.length) {\n return;\n }\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCodeStatus() === EPromoCodeStatus.Forbidden ? '' : basketRow.getPromoCode();\n const promoOnly = basketRow.getPromoOnly();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n\n // If ignoreRoomFilter true, skips sending the room code filter\n // Otherwise, if the the URL's room parameter is present, send the room code filter\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n const id = this.getQueryID([\n hotelIds.join(','),\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n ]);\n\n if (this.cachedAvailabilityByHotelIds[id]) {\n return this.cachedAvailabilityByHotelIds[id];\n }\n\n if (!!this.fetchDataPromiseByHotelIds[id]) {\n return this.fetchDataPromiseByHotelIds[id];\n } else {\n this.fetchDataPromiseByHotelIds[id] = new Promise<IAvailabilityByHotelId>(async (resolve, reject) => {\n try {\n const json: {\n [hotelId: string]: {\n hotel: HotelDTO;\n availability?: IAvailability;\n };\n } = await this.post(\n APIEndpoint.AvailabilityByHotelIds,\n {\n hotelIds,\n checkInDate: fromDate,\n checkOutDate: toDate,\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n memberNumber,\n ...(roomCodeParam ? { roomCode: roomCodeParam } : {}),\n },\n ''\n );\n\n this.fetchDataPromiseByHotelIds[id] = null;\n\n const availabilityByHotelId: IAvailabilityByHotelId = {};\n\n for (const hotelId of hotelIds) {\n const hotelData = json[hotelId];\n availabilityByHotelId[hotelId] = {\n hotel: hotelData?.hotel,\n rooms: hotelData?.availability ? this.parseRoomsFromAvailability(hotelData?.availability, oneNightStay) : [],\n };\n }\n\n this.cachedAvailabilityByHotelIds[id] = availabilityByHotelId;\n resolve(availabilityByHotelId);\n } catch (ex) {\n console.error(ex);\n return reject(new APIError());\n }\n }).catch((reason) => {\n console.error(reason);\n throw new RoomstayError('Failed to load calendar availability');\n });\n\n return this.fetchDataPromiseByHotelIds[id];\n }\n };\n\n // TODO: Add a type for the JSON response\n private parseRoomsFromAvailability(json: IAvailability, oneNightStay = false): Room[] {\n const dateToObject = (data: any) => {\n data.validUntil = dayjs(data.validUntil);\n data.cachedSince = dayjs(data.cachedSince);\n\n return data;\n };\n\n Object.keys(json.guaranteePolicies).map((code) => {\n if (json.guaranteePolicyDetails?.[code]?.depositMode) {\n AvailabilityAPI.policyMappings.guarantee[code] = json.guaranteePolicyDetails[code];\n } else {\n // For backward compatibility and SynXis\n AvailabilityAPI.policyMappings.guarantee[code] = {\n code,\n name: code,\n longDescription: json.guaranteePolicies[code],\n hide: false,\n depositMode: null,\n };\n }\n });\n\n if (json.cancelPolicies) {\n Object.keys(json.cancelPolicies).map((code) => {\n AvailabilityAPI.policyMappings.cancel[code] = json.cancelPolicies[code];\n });\n }\n\n const rooms: { [rate: string]: Room } = {};\n\n if (json.roomTypes) {\n const allRoomsByKey = Object.keys(json.roomTypes);\n if (allRoomsByKey.length) {\n this.roomTypesData = dateToObject(json.roomTypes);\n\n allRoomsByKey.forEach((roomCode: any) => {\n this.roomTypesData[roomCode].code = roomCode;\n this.rooms[roomCode] = Room.fromData(this.roomTypesData[roomCode]);\n this.rooms[roomCode].code = roomCode;\n rooms[roomCode] = this.rooms[roomCode];\n });\n }\n }\n\n if (json.ratePlans) {\n const allRatesByKey = Object.keys(json.ratePlans);\n if (allRatesByKey.length) {\n this.ratePlansData = dateToObject(json.ratePlans);\n\n allRatesByKey.forEach((rateCode: any) => {\n this.ratePlansData[rateCode].code = rateCode;\n\n this.rates[rateCode] = RoomRate.fromData(this.ratePlansData[rateCode]);\n });\n }\n }\n\n if (json.roomNights) {\n const roomNights = json.roomNights;\n\n const allNightsByKey = Object.keys(roomNights);\n\n let first = true;\n if (allNightsByKey.length) {\n allNightsByKey.forEach((date: string) => {\n const day = dayjs(date);\n Object.keys(roomNights[date]).forEach((roomCode: string) => {\n Object.keys(roomNights[date][roomCode].rates).forEach((rateKey) => {\n const nightData = roomNights[date][roomCode].rates[rateKey];\n\n if (first) {\n const rate = RoomRate.fromData(this.ratePlansData[rateKey]);\n rate.code = rateKey;\n rooms[roomCode].addRate(rate);\n }\n\n if (oneNightStay && Object.keys(rooms[roomCode]?.getRate(rateKey)?.nightRates ?? {}).length) {\n return;\n }\n\n const rateNight = new RoomRateNight();\n rateNight.available = roomNights[date][roomCode].available.toString();\n rateNight.cost = nightData.cost.toString();\n rateNight.discount = nightData.discount.toString();\n rateNight.total = nightData.total.toString();\n rateNight.tax = nightData.tax.toString();\n rateNight.fee = nightData.fee.toString();\n rateNight.date = day;\n\n if (nightData.fees) {\n for (const fee of nightData.fees) {\n rateNight.fees.push({ name: fee.name, amount: fee.amount });\n }\n }\n\n (rooms[roomCode].getRate(rateKey) as RoomRate).nightRates[date] = rateNight;\n });\n });\n\n first = false;\n });\n }\n\n return Object.values(rooms);\n }\n\n return [];\n }\n\n public fetchAvailability = async ({\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n promoOnly,\n hotelId,\n }: {\n fromDate: dayjs.Dayjs;\n toDate: dayjs.Dayjs;\n adults: number;\n children?: number;\n infants: number;\n promoCode?: string;\n roomCode?: string;\n promoOnly?: boolean;\n hotelId: string;\n }) => {\n if (!fromDate || !toDate) return;\n\n return await this.get(\n APIEndpoint.Availability,\n {\n checkInDate: fromDate,\n checkOutDate: toDate,\n\n adults,\n children,\n infants,\n promoCode,\n promoOnly,\n ...(roomCode ? { roomCode } : {}),\n },\n '',\n hotelId\n );\n };\n\n /**\n * TODO: This logic is repeated multiple times throughout this file, we should try and refactor parts of this file to use this function.\n */\n private getQueryIDParams(basketRow: BasketRow, hotelId: string, memberNumber?: string, ignoreRoomFilter = false, findMinStayExtensions = false) {\n const today = dayjs();\n\n const adults = basketRow.getAdults();\n const children = basketRow.getChildren();\n const infants = basketRow.getInfants();\n const promoCode = basketRow.getPromoCode();\n const enableRoomCodeFilter = basketRow.getEnableRoomCodeFilter();\n const roomCodeParam = ignoreRoomFilter ? '' : enableRoomCodeFilter ? basketRow.getRoomCode() : '';\n\n let toDate = basketRow.getEndDate();\n const fromDate = basketRow.getStartDate()?.isBefore(today, 'day') ? today : basketRow.getStartDate();\n\n let oneNightStay = false;\n if (fromDate.isSameOrAfter(toDate, 'date')) {\n oneNightStay = true;\n toDate = fromDate.add(1, 'day');\n }\n\n return [\n hotelId,\n fromDate,\n toDate,\n adults,\n children,\n infants,\n promoCode,\n roomCodeParam,\n RoomstayThemeEngine.selectedLang,\n oneNightStay,\n memberNumber,\n findMinStayExtensions,\n ];\n }\n\n public fetchAreaAvailability = async (basketRow: BasketRow, hotelId: string, auxiliaryFilters?: AuxiliaryFilterSelections): Promise<AreaAvailability> => {\n const roomCodes = Object.keys(this.rooms);\n\n const serializedAuxiliaryFilters = JSON.stringify(auxiliaryFilters);\n\n const id = this.getQueryID([hotelId, basketRow.getStartDate(), basketRow.getEndDate(), roomCodes.join(','), serializedAuxiliaryFilters]);\n\n if (id in this.cachedAreaAvailability) {\n return this.cachedAreaAvailability[id];\n }\n\n if (id in this.areaAvailabilityPromises) {\n return this.areaAvailabilityPromises[id];\n }\n\n this.areaAvailabilityPromises[id] = this.get(\n APIEndpoint.AreaAvailability,\n {\n roomCodes: Object.keys(this.rooms),\n checkInDate: basketRow.getStartDate(),\n checkOutDate: basketRow.getEndDate(),\n auxiliaryFilters: serializedAuxiliaryFilters,\n },\n '',\n hotelId\n );\n\n const result = await this.areaAvailabilityPromises[id];\n\n this.cachedAreaAvailability[id] = result;\n\n return result;\n };\n\n private getQueryID = (params: any[]) => {\n return params.map((param) => (param && param.format ? param.format(API_DATE_FORMAT) : param)).join('-');\n };\n}\n"]}
|
|
@@ -11,7 +11,13 @@ export declare enum AlertType {
|
|
|
11
11
|
LightGray = "--light-gray"
|
|
12
12
|
}
|
|
13
13
|
export declare enum AlertVariant {
|
|
14
|
-
|
|
14
|
+
/** Solid background style */
|
|
15
|
+
Filled = "--filled",
|
|
16
|
+
/**
|
|
17
|
+
* Modifier class (e.g. alert--outlined)
|
|
18
|
+
* Transparent background with border and text color
|
|
19
|
+
*/
|
|
20
|
+
Outlined = "--outlined"
|
|
15
21
|
}
|
|
16
22
|
export interface AlertProps extends PropsWithChildren<any> {
|
|
17
23
|
type?: AlertType;
|
|
@@ -20,7 +20,13 @@ var AlertType;
|
|
|
20
20
|
})(AlertType || (exports.AlertType = AlertType = {}));
|
|
21
21
|
var AlertVariant;
|
|
22
22
|
(function (AlertVariant) {
|
|
23
|
+
/** Solid background style */
|
|
23
24
|
AlertVariant["Filled"] = "--filled";
|
|
25
|
+
/**
|
|
26
|
+
* Modifier class (e.g. alert--outlined)
|
|
27
|
+
* Transparent background with border and text color
|
|
28
|
+
*/
|
|
29
|
+
AlertVariant["Outlined"] = "--outlined";
|
|
24
30
|
})(AlertVariant || (exports.AlertVariant = AlertVariant = {}));
|
|
25
31
|
function Alert(props) {
|
|
26
32
|
const type = props.type ? props.type : AlertType.Success;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sourceRoot":"/","sources":["src/components/generic/Alert.tsx"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Alert.js","sourceRoot":"/","sources":["src/components/generic/Alert.tsx"],"names":[],"mappings":";;;;;;AA8CA,wBAiBC;AA9DD,4DAAoC;AACpC,kDAA4D;AAE5D,0EAAgE;AAEhE,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,8BAAiB,CAAA;IACjB,mCAAsB,CAAA;IACtB,mCAAsB,CAAA;IACtB,mCAAsB,CAAA;IACtB,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;IACnB,uCAA0B,CAAA;AAC9B,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB;AAED,IAAY,YASX;AATD,WAAY,YAAY;IACpB,6BAA6B;IAC7B,mCAAmB,CAAA;IAEnB;;;OAGG;IACH,uCAAuB,CAAA;AAC3B,CAAC,EATW,YAAY,4BAAZ,YAAY,QASvB;AAqBD,SAAwB,KAAK,CAAC,KAAiB;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;IAEzD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;QACxE,iBAAiB,EAAE,KAAK,CAAC,YAAY;QACrC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,kBAAkB,EAAE,KAAK,CAAC,YAAY;QACtC,qBAAqB,EAAE,KAAK,CAAC,QAAQ;QACrC,aAAa,EAAE,KAAK,CAAC,QAAQ;KAChC,CAAC,CAAC;IAEH,OAAO,CACH,uCAAK,SAAS,EAAE,OAAO;QAClB,KAAK,CAAC,IAAI,IAAI,8BAAC,cAAI,IAAC,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,GAAI;QAChI,KAAK,CAAC,QAAQ,CACb,CACT,CAAC;AACN,CAAC","sourcesContent":["import { Color } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { PropsWithChildren, ReactNode } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\n\nexport enum AlertType {\n Alert = '--alert',\n Accent1 = '--accent-1',\n Accent2 = '--accent-2',\n Accent3 = '--accent-3',\n Success = '--success',\n Danger = '--danger',\n LightGray = '--light-gray',\n}\n\nexport enum AlertVariant {\n /** Solid background style */\n Filled = '--filled',\n\n /**\n * Modifier class (e.g. alert--outlined)\n * Transparent background with border and text color\n */\n Outlined = '--outlined',\n}\n\nexport interface AlertProps extends PropsWithChildren<any> {\n type?: AlertType;\n icon?: IconType;\n iconAlignCenter?: boolean;\n iconSize?: string;\n iconClassName?: string;\n iconColor?: Color;\n\n heavyPadding?: boolean;\n noMargin?: boolean;\n noBorder?: boolean;\n noIconMargin?: boolean;\n\n variant?: AlertVariant;\n className?: string;\n\n [x: string]: ReactNode;\n}\n\nexport default function Alert(props: AlertProps) {\n const type = props.type ? props.type : AlertType.Success;\n\n const classes = classNames('c-alert', props.className, type, props.variant, {\n '--heavy-padding': props.heavyPadding,\n '--icon-center': props.iconAlignCenter,\n '--no-icon-margin': props.noIconMargin,\n 'u-marg-bottom--none': props.noMargin,\n '--no-border': props.noBorder,\n });\n\n return (\n <div className={classes}>\n {props.icon && <Icon className={props.iconClassName} icon={props.icon} size={props.iconSize || '16px'} color={props.iconColor} />}\n {props.children}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuxiliaryFilterSelections } from '../../../contexts/index.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { HotelRoomGroupsDTO } from '../../../models/Api/HotelDTO';
|
|
4
|
+
type GroupFilters = HotelRoomGroupsDTO[number]['filters'];
|
|
5
|
+
export interface AuxiliaryFilterSelectsProps {
|
|
6
|
+
groupFilters: GroupFilters;
|
|
7
|
+
values: AuxiliaryFilterSelections;
|
|
8
|
+
onChange: (filterKey: string, value: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function AuxiliaryFilterSelects({ groupFilters, values, onChange }: AuxiliaryFilterSelectsProps): React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AuxiliaryFilterSelects = AuxiliaryFilterSelects;
|
|
7
|
+
const core_1 = require("@roomstay/core");
|
|
8
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const Select_1 = require("../Select/Select");
|
|
11
|
+
const AuxiliaryFilterControls_module_scss_1 = __importDefault(require("./AuxiliaryFilterControls.module.scss"));
|
|
12
|
+
function AuxiliaryFilterSelects({ groupFilters, values, onChange }) {
|
|
13
|
+
const filterKeys = Object.keys(groupFilters !== null && groupFilters !== void 0 ? groupFilters : {});
|
|
14
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, filterKeys.map((filterKey) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const filter = groupFilters[filterKey];
|
|
17
|
+
if (filter.type !== 'select')
|
|
18
|
+
return null;
|
|
19
|
+
const options = [{ label: filter.name, value: null }, ...filter.options];
|
|
20
|
+
const currentValue = (_a = values[filterKey]) !== null && _a !== void 0 ? _a : (_b = options[0]) === null || _b === void 0 ? void 0 : _b.value;
|
|
21
|
+
return (react_1.default.createElement(Select_1.Select, { key: filterKey, className: (0, classnames_1.default)(AuxiliaryFilterControls_module_scss_1.default.select, 'text-small', 'u-border-rounded'), keyName: (0, core_1.nameof)('value'), labelName: (0, core_1.nameof)('label'), options: options, value: currentValue, onChange: (value) => onChange(filterKey, value) }));
|
|
22
|
+
})));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=AuxiliaryFilterControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuxiliaryFilterControls.js","sourceRoot":"/","sources":["src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.tsx"],"names":[],"mappings":";;;;;AAsBA,wDA0BC;AA/CD,yCAA0D;AAC1D,4DAAoC;AACpC,kDAA0B;AAE1B,+DAA4D;AAG5D,gHAA2D;AAc3D,SAAgB,sBAAsB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAA+B;IAClG,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,CAAC;IAEnD,OAAO,CACH,8DACK,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;;QAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,OAAO,GAA4B,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAClG,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,mCAAI,MAAC,OAAO,CAAC,CAAC,CAAS,0CAAE,KAAK,CAAC;QAErE,OAAO,CACH,8BAAC,eAAM,IACH,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,6CAAM,CAAC,MAAM,EAAE,YAAY,EAAE,kBAAkB,CAAC,EACtE,OAAO,EAAE,IAAA,aAAM,EAAwB,OAAO,CAAC,EAC/C,SAAS,EAAE,IAAA,aAAM,EAAwB,OAAO,CAAC,EACjD,OAAO,EAAE,OAAc,EACvB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,GACzD,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC","sourcesContent":["import { AuxiliaryFilterSelections } from '@frontend/contexts';\nimport { IAuxiliaryFilter, nameof } from '@roomstay/core';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { Select } from '@/components/generic/Select/Select';\nimport { HotelRoomGroupsDTO } from '@/models/Api/HotelDTO';\n\nimport styles from './AuxiliaryFilterControls.module.scss';\n\ntype GroupFilters = HotelRoomGroupsDTO[number]['filters'];\n\nexport interface AuxiliaryFilterSelectsProps {\n groupFilters: GroupFilters;\n values: AuxiliaryFilterSelections;\n onChange: (filterKey: string, value: string) => void;\n}\n\ntype AuxiliaryFilterOption = Omit<IAuxiliaryFilter['options'][number], 'value'> & {\n value: string | number | null;\n};\n\nexport function AuxiliaryFilterSelects({ groupFilters, values, onChange }: AuxiliaryFilterSelectsProps) {\n const filterKeys = Object.keys(groupFilters ?? {});\n\n return (\n <>\n {filterKeys.map((filterKey) => {\n const filter = groupFilters[filterKey];\n if (filter.type !== 'select') return null;\n\n const options: AuxiliaryFilterOption[] = [{ label: filter.name, value: null }, ...filter.options];\n const currentValue = values[filterKey] ?? (options[0] as any)?.value;\n\n return (\n <Select\n key={filterKey}\n className={classNames(styles.select, 'text-small', 'u-border-rounded')}\n keyName={nameof<AuxiliaryFilterOption>('value')}\n labelName={nameof<AuxiliaryFilterOption>('label')}\n options={options as any}\n value={currentValue}\n onChange={(value: string) => onChange(filterKey, value)}\n />\n );\n })}\n </>\n );\n}\n"]}
|
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const contexts_1 = require("../../contexts/index.js");
|
|
40
|
+
const hooks_1 = require("../../hooks/index.js");
|
|
40
41
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
41
42
|
const react_1 = __importStar(require("react"));
|
|
42
43
|
const react_i18next_1 = require("react-i18next");
|
|
@@ -49,8 +50,9 @@ const Color_1 = require("../../util/Color");
|
|
|
49
50
|
const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
|
|
50
51
|
const RecentSearchesCard = ({ basketRow, onRemove, onViewRatesClicked }) => {
|
|
51
52
|
var _a;
|
|
52
|
-
const
|
|
53
|
-
const
|
|
53
|
+
const { formatGuestDate } = (0, hooks_1.useGuestDateFormat)();
|
|
54
|
+
const start = formatGuestDate((0, dayjs_1.default)(basketRow.getStartDate()));
|
|
55
|
+
const end = formatGuestDate((0, dayjs_1.default)(basketRow.getEndDate()));
|
|
54
56
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
55
57
|
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
56
58
|
return (react_1.default.createElement("div", { style: { backgroundColor: '#fff' }, className: "recent-searches-card" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentSearchesCard.js","sourceRoot":"/","sources":["src/components/generic/RecentSearchesCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0D;AAC1D,kDAA0B;AAC1B,+CAA0C;AAC1C,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAC3D,oGAA4E;AAE5E,wCAAqC;AACrC,mEAA2C;AAS3C,MAAM,kBAAkB,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAA2B,EAAE,EAAE;;IAChG,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"RecentSearchesCard.js","sourceRoot":"/","sources":["src/components/generic/RecentSearchesCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext } from '@frontend/contexts';\nimport { useGuestDateFormat } from '@frontend/hooks';\nimport dayjs from 'dayjs';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport interface RecentSearchesCardProps {\n basketRow: BasketRow;\n\n onViewRatesClicked: () => void;\n onRemove: () => void;\n}\n\nconst RecentSearchesCard = ({ basketRow, onRemove, onViewRatesClicked }: RecentSearchesCardProps) => {\n const { formatGuestDate } = useGuestDateFormat();\n const start = formatGuestDate(dayjs(basketRow.getStartDate()));\n const end = formatGuestDate(dayjs(basketRow.getEndDate()));\n\n const { t } = useTranslation();\n\n const beContext = useContext(BookingEngineContext);\n\n return (\n <div style={{ backgroundColor: '#fff' }} className=\"recent-searches-card\">\n <div className=\"recent-searches-card--gallery\">\n <ImageGallerySlider images={basketRow.getRoom().images || []} hideLightboxIcon />\n </div>\n <div className=\"recent-searches-card--information\" onClick={onViewRatesClicked}>\n <div className=\"recent-searches-card--title\">\n <Text type={TextType.Body} bold color={Color.Accent}>\n {basketRow.getRoom().name}\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {basketRow.getRate()?.name}\n </Text>\n </div>\n\n <div className=\"u-marg-bottom u-flex flex-wrap justify-content-start\">\n <div className=\"u-pad-right\">\n <Text type={TextType.Small}>\n {start}, {end}\n </Text>\n </div>\n <div>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {basketRow.getAdults()} {t(Translation.Step.Date.Adult_plural)} {t(Translation.Misc.And)} {basketRow.getChildren()}{' '}\n {t(Translation.Step.Date.Child_plural)}\n </Text>\n </div>\n </div>\n <BEButton icon={IconType.ArrowRight} iconPosition=\"right\" filled primary wide={beContext.screenSize <= ScreenSize.Medium} onClick={onViewRatesClicked}>\n {t(Translation.Step.Room.RoomInfo.ViewRates)}\n </BEButton>\n </div>\n <div className=\"recent-searches-card--close\">\n <Icon icon={IconType.Close} color={Color.DarkGrey} size=\"24px\" onClick={onRemove} />\n </div>\n </div>\n );\n};\n\nexport default RecentSearchesCard;\n"]}
|
|
@@ -29,5 +29,10 @@ export interface DatePickerProps {
|
|
|
29
29
|
* If undefined, no rate code filter will be applied.
|
|
30
30
|
*/
|
|
31
31
|
rateCode?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Optional content rendered at the bottom of the calendar container.
|
|
34
|
+
* Used by DatepickerIntegrated button location.
|
|
35
|
+
*/
|
|
36
|
+
footer?: React.ReactNode;
|
|
32
37
|
}
|
|
33
38
|
export default function DatePicker(props: DatePickerProps): React.JSX.Element;
|
|
@@ -311,7 +311,8 @@ function DatePicker(props) {
|
|
|
311
311
|
props.showMinNightStay && props.showMultipleMonths && (react_1.default.createElement("div", { className: "diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center" },
|
|
312
312
|
react_1.default.createElement(DaysSelectedInformer_1.default, null),
|
|
313
313
|
react_1.default.createElement(MinimumNightStayPill_1.default, null),
|
|
314
|
-
react_1.default.createElement(CalendarHighlightLegend_1.default, { showMultipleMonths: props.showMultipleMonths })))
|
|
314
|
+
react_1.default.createElement(CalendarHighlightLegend_1.default, { showMultipleMonths: props.showMultipleMonths }))),
|
|
315
|
+
props.footer && react_1.default.createElement("div", { className: "diji-calendar-footer" }, props.footer)),
|
|
315
316
|
props.showMinNightStay && !props.showMultipleMonths && (react_1.default.createElement("div", { className: "diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top" },
|
|
316
317
|
react_1.default.createElement(DaysSelectedInformer_1.default, null),
|
|
317
318
|
react_1.default.createElement(MinimumNightStayPill_1.default, null),
|