@roomstay/frontend 2.6.57 → 2.6.59
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/493.bundle.js +1 -1
- package/dist/537.bundle.js +1 -0
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.js +8 -6
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +1 -1
- package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +9 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +86 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +14 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +27 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +19 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +116 -30
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +12 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +6 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +96 -29
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +18 -3
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +118 -27
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +53 -18
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +5 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +6 -0
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +8 -7
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.d.ts +2 -0
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +11 -2
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.js +6 -2
- package/dist/src/components/generic/Event/EventCard.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +19 -4
- package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +1 -0
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +2 -2
- package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +3 -2
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +10 -10
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
- package/dist/src/components/generic/date/DatePicker.js +7 -3
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +13 -3
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +5 -2
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/reservation/ReservationList.js +1 -1
- package/dist/src/components/reservation/ReservationList.js.map +1 -1
- package/dist/src/components/steps/confirmation/PaymentInformation.js +4 -1
- package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +7 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +7 -4
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +9 -7
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/DatePickerContext.d.ts +1 -0
- package/dist/src/contexts/DatePickerContext.js.map +1 -1
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +3 -0
- package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +3 -3
- package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +9 -2
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +10 -10
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/handlers/payment/PaymentHandler.d.ts +1 -0
- package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
- package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +13 -35
- package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +3 -6
- package/dist/src/models/BasketRow.js +11 -15
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +4 -0
- package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +1 -2
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/models/Room/Room.d.ts +7 -0
- package/dist/src/models/Room/Room.js +13 -0
- package/dist/src/models/Room/Room.js.map +1 -1
- package/dist/src/models/Room/RoomRate.js +3 -0
- package/dist/src/models/Room/RoomRate.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +12 -8
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.d.ts +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +20 -5
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/stories/RadioButtonGroup.stories.d.ts +1 -1
- package/dist/src/translations/Translation.d.ts +7 -1
- package/dist/src/translations/Translation.js +7 -1
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +7 -1
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Analytics/GoogleAnalytics4.js +27 -12
- package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
- package/dist/src/util/Analytics/UniversalAnalytics.js +3 -3
- package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
- package/dist/src/util/DataLayer.d.ts +5 -1
- package/dist/src/util/DataLayer.js +9 -2
- package/dist/src/util/DataLayer.js.map +1 -1
- package/dist/src/util/EventsHelper.d.ts +4 -1
- package/dist/src/util/EventsHelper.js +15 -4
- package/dist/src/util/EventsHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/586.bundle.js +0 -1
- package/dist/850.bundle.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardGuestSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAA+D;AAC/D,iDAA+C;AAE/C,iFAAyD;AACzD,6EAAqD;AACrD,uEAAgE;AAChE,2FAAmE;AACnE,kEAA+D;AAC/D,kEAA2D;AAC3D,4DAAyD;AACzD,uEAA+C;AAE/C,8EAA2E;AAC3E,oHAA4F;AAC5F,kEAA2D;AAC3D,sHAA8D;AAqCvD,MAAM,0BAA0B,GAAwC,CAAC,EAC5E,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,QAAQ,GACX,EAAE,EAAE;;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,SAAS,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;QACrC,WAAW,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;QACzC,UAAU,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7B,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjH,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACxH,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,IAAI,MAAM,KAAK,sBAAsB,EAAE;YACnC,OAAO,MAAM,GAAG,QAAQ,CAAC;SAC5B;QAED,IAAI,MAAM,KAAK,iBAAiB,EAAE;YAC9B,OAAO,sBAAY,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;SAChF;QAED,MAAM,KAAK,GAAG,CAAC,sBAAY,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE;;QACjC,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;YACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG;gBAC/C;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;wBACnF,8BAAC,yBAAe,IACZ,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EACpD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAI,CACtD;gBACL,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;wBACrF,8BAAC,yBAAe,IACZ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EACxD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,GAAI,CACxE,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX;oBACI,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAQ;wBACrF,8BAAC,yBAAe,IACZ,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EACtD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,GAAI,CAC1E,CACT,CAAC,CAAC,CAAC,IAAI;gBACP,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAQ;oBAChF,8BAAC,yBAAe,IACZ,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAChD,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC;oBACpC,8BAAC,kBAAQ,IACL,IAAI,EAAE,WAAW,KAAK,cAAc,EACpC,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,QAAQ,EAAE;4BACnC,CAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;yBAC9D,CAAC,EACF,OAAO,EAAE,OAAO,IAEf,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CACT,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC1B,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;gBACzB,8BAAC,wBAAc,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAC,KAAK,CAAC,CAAkB,CACzD,CACT,CAAC;SACL;QAED,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrD,OAAO,CACH,8BAAC,kCAAwB,kBACrB,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC,CAAC,EACjE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC/B,MAAM,EACF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBACzB,8BAAC,cAAI,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAQ;;oBAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,CAC5G,IAEN,CAAC,WAAW,KAAK,WAAW,IAAI;gBAChC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;aAC7C,CAAC;gBAEF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBAAG,KAAK,EAAE;wBAAQ,CACxB,CAC9B,CAAC;SACL;QAED,OAAO,CACH,8BAAC,iBAAO,IACJ,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EACvB,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,aAAa,IAAI,SAAS,CAAC,OAAO,EACjD,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC7B,kBAAkB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,EAC/C,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC,EAC/B,SAAS,EAAE,gDAAM,CAAC,MAAM,EACxB,kBAAkB,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gDAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAC3G,UAAU,UAET,KAAK,EAAE,CACF,CACb,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACH,uCACI,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE;YACpC,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,KAAK,QAAQ;YAC9C,CAAC,gDAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI;SAC3B,CAAC;QAEF,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC;YACpF,8BAAC,cAAI,IACD,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,cAAc,CAAC,EAAE;oBAC1C,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,KAAK,sBAAsB;oBACvD,CAAC,gDAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;iBACnE,CAAC,EACF,IAAI,UAEH,cAAc,EAAE,CACd;YAEN,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CACtG;QAEL,OAAO,EAAE,CACR,CACT,CAAC;AACN,CAAC,CAAC;AAhPW,QAAA,0BAA0B,8BAgPrC","sourcesContent":["import classNames from 'classnames';\nimport React, { FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AgedBetweenLabel } from '../../AgedBetweenLabel/AgedBetweenLabel';\nimport BookingWizardBottomSheet from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardGuestSelector.module.scss';\n\nexport interface BookingWizardGuestSelectorProps {\n disableChild?: boolean;\n showInfants?: boolean;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n /**\n * The official values after apply\n * @param adults\n * @param children\n * @param room\n */\n onChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n /**\n * Real-time values changing once user selects value\n * @param adults\n * @param children\n * @param room\n */\n onEditingChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n ageRange?: {\n [people in 'child' | 'infant']?: {\n min?: number;\n max?: number;\n };\n };\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n minAdultAge,\n maxAdultAge,\n maxAdults = 10,\n maxChildren = 10,\n maxInfants = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\n onEditingChange,\n ageRange,\n}) => {\n const { overlay, type: overlayType, layout, isSmallContainer } = useBookingWizard();\n const { t } = useTranslation();\n\n const ref = useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [editingAdults, setEditingAdults] = useState(adults);\n const [editingChildren, setEditingChildren] = useState(children);\n const [editingInfants, setEditingInfants] = useState(infants);\n const [editingRoom, setEditingRoom] = useState(room);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n setAdults(defaultValue?.adults ?? 1);\n setChildren(defaultValue?.children ?? 0);\n setInfants(defaultValue?.infants ?? 0);\n }, [defaultValue]);\n\n useEffect(() => {\n setEditingAdults(adults);\n }, [adults]);\n\n useEffect(() => {\n setEditingChildren(children);\n }, [children]);\n\n useEffect(() => {\n setEditingInfants(infants);\n }, [infants]);\n\n const onApply = () => {\n setAdults(editingAdults);\n setChildren(editingChildren);\n setInfants(editingInfants);\n setRoom(editingRoom);\n setOpen(false);\n onChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n };\n\n useEffect(() => {\n onEditingChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n }, [editingAdults, editingChildren, editingAdults, editingRoom]);\n\n const getValueAsText = () => {\n if (layout === 'horizontal-condensed') {\n return adults + children;\n }\n\n if (layout === 'booking-summary') {\n return StringHelper.pluralWithCount(adults + children + infants, 'Guest', t);\n }\n\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n const inner = (applyButton = true) => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingAdults, 'Adult', t)}</Text>\n <NumberIncrement\n number={editingAdults}\n min={1}\n max={maxAdults}\n onChange={applyButton ? setEditingAdults : setAdults}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={minAdultAge} max={maxAdultAge} />\n </div>\n {disableChild ? null : (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingChildren, 'Child', t)}</Text>\n <NumberIncrement\n number={editingChildren}\n min={0}\n max={maxChildren}\n onChange={applyButton ? setEditingChildren : setChildren}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.child?.min} max={ageRange?.child?.max} />\n </div>\n )}\n {showInfants ? (\n <div>\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingInfants, 'Infant', t)}</Text>\n <NumberIncrement\n number={editingInfants}\n min={0}\n max={maxInfants}\n onChange={applyButton ? setEditingInfants : setInfants}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <AgedBetweenLabel min={ageRange?.infant?.min} max={ageRange?.infant?.max} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingRoom, 'Room', t)}</Text>\n <NumberIncrement\n number={editingRoom}\n min={1}\n max={10}\n onChange={applyButton ? setEditingRoom : setRoom}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n )}\n {applyButton ? (\n <div className={styles['popper--action']}>\n <BEButton\n wide={overlayType === 'bottom-sheet'}\n className={classNames(styles.applyBtn, {\n [styles['--booking-summary']]: layout === 'booking-summary',\n })}\n onClick={onApply}\n >\n {t(Translation.Misc.Apply)}\n </BEButton>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n if (overlayType === 'inline') {\n return (\n <div className={styles.popper}>\n <AutoAutoHeight open={open}>{inner(false)}</AutoAutoHeight>\n </div>\n );\n }\n\n if (['bottom-sheet', 'top-sheet'].includes(overlayType)) {\n return (\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'])}\n open={open}\n onDismiss={() => setOpen(false)}\n header={\n <div className={styles.header}>\n <Text>{t(Translation.Misc.HowManyGuests)}</Text> <Icon icon={IconType.Close} onClick={() => setOpen(false)} />\n </div>\n }\n {...('top-sheet' === overlayType && {\n snapPoints: ({ maxHeight }) => [maxHeight],\n })}\n >\n <div className={styles.popper}>{inner()} </div>\n </BookingWizardBottomSheet>\n );\n }\n\n return (\n <Overlay\n offset={overlay?.offset}\n usePortal={false}\n followElement={followElement || targetRef.current}\n placement={overlay?.placement}\n fallbackPlacements={overlay?.fallbackPlacements}\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(!open)}\n className={styles.popper}\n containerClassName={classNames(styles['custom-overlay'], { [styles['small-container']]: isSmallContainer })}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n return (\n <div\n ref={targetRef}\n className={classNames(styles.container, {\n [styles['--inline']]: overlayType === 'inline',\n [styles['--open']]: open,\n })}\n >\n <div className={classNames(styles['container--search'])} onClick={() => setOpen?.(!open)}>\n <Text\n className={classNames(styles['text-display'], {\n [styles['--line-1']]: layout === 'horizontal-condensed',\n [styles['--line-booking-summary']]: layout === 'booking-summary',\n })}\n bold\n >\n {getValueAsText()}\n </Text>\n\n {['horizontal-condensed', 'booking-summary'].includes(layout) ? null : <Icon icon={IconType.Dropdown} />}\n </div>\n\n {content()}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardGuestSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAA0E;AAC1E,iDAA+C;AAE/C,iFAAyD;AACzD,6EAAqD;AACrD,uEAAgE;AAChE,2FAAmE;AACnE,kEAA+D;AAC/D,kEAA2D;AAC3D,4DAAyD;AACzD,uEAA+C;AAE/C,8EAA2E;AAC3E,oDAAyD;AACzD,6FAA+D;AAC/D,iHAA0I;AAC1I,kEAA6D;AAC7D,kEAA2D;AAC3D,sHAA8D;AAmDvD,MAAM,0BAA0B,GAAwC,CAAC,EAC5E,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,KAAK,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,GACf,EAAE,EAAE;;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACtJ,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,aAAa,CAAC;IAEhC,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,SAAS,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;QACrC,WAAW,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;QACzC,UAAU,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAElC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,aAAa,IAAI,aAAa,CAAC,qCAAqB,CAAC,KAAK,CAAC,EAAE;YAC7D,OAAO,CAAC,aAAa,CAAC,qCAAqB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;SAC/D;IACL,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7B,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjH,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACxH,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAG,IAAI,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACR,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAG,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,IAAI,MAAM,KAAK,sBAAsB,EAAE;YACnC,OAAO,MAAM,GAAG,QAAQ,CAAC;SAC5B;QAED,IAAI,MAAM,KAAK,iBAAiB,EAAE;YAC9B,OAAO,sBAAY,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;SAChF;QAED,IAAI,aAAa,EAAE;YACf,IAAI,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,CAAC,EAAE;gBACnC,OAAO,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAChD;SACJ;QAED,MAAM,KAAK,GAAG,CAAC,sBAAY,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,OAAO,KAAK,CAAC,CAAC,CAAC,uCAAK,SAAS,EAAE,mCAAmB,CAAC,KAAK,IAAG,KAAK,CAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,WAAoB,EAAE,QAAgB,EAAE,EAAE;QAC9D,IAAI,WAAW,EAAE;YACb,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC9B;aAAM;YACH,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpB,IAAI,SAAS,EAAE;gBACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;aAC3G;SACJ;IACL,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,WAAoB,EAAE,QAAgB,EAAE,EAAE;QAChE,IAAI,WAAW,EAAE;YACb,kBAAkB,CAAC,QAAQ,CAAC,CAAC;SAChC;aAAM;YACH,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,SAAS,EAAE;gBACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;aACzG;SACJ;IACL,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,WAAoB,EAAE,QAAgB,EAAE,EAAE;QAC/D,IAAI,WAAW,EAAE;YACb,iBAAiB,CAAC,QAAQ,CAAC,CAAC;SAC/B;aAAM;YACH,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,SAAS,EAAE;gBACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;aAC1G;SACJ;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,WAAoB,EAAE,QAAgB,EAAE,EAAE;QAC5D,IAAI,WAAW,EAAE;YACb,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC5B;aAAM;YACH,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,IAAI,SAAS,EAAE;gBACX,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;aAC7G;SACJ;IACL,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE;;QACjC,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;YACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG;gBAC/C,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,gDAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAC5C;wBACP,8BAAC,yBAAe,IACZ,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,EAC/D,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,WAAW,CAAC;wBAC/B,8BAAC,mCAAgB,IAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAI,CACtD;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,OAAO,GAAI,CAChC;gBACL,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,gDAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAC9C;wBACP,8BAAC,yBAAe,IACZ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,EACjE,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,WAAW,CAAC;wBAC/B,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,GAAG,GAAI,CACxE;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,OAAO,GAAI,CAChC,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,gDAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAC9C;wBACP,8BAAC,yBAAe,IACZ,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,EAChE,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,WAAW,CAAC;wBAC/B,8BAAC,mCAAgB,IAAC,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,EAAE,GAAG,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,0CAAE,GAAG,GAAI,CAC1E;oBAEN,uCAAK,SAAS,EAAE,gDAAM,CAAC,OAAO,GAAI,CAChC,CACT,CAAC,CAAC,CAAC,IAAI;gBACP,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,gDAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CACzC;wBACP,8BAAC,yBAAe,IACZ,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,EAC7D,QAAQ,EAAE,eAAQ,CAAC,KAAK,EACxB,YAAY,EAAE,WAAW,GAC3B,CACA;oBACN,uCAAK,SAAS,EAAE,gDAAM,CAAC,OAAO,GAAI,CAChC,CACT;gBAED,8BAAC,UAAU,OAAG;gBAEb,mBAAmB,IAAI,eAAe,IAAI,CACvC,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;wBACtB,8BAAC,yCAAkB,IACf,OAAO,EAAE,eAAe,CAAC,OAAO,EAChC,SAAS,EAAE,eAAe,CAAC,SAAS,EACpC,SAAS,EAAE,eAAe,CAAC,SAAS,EACpC,YAAY,EAAE,eAAe,CAAC,YAAY,EAC1C,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAClC,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,WAAW,EAAE,eAAe,CAAC,WAAW,EACxC,CAAC,EAAE,CAAC,EACJ,QAAQ,EAAE,KAAK,EACf,MAAM,EAAE,KAAK,EACb,aAAa,SACf,CACA,CACJ,CACT;gBAEA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC;oBACpC,8BAAC,kBAAQ,IACL,IAAI,EAAE,WAAW,KAAK,cAAc,EACpC,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,QAAQ,EAAE;4BACnC,CAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;yBAC9D,CAAC,EACF,OAAO,EAAE,OAAO,IAEf,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CACT,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC1B,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;gBACzB,8BAAC,wBAAc,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAC,KAAK,CAAC,CAAkB,CACzD,CACT,CAAC;SACL;QAED,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrD,OAAO,CACH,8BAAC,kCAAwB,kBACrB,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC,EAAE;oBAC9D,CAAC,gDAAM,CAAC,6BAA6B,CAAC,CAAC,EAAE,aAAa;iBACzD,CAAC,EACF,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,mBAAmB,EAAE;wBACtB,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;gBACL,CAAC,EACD,MAAM,EAAE,8BAAC,8CAAmB,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,EACxG,MAAM,EACF,YAAY,CAAC,CAAC,CAAC,CACX,8BAAC,8CAAmB,IAChB,QAAQ,EAAE,aAAa,CAAC,qCAAqB,CAAC,KAAK,CAAC,CAAC,OAAO,EAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,qCAAqB,CAAC,KAAK,CAAC,EACxD,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EACrC,SAAS,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACtC,YAAY,EAAE,YAAY,CAAC,YAAY,GACzC,CACL,CAAC,CAAC,CAAC,IAAI,IAER,CAAC,WAAW,KAAK,WAAW,IAAI;gBAChC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;aAC7C,CAAC;gBAEF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBAAG,KAAK,CAAC,CAAC,SAAS,CAAC;wBAAQ,CAClC,CAC9B,CAAC;SACL;QAED,OAAO,CACH,8BAAC,iBAAO,IACJ,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EACvB,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,aAAa,IAAI,SAAS,CAAC,OAAO,EACjD,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC7B,kBAAkB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,EAC/C,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC,EAC/B,SAAS,EAAE,gDAAM,CAAC,MAAM,EACxB,kBAAkB,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,gBAAgB,CAAC,EAAE;gBACrD,CAAC,gDAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB;gBAC7C,CAAC,gDAAM,CAAC,6BAA6B,CAAC,CAAC,EAAE,aAAa;aACzD,CAAC,EACF,UAAU,UAET,KAAK,CAAC,CAAC,aAAa,CAAC,CAChB,CACb,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,6DAAK,CAAC,CAAC,CAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CAAC;IACrI,CAAC,CAAC;IAEF,OAAO,CACH,uCACI,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE;YACpC,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,KAAK,QAAQ;YAC9C,CAAC,gDAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI;SAC3B,CAAC;QAEF,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC;YACpF,8BAAC,cAAI,IACD,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,cAAc,CAAC,EAAE;oBAC1C,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,KAAK,sBAAsB;oBACvD,CAAC,gDAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;oBAChE,CAAC,mCAAmB,CAAC,KAAK,CAAC,EAAE,aAAa;oBAC1C,CAAC,mCAAmB,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa;iBACvD,CAAC,EACF,IAAI,UAEH,cAAc,EAAE,CACd;YAEP,8BAAC,YAAY,OAAG,CAEd;QAEL,OAAO,EAAE,CACR,CACT,CAAC;AACN,CAAC,CAAC;AA1XW,QAAA,0BAA0B,8BA0XrC","sourcesContent":["import classNames from 'classnames';\nimport React, { FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AgedBetweenLabel } from '../../AgedBetweenLabel/AgedBetweenLabel';\nimport { EBookingWizardSection } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { BWPromoCodeSection } from '../BookingWizardContent';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardGuestSelector.module.scss';\nexport interface BookingWizardGuestSelectorProps {\n disableChild?: boolean;\n showInfants?: boolean;\n minAdultAge?: number;\n maxAdultAge?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n /**\n * The official values after apply\n * @param adults\n * @param children\n * @param room\n */\n onChange?: (params: { adults: number; children: number; infants: number; room: number }) => void;\n /**\n * Real-time values changing once user selects value\n * @param adults\n * @param children\n * @param room\n */\n onEditingChange?: (params: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n ageRange?: {\n [people in 'child' | 'infant']?: {\n min?: number;\n max?: number;\n };\n };\n notes?: ReactNode;\n onOverlayOpenChange?: (isOpen: boolean) => void;\n promoCodeConfig?: {\n divider: boolean;\n withLabel: boolean;\n promoCode: string;\n setPromoCode: React.Dispatch<React.SetStateAction<string>>;\n onChange: (value?: string) => Promise<void>;\n valid: boolean | undefined;\n hideTooltip: boolean | undefined;\n };\n submitConfig?: {\n onSubmit: () => false | undefined;\n disabledNext: boolean;\n };\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n minAdultAge,\n maxAdultAge,\n maxAdults = 10,\n maxChildren = 10,\n maxInfants = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\n onEditingChange,\n ageRange,\n notes,\n onOverlayOpenChange,\n promoCodeConfig,\n submitConfig,\n}) => {\n const { overlay, type: overlayType, layout, isSmallContainer, stateSections, isImagesTheme, isImagesThemeMobile, onPrevHandler } = useBookingWizard();\n const { t } = useTranslation();\n\n const ref = useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [editingAdults, setEditingAdults] = useState(adults);\n const [editingChildren, setEditingChildren] = useState(children);\n const [editingInfants, setEditingInfants] = useState(infants);\n const [editingRoom, setEditingRoom] = useState(room);\n\n const [open, setOpen] = useState(false);\n const autoApply = isImagesTheme;\n\n useEffect(() => {\n setAdults(defaultValue?.adults ?? 1);\n setChildren(defaultValue?.children ?? 0);\n setInfants(defaultValue?.infants ?? 0);\n setRoom(defaultValue?.room ?? 1);\n }, [defaultValue, isImagesTheme]);\n\n useEffect(() => {\n setEditingAdults(adults);\n }, [adults]);\n\n useEffect(() => {\n setEditingChildren(children);\n }, [children]);\n\n useEffect(() => {\n setEditingInfants(infants);\n }, [infants]);\n\n useEffect(() => {\n if (stateSections && stateSections[EBookingWizardSection.Guest]) {\n setOpen(stateSections[EBookingWizardSection.Guest].opening);\n }\n }, [stateSections]);\n\n const onApply = () => {\n setAdults(editingAdults);\n setChildren(editingChildren);\n setInfants(editingInfants);\n setRoom(editingRoom);\n setOpen(false);\n onChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n };\n\n useEffect(() => {\n onEditingChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: editingRoom });\n }, [editingAdults, editingChildren, editingAdults, editingRoom]);\n\n useEffect(() => {\n onOverlayOpenChange?.(open);\n return () => {\n onOverlayOpenChange?.(false);\n };\n }, [open]);\n\n const getValueAsText = () => {\n if (layout === 'horizontal-condensed') {\n return adults + children;\n }\n\n if (layout === 'booking-summary') {\n return StringHelper.pluralWithCount(adults + children + infants, 'Guest', t);\n }\n\n if (isImagesTheme) {\n if (adults + children + infants === 0) {\n return t(Translation.Misc.GuestsPlaceHolder);\n }\n }\n\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n const GuestNotes = () => {\n return notes ? <div className={bookingWizardStyles.notes}>{notes}</div> : null;\n };\n\n const onChangeAdults = (applyButton: boolean, newValue: number) => {\n if (applyButton) {\n setEditingAdults(newValue);\n } else {\n setAdults(newValue);\n if (autoApply) {\n onChange?.({ adults: newValue, children: editingChildren, infants: editingInfants, room: editingRoom });\n }\n }\n };\n const onChangeChildren = (applyButton: boolean, newValue: number) => {\n if (applyButton) {\n setEditingChildren(newValue);\n } else {\n setChildren(newValue);\n if (autoApply) {\n onChange?.({ adults: editingAdults, children: newValue, infants: editingInfants, room: editingRoom });\n }\n }\n };\n const onChangeInfants = (applyButton: boolean, newValue: number) => {\n if (applyButton) {\n setEditingInfants(newValue);\n } else {\n setInfants(newValue);\n if (autoApply) {\n onChange?.({ adults: editingAdults, children: editingChildren, infants: newValue, room: editingRoom });\n }\n }\n };\n\n const onChangeRoom = (applyButton: boolean, newValue: number) => {\n if (applyButton) {\n setEditingRoom(newValue);\n } else {\n setRoom(newValue);\n if (autoApply) {\n onChange?.({ adults: editingAdults, children: editingChildren, infants: editingInfants, room: newValue });\n }\n }\n };\n\n const inner = (applyButton = true) => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(editingAdults, 'Adult', t)}\n </Text>\n <NumberIncrement\n number={editingAdults}\n min={1}\n max={maxAdults}\n onChange={(value: number) => onChangeAdults(applyButton, value)}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <div className={styles['sub-title']}>\n <AgedBetweenLabel min={minAdultAge} max={maxAdultAge} />\n </div>\n <div className={styles.divider} />\n </div>\n {disableChild ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(editingChildren, 'Child', t)}\n </Text>\n <NumberIncrement\n number={editingChildren}\n min={0}\n max={maxChildren}\n onChange={(value: number) => onChangeChildren(applyButton, value)}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <div className={styles['sub-title']}>\n <AgedBetweenLabel min={ageRange?.child?.min} max={ageRange?.child?.max} />\n </div>\n <div className={styles.divider} />\n </div>\n )}\n {showInfants ? (\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(editingInfants, 'Infant', t)}\n </Text>\n <NumberIncrement\n number={editingInfants}\n min={0}\n max={maxInfants}\n onChange={(value: number) => onChangeInfants(applyButton, value)}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <div className={styles['sub-title']}>\n <AgedBetweenLabel min={ageRange?.infant?.min} max={ageRange?.infant?.max} />\n </div>\n\n <div className={styles.divider} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(editingRoom, 'Room', t)}\n </Text>\n <NumberIncrement\n number={editingRoom}\n min={1}\n max={10}\n onChange={(value: number) => onChangeRoom(applyButton, value)}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n <div className={styles.divider} />\n </div>\n )}\n\n <GuestNotes />\n\n {isImagesThemeMobile && promoCodeConfig && (\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <BWPromoCodeSection\n divider={promoCodeConfig.divider}\n withLabel={promoCodeConfig.withLabel}\n promoCode={promoCodeConfig.promoCode}\n setPromoCode={promoCodeConfig.setPromoCode}\n onChange={promoCodeConfig.onChange}\n valid={promoCodeConfig.valid}\n hideTooltip={promoCodeConfig.hideTooltip}\n t={t}\n inactive={false}\n hidden={false}\n isImagesTheme\n />\n </div>\n </div>\n )}\n\n {applyButton ? (\n <div className={styles['popper--action']}>\n <BEButton\n wide={overlayType === 'bottom-sheet'}\n className={classNames(styles.applyBtn, {\n [styles['--booking-summary']]: layout === 'booking-summary',\n })}\n onClick={onApply}\n >\n {t(Translation.Misc.Apply)}\n </BEButton>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n if (overlayType === 'inline') {\n return (\n <div className={styles.popper}>\n <AutoAutoHeight open={open}>{inner(false)}</AutoAutoHeight>\n </div>\n );\n }\n\n if (['bottom-sheet', 'top-sheet'].includes(overlayType)) {\n return (\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={open}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n }}\n header={<BWBottomSheetHeader title={t(Translation.Misc.HowManyGuests)} onClose={() => setOpen(false)} />}\n footer={\n submitConfig ? (\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Guest].isFirst}\n onPrev={() => onPrevHandler(EBookingWizardSection.Guest)}\n onNext={() => submitConfig.onSubmit()}\n nextLabel={t(Translation.Misc.BookNow)}\n disabledNext={submitConfig.disabledNext}\n />\n ) : null\n }\n {...('top-sheet' === overlayType && {\n snapPoints: ({ maxHeight }) => [maxHeight],\n })}\n >\n <div className={styles.popper}>{inner(!autoApply)} </div>\n </BookingWizardBottomSheet>\n );\n }\n\n return (\n <Overlay\n offset={overlay?.offset}\n usePortal={false}\n followElement={followElement || targetRef.current}\n placement={overlay?.placement}\n fallbackPlacements={overlay?.fallbackPlacements}\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(!open)}\n className={styles.popper}\n containerClassName={classNames(styles['custom-overlay'], {\n [styles['small-container']]: isSmallContainer,\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n hideStyles\n >\n {inner(!isImagesTheme)}\n </Overlay>\n );\n };\n\n const DropdownIcon = () => {\n return ['horizontal-condensed', 'booking-summary'].includes(layout) || isImagesTheme ? <></> : <Icon icon={IconType.Dropdown} />;\n };\n\n return (\n <div\n ref={targetRef}\n className={classNames(styles.container, {\n [styles['--inline']]: overlayType === 'inline',\n [styles['--open']]: open,\n })}\n >\n <div className={classNames(styles['container--search'])} onClick={() => setOpen?.(!open)}>\n <Text\n className={classNames(styles['text-display'], {\n [styles['--line-1']]: layout === 'horizontal-condensed',\n [styles['--line-booking-summary']]: layout === 'booking-summary',\n [bookingWizardStyles.value]: isImagesTheme,\n [bookingWizardStyles['text-display']]: isImagesTheme,\n })}\n bold\n >\n {getValueAsText()}\n </Text>\n\n <DropdownIcon />\n {/* {['horizontal-condensed', 'booking-summary'].includes(layout) ? null : <Icon icon={IconType.Dropdown} />} */}\n </div>\n\n {content()}\n </div>\n );\n};\n"]}
|
|
@@ -27,24 +27,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.BookingWizardHotelSelector = void 0;
|
|
30
|
+
const ui_1 = require("@roomstay/ui");
|
|
30
31
|
const classnames_1 = __importDefault(require("classnames"));
|
|
31
32
|
const react_1 = __importStar(require("react"));
|
|
32
33
|
const react_i18next_1 = require("react-i18next");
|
|
33
34
|
const AutoAutoHeight_1 = __importDefault(require("../../../../animations/AutoAutoHeight"));
|
|
34
|
-
const Icon_1 = __importStar(require("../../Icon/Icon"));
|
|
35
35
|
const Text_1 = __importStar(require("../../Text"));
|
|
36
36
|
const Translation_1 = require("../../../../translations/Translation");
|
|
37
37
|
const Color_1 = require("../../../../util/Color");
|
|
38
38
|
const Select_1 = require("../../Select/Select");
|
|
39
|
-
const
|
|
39
|
+
const BookingWizard_1 = require("../BookingWizard");
|
|
40
|
+
const BookingWizard_module_scss_1 = __importDefault(require("../BookingWizard.module.scss"));
|
|
41
|
+
const BookingWizardBottomSheet_1 = __importStar(require("../BookingWizardBottomSheet/BookingWizardBottomSheet"));
|
|
40
42
|
const BookingWizardContext_1 = require("../BookingWizardContext");
|
|
41
43
|
const BookingWizardHotelSelector_module_scss_1 = __importDefault(require("./BookingWizardHotelSelector.module.scss"));
|
|
42
44
|
const BookingWizardHotelSelector = (props) => {
|
|
43
|
-
const { overlay, type, layout, isSmallContainer } = (0, BookingWizardContext_1.useBookingWizard)();
|
|
45
|
+
const { overlay, type, layout, isSmallContainer, stateSections, isImagesTheme, isImagesThemeMobile, onNextHandler } = (0, BookingWizardContext_1.useBookingWizard)();
|
|
44
46
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
45
47
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
46
48
|
const [isOnlyProperty, setIsOnlyProperty] = (0, react_1.useState)(false);
|
|
47
49
|
const { selectedProperty, properties, contentClassName, followElement } = props;
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
if (stateSections && stateSections[BookingWizard_1.EBookingWizardSection.Property]) {
|
|
52
|
+
setOpen(stateSections[BookingWizard_1.EBookingWizardSection.Property].opening);
|
|
53
|
+
}
|
|
54
|
+
}, [stateSections]);
|
|
48
55
|
const optionedProperties = (0, react_1.useMemo)(() => {
|
|
49
56
|
let isOnly = false;
|
|
50
57
|
const options = [];
|
|
@@ -79,7 +86,9 @@ const BookingWizardHotelSelector = (props) => {
|
|
|
79
86
|
const onPropertyClick = (property) => {
|
|
80
87
|
var _a;
|
|
81
88
|
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, property);
|
|
82
|
-
|
|
89
|
+
if (!isImagesThemeMobile) {
|
|
90
|
+
setOpen(false);
|
|
91
|
+
}
|
|
83
92
|
};
|
|
84
93
|
const getOption = (key) => {
|
|
85
94
|
const indexes = Object.keys(properties);
|
|
@@ -107,9 +116,20 @@ const BookingWizardHotelSelector = (props) => {
|
|
|
107
116
|
options.map((option) => renderOption(option))));
|
|
108
117
|
};
|
|
109
118
|
const renderOption = (property) => {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.
|
|
119
|
+
var _a, _b;
|
|
120
|
+
if (isImagesTheme) {
|
|
121
|
+
return (react_1.default.createElement("div", { key: property.id, className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['card'], { [BookingWizardHotelSelector_module_scss_1.default['--selected']]: (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id) === property.id }), onClick: () => onPropertyClick(property) },
|
|
122
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['card-img'] },
|
|
123
|
+
react_1.default.createElement("img", { src: (_a = property === null || property === void 0 ? void 0 : property.card) === null || _a === void 0 ? void 0 : _a.image })),
|
|
124
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['card-body'] },
|
|
125
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['card-title'] }, property.name),
|
|
126
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['card-sub-title'] }, (_b = property === null || property === void 0 ? void 0 : property.card) === null || _b === void 0 ? void 0 : _b.text))));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return (react_1.default.createElement("div", { key: property.id, className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['container--suggest-list-hotel'], { [BookingWizardHotelSelector_module_scss_1.default['--selected']]: (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id) === property.id }), onClick: () => onPropertyClick(property) },
|
|
130
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['container--suggest-list-hotel-name'] }, property.name),
|
|
131
|
+
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.check })));
|
|
132
|
+
}
|
|
113
133
|
};
|
|
114
134
|
const onOpenDrawer = () => {
|
|
115
135
|
setOpen(true);
|
|
@@ -123,27 +143,42 @@ const BookingWizardHotelSelector = (props) => {
|
|
|
123
143
|
react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['inline-box'] }, renderOptions()))));
|
|
124
144
|
}
|
|
125
145
|
if (type === 'bottom-sheet') {
|
|
146
|
+
const ItemDisplay = () => {
|
|
147
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
148
|
+
[BookingWizardHotelSelector_module_scss_1.default['--mini']]: !isImagesThemeMobile && layout === 'horizontal-condensed',
|
|
149
|
+
[BookingWizardHotelSelector_module_scss_1.default['item-display']]: isImagesThemeMobile,
|
|
150
|
+
}), onClick: onOpenDrawer },
|
|
151
|
+
react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, { [BookingWizardHotelSelector_module_scss_1.default.placeholder]: !(selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) }), bold: true }, (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) || t(Translation_1.Translation.Misc.PleaseSelectHotelMobile)),
|
|
152
|
+
isImagesThemeMobile ? react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Dropdown }) : null));
|
|
153
|
+
};
|
|
126
154
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
127
|
-
react_1.default.createElement(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
155
|
+
react_1.default.createElement(ItemDisplay, null),
|
|
156
|
+
react_1.default.createElement(BookingWizardBottomSheet_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.container, BookingWizardHotelSelector_module_scss_1.default['--bottom-sheet'], {
|
|
157
|
+
[BookingWizardHotelSelector_module_scss_1.default['custom-overlay-images-theme']]: isImagesTheme,
|
|
158
|
+
}), open: open, onDismiss: () => {
|
|
159
|
+
if (!isImagesThemeMobile) {
|
|
160
|
+
setOpen(false);
|
|
161
|
+
}
|
|
162
|
+
}, header: react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetHeader, { title: t(Translation_1.Translation.Misc.ChooseHotelMobile), onClose: () => setOpen(false) }), footer: react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetFooter, { hidePrev: stateSections[BookingWizard_1.EBookingWizardSection.Property].isFirst, onNext: () => onNextHandler(BookingWizard_1.EBookingWizardSection.Property), disabledNext: !selectedProperty }) },
|
|
133
163
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.content, contentClassName) }, renderOptions()))));
|
|
134
164
|
}
|
|
135
165
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)({ [BookingWizardHotelSelector_module_scss_1.default['--mini']]: layout === 'horizontal-condensed' }) },
|
|
136
166
|
react_1.default.createElement(Select_1.Select, { target: followElement, offset: overlay === null || overlay === void 0 ? void 0 : overlay.offset, options: optionedProperties, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id, onChange: (value) => onPropertyClick(getOption(value)), keyName: "id", labelName: "name", hideExpandIcon: layout === 'horizontal-condensed', disableNative: true, overlay: {
|
|
137
|
-
containerClassName: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['custom-overlay'], {
|
|
167
|
+
containerClassName: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['custom-overlay'], {
|
|
168
|
+
[BookingWizardHotelSelector_module_scss_1.default['small-container']]: isSmallContainer,
|
|
169
|
+
[BookingWizardHotelSelector_module_scss_1.default['custom-overlay-images-theme']]: isImagesTheme,
|
|
170
|
+
}),
|
|
138
171
|
strategy: 'absolute',
|
|
139
172
|
usePortal: false,
|
|
140
173
|
placement: (overlay === null || overlay === void 0 ? void 0 : overlay.placement) || 'bottom',
|
|
141
174
|
fallbackPlacements: (overlay === null || overlay === void 0 ? void 0 : overlay.fallbackPlacements) || 'bottom',
|
|
142
175
|
hideStyles: true,
|
|
143
|
-
}, renderOption: (property) =>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return
|
|
176
|
+
}, renderOption: (property) => {
|
|
177
|
+
if (property)
|
|
178
|
+
return renderOption(property);
|
|
179
|
+
return null;
|
|
180
|
+
}, renderLabel: (option) => {
|
|
181
|
+
return (react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, BookingWizard_module_scss_1.default['value']), bold: true }, (option === null || option === void 0 ? void 0 : option.name) || (react_1.default.createElement("span", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['hotel-dropdown-label'], BookingWizard_module_scss_1.default['value']) }, t(Translation_1.Translation.Misc.PleaseSelectHotel)))));
|
|
147
182
|
} })));
|
|
148
183
|
};
|
|
149
184
|
exports.BookingWizardHotelSelector = BookingWizardHotelSelector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardHotelSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\nimport classNames from 'classnames';\nimport React, { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { Select } from '../../Select/Select';\nimport BookingWizardBottomSheet from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardHotelSelector.module.scss';\n\ninterface BookingWizardHotelSelectorProps {\n disabled?: boolean;\n\n selectedProperty?: BookingWizardProperty;\n properties: TBookingWizardProperties;\n\n contentClassName?: string;\n followElement?: HTMLElement | null;\n\n onChange?: (hotel: BookingWizardProperty | null) => void;\n}\n\ninterface TOptionedProperties extends BookingWizardProperty {\n options?: BookingWizardProperty[];\n}\n\nexport const BookingWizardHotelSelector = (props: BookingWizardHotelSelectorProps) => {\n const { overlay, type, layout, isSmallContainer } = useBookingWizard();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [isOnlyProperty, setIsOnlyProperty] = useState(false);\n\n const { selectedProperty, properties, contentClassName, followElement } = props;\n\n const optionedProperties = useMemo(() => {\n let isOnly = false;\n\n const options: TOptionedProperties[] = [];\n\n // Here we group each key as a new TOption Group to order hotels better.\n const propertyKeys = Object.keys(properties);\n if (propertyKeys.length > 1) {\n propertyKeys.forEach((propertyKey: string) => {\n const option: TOptionedProperties = {\n name: propertyKey,\n id: '',\n options: [],\n colors: {} as IHotelColorScheme,\n };\n\n for (const property of properties[propertyKey]) {\n option.options?.push(property);\n }\n\n options.push(option);\n });\n } else if (propertyKeys.length === 1) {\n properties[propertyKeys[0]].forEach((option) => {\n options.push(option);\n });\n\n if (properties[propertyKeys[0]].length == 1 && properties[propertyKeys[0]][0].id === selectedProperty?.id) {\n isOnly = true;\n }\n }\n\n setIsOnlyProperty(isOnly);\n\n return options;\n }, [properties]);\n\n const onPropertyClick = (property: BookingWizardProperty): void => {\n props.onChange?.(property);\n setOpen(false);\n };\n\n const getOption = (key: BookingWizardProperty['id']): BookingWizardProperty | undefined => {\n const indexes = Object.keys(properties);\n\n for (const index of indexes) {\n for (const property of properties[index]) {\n if (key === property.id) {\n return property;\n }\n }\n }\n };\n\n const renderOptions = (): any => {\n const indexes = Object.keys(properties);\n\n if (indexes.length > 1) {\n return indexes.map((indexName) => renderGroup(indexName, properties[indexName]));\n } else if (indexes.length === 1) {\n return properties[indexes[0]].map((property) => renderOption(property));\n }\n };\n\n const renderGroup = (name: string, options: BookingWizardProperty[]) => {\n return (\n <>\n <div className={classNames(styles['container--suggest-list-hotel'], styles['--group-title'])}>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {name}\n </Text>\n </div>\n {options.map((option) => renderOption(option))}\n </>\n );\n };\n\n const renderOption = (property: BookingWizardProperty) => {\n return (\n <div\n key={property.id}\n className={classNames(styles['container--suggest-list-hotel'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['container--suggest-list-hotel-name']}>{property.name}</div>\n <div className={styles.check}></div>\n </div>\n );\n };\n\n const onOpenDrawer = () => {\n setOpen(true);\n };\n\n if (isOnlyProperty) {\n return <Text>{selectedProperty?.name}</Text>;\n }\n\n if (type === 'inline') {\n return (\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={open}>\n <div className={styles['inline-box']}>{renderOptions()}</div>\n </AutoAutoHeight>\n </div>\n );\n }\n\n if (type === 'bottom-sheet') {\n return (\n <>\n <div className={classNames({ [styles['--mini']]: layout === 'horizontal-condensed' })} onClick={onOpenDrawer}>\n <Text className={classNames(styles.optionLabel, { [styles.placeholder]: !selectedProperty?.name })} bold>\n {selectedProperty?.name || 'Select...'}\n </Text>\n </div>\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'])}\n open={open}\n onDismiss={() => setOpen(false)}\n header={\n <div className={styles.header}>\n <div>{t(Translation.Misc.ChooseHotel)}</div> <Icon icon={IconType.Close} onClick={() => setOpen(false)} />\n </div>\n }\n >\n <div className={classNames(styles.content, contentClassName)}>{renderOptions()}</div>\n </BookingWizardBottomSheet>\n </>\n );\n }\n\n return (\n <div className={classNames({ [styles['--mini']]: layout === 'horizontal-condensed' })}>\n <Select<BookingWizardProperty, 'id'>\n target={followElement}\n offset={overlay?.offset}\n options={optionedProperties}\n value={selectedProperty?.id}\n onChange={(value) => onPropertyClick(getOption(value) as BookingWizardProperty)}\n keyName=\"id\"\n labelName=\"name\"\n hideExpandIcon={layout === 'horizontal-condensed'}\n disableNative\n overlay={{\n containerClassName: classNames(styles['custom-overlay'], { [styles['small-container']]: isSmallContainer }),\n strategy: 'absolute',\n usePortal: false,\n placement: overlay?.placement || 'bottom',\n fallbackPlacements: overlay?.fallbackPlacements || 'bottom',\n hideStyles: true,\n }}\n renderOption={(property) => (\n <div className={classNames(styles['container--suggest-list-hotel'], { [styles['--selected']]: selectedProperty?.id === property?.id })}>\n <div className={styles['container--suggest-list-hotel-name']}>{property?.name}</div>\n <div className={styles.check}></div>\n </div>\n )}\n renderLabel={(option) => {\n return (\n <Text className={styles.optionLabel} bold>\n {option?.name || <span className={styles['hotel-dropdown-label']}>{t(Translation.Misc.PleaseSelectHotel)}</span>}\n </Text>\n );\n }}\n />\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardHotelSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\nimport { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { Select } from '../../Select/Select';\nimport { EBookingWizardSection } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardHotelSelector.module.scss';\ninterface BookingWizardHotelSelectorProps {\n disabled?: boolean;\n\n selectedProperty?: BookingWizardProperty;\n properties: TBookingWizardProperties;\n\n contentClassName?: string;\n followElement?: HTMLElement | null;\n\n onChange?: (hotel: BookingWizardProperty | null) => void;\n}\n\ninterface TOptionedProperties extends BookingWizardProperty {\n options?: BookingWizardProperty[];\n}\n\nexport const BookingWizardHotelSelector = (props: BookingWizardHotelSelectorProps) => {\n const { overlay, type, layout, isSmallContainer, stateSections, isImagesTheme, isImagesThemeMobile, onNextHandler } = useBookingWizard();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [isOnlyProperty, setIsOnlyProperty] = useState(false);\n\n const { selectedProperty, properties, contentClassName, followElement } = props;\n\n useEffect(() => {\n if (stateSections && stateSections[EBookingWizardSection.Property]) {\n setOpen(stateSections[EBookingWizardSection.Property].opening);\n }\n }, [stateSections]);\n\n const optionedProperties = useMemo(() => {\n let isOnly = false;\n\n const options: TOptionedProperties[] = [];\n\n // Here we group each key as a new TOption Group to order hotels better.\n const propertyKeys = Object.keys(properties);\n if (propertyKeys.length > 1) {\n propertyKeys.forEach((propertyKey: string) => {\n const option: TOptionedProperties = {\n name: propertyKey,\n id: '',\n options: [],\n colors: {} as IHotelColorScheme,\n };\n\n for (const property of properties[propertyKey]) {\n option.options?.push(property);\n }\n\n options.push(option);\n });\n } else if (propertyKeys.length === 1) {\n properties[propertyKeys[0]].forEach((option) => {\n options.push(option);\n });\n\n if (properties[propertyKeys[0]].length == 1 && properties[propertyKeys[0]][0].id === selectedProperty?.id) {\n isOnly = true;\n }\n }\n\n setIsOnlyProperty(isOnly);\n\n return options;\n }, [properties]);\n\n const onPropertyClick = (property: BookingWizardProperty): void => {\n props.onChange?.(property);\n\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n };\n\n const getOption = (key: BookingWizardProperty['id']): BookingWizardProperty | undefined => {\n const indexes = Object.keys(properties);\n\n for (const index of indexes) {\n for (const property of properties[index]) {\n if (key === property.id) {\n return property;\n }\n }\n }\n };\n\n const renderOptions = (): any => {\n const indexes = Object.keys(properties);\n\n if (indexes.length > 1) {\n return indexes.map((indexName) => renderGroup(indexName, properties[indexName]));\n } else if (indexes.length === 1) {\n return properties[indexes[0]].map((property) => renderOption(property));\n }\n };\n\n const renderGroup = (name: string, options: BookingWizardProperty[]) => {\n return (\n <>\n <div className={classNames(styles['container--suggest-list-hotel'], styles['--group-title'])}>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {name}\n </Text>\n </div>\n {options.map((option) => renderOption(option))}\n </>\n );\n };\n\n const renderOption = (property: BookingWizardProperty) => {\n if (isImagesTheme) {\n return (\n <div\n key={property.id}\n className={classNames(styles['card'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['card-img']}>\n <img src={property?.card?.image} />\n </div>\n <div className={styles['card-body']}>\n <div className={styles['card-title']}>{property.name}</div>\n <div className={styles['card-sub-title']}>{property?.card?.text}</div>\n </div>\n </div>\n );\n } else {\n return (\n <div\n key={property.id}\n className={classNames(styles['container--suggest-list-hotel'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['container--suggest-list-hotel-name']}>{property.name}</div>\n <div className={styles.check}></div>\n </div>\n );\n }\n };\n\n const onOpenDrawer = () => {\n setOpen(true);\n };\n\n if (isOnlyProperty) {\n return <Text>{selectedProperty?.name}</Text>;\n }\n\n if (type === 'inline') {\n return (\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={open}>\n <div className={styles['inline-box']}>{renderOptions()}</div>\n </AutoAutoHeight>\n </div>\n );\n }\n\n if (type === 'bottom-sheet') {\n const ItemDisplay = () => {\n return (\n <div\n className={classNames({\n [styles['--mini']]: !isImagesThemeMobile && layout === 'horizontal-condensed',\n [styles['item-display']]: isImagesThemeMobile,\n })}\n onClick={onOpenDrawer}\n >\n <Text className={classNames(styles.optionLabel, { [styles.placeholder]: !selectedProperty?.name })} bold>\n {selectedProperty?.name || t(Translation.Misc.PleaseSelectHotelMobile)}\n </Text>\n {isImagesThemeMobile ? <Icon icon={IconType.Dropdown} /> : null}\n </div>\n );\n };\n return (\n <>\n <ItemDisplay />\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={open}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n }}\n header={<BWBottomSheetHeader title={t(Translation.Misc.ChooseHotelMobile)} onClose={() => setOpen(false)} />}\n footer={\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Property].isFirst}\n onNext={() => onNextHandler(EBookingWizardSection.Property)}\n disabledNext={!selectedProperty}\n />\n }\n >\n <div className={classNames(styles.content, contentClassName)}>{renderOptions()}</div>\n </BookingWizardBottomSheet>\n </>\n );\n }\n\n return (\n <div className={classNames({ [styles['--mini']]: layout === 'horizontal-condensed' })}>\n <Select<BookingWizardProperty, 'id'>\n target={followElement}\n offset={overlay?.offset}\n options={optionedProperties}\n value={selectedProperty?.id}\n onChange={(value) => onPropertyClick(getOption(value) as BookingWizardProperty)}\n keyName=\"id\"\n labelName=\"name\"\n hideExpandIcon={layout === 'horizontal-condensed'}\n disableNative\n overlay={{\n containerClassName: classNames(styles['custom-overlay'], {\n [styles['small-container']]: isSmallContainer,\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n }),\n strategy: 'absolute',\n usePortal: false,\n placement: overlay?.placement || 'bottom',\n fallbackPlacements: overlay?.fallbackPlacements || 'bottom',\n hideStyles: true,\n }}\n renderOption={(property) => {\n if (property) return renderOption(property);\n return null;\n }}\n renderLabel={(option) => {\n return (\n <Text className={classNames(styles.optionLabel, bookingWizardStyles['value'])} bold>\n {option?.name || (\n <span className={classNames(styles['hotel-dropdown-label'], bookingWizardStyles['value'])}>{t(Translation.Misc.PleaseSelectHotel)}</span>\n )}\n </Text>\n );\n }}\n />\n </div>\n );\n};\n"]}
|
package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js
CHANGED
|
@@ -33,6 +33,7 @@ const react_i18next_1 = require("react-i18next");
|
|
|
33
33
|
const Translation_1 = require("../../../../translations/Translation");
|
|
34
34
|
const Debounce_1 = require("../../../../util/Debounce");
|
|
35
35
|
const Tooltip_1 = __importDefault(require("../../Tooltip/Tooltip"));
|
|
36
|
+
const BookingWizard_module_scss_1 = __importDefault(require("../BookingWizard.module.scss"));
|
|
36
37
|
const BookingWizardPromoCode_module_scss_1 = __importDefault(require("./BookingWizardPromoCode.module.scss"));
|
|
37
38
|
const BookingWizardPromoCode = (props) => {
|
|
38
39
|
const { promoCode, valid, onChange } = props;
|
|
@@ -57,8 +58,10 @@ const BookingWizardPromoCode = (props) => {
|
|
|
57
58
|
return `Promo Code '${code}' applied`;
|
|
58
59
|
return t(Translation_1.Translation.Step.Date.PromoCode);
|
|
59
60
|
};
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
const promocodeInput = (react_1.default.createElement("input", { className: (0, classnames_1.default)(BookingWizardPromoCode_module_scss_1.default.container, BookingWizard_module_scss_1.default['value'], {
|
|
62
|
+
[BookingWizardPromoCode_module_scss_1.default['--error']]: valid === false,
|
|
63
|
+
[BookingWizardPromoCode_module_scss_1.default['--success']]: valid === true,
|
|
64
|
+
}), type: "text", value: code, placeholder: t(Translation_1.Translation.Step.Date.PromoCode), onChange: (e) => setCode(e.target.value) }));
|
|
62
65
|
if (props.hideTooltip) {
|
|
63
66
|
return promocodeInput;
|
|
64
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardPromoCode.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAAoE;AACpE,iDAA+C;AAE/C,4DAAyD;AACzD,8CAA2C;AAE3C,oEAA4C;AAC5C,8GAA0D;
|
|
1
|
+
{"version":3,"file":"BookingWizardPromoCode.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAAoE;AACpE,iDAA+C;AAE/C,4DAAyD;AACzD,8CAA2C;AAE3C,oEAA4C;AAC5C,6FAA+D;AAC/D,8GAA0D;AASnD,MAAM,sBAAsB,GAAoC,CAAC,KAAK,EAAE,EAAE;IAC7E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAqB,EAAE,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAG,IAAA,mBAAW,EAC9B,IAAA,mBAAQ,EAAC,CAAC,KAAK,EAAE,EAAE;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,GAAG,CAAC,EACP,EAAE,CACL,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,cAAc,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,eAAe,GAAG,GAAG,EAAE;QACzB,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,eAAe,IAAI,gBAAgB,CAAC;QAChE,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,eAAe,IAAI,WAAW,CAAC;QAC1D,OAAO,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CACnB,yCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,4CAAM,CAAC,SAAS,EAAE,mCAAmB,CAAC,OAAO,CAAC,EAAE;YAClE,CAAC,4CAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK;YACpC,CAAC,4CAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI;SACxC,CAAC,EACF,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,EACX,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC1C,CACL,CAAC;IAEF,IAAI,KAAK,CAAC,WAAW,EAAE;QACnB,OAAO,cAAc,CAAC;KACzB;IAED,OAAO,8BAAC,iBAAO,IAAC,KAAK,EAAE,eAAe,EAAE,IAAG,cAAc,CAAW,CAAC;AACzE,CAAC,CAAC;AA9CW,QAAA,sBAAsB,0BA8CjC","sourcesContent":["import classNames from 'classnames';\nimport React, { FC, useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Translation } from '@/translations/Translation';\nimport { debounce } from '@/util/Debounce';\n\nimport Tooltip from '../../Tooltip/Tooltip';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport styles from './BookingWizardPromoCode.module.scss';\ninterface BookingWizardPromoCodeProps {\n promoCode?: string;\n valid?: boolean;\n onChange?: (promoCode: string) => void;\n\n hideTooltip?: boolean;\n}\n\nexport const BookingWizardPromoCode: FC<BookingWizardPromoCodeProps> = (props) => {\n const { promoCode, valid, onChange } = props;\n const { t } = useTranslation();\n\n const [code, setCode] = useState<string | undefined>('');\n\n const debounceChange = useCallback(\n debounce((value) => {\n onChange?.(value);\n }, 500),\n []\n );\n\n useEffect(() => {\n debounceChange(code);\n }, [code]);\n\n useEffect(() => {\n if (promoCode !== code) setCode(promoCode);\n }, [promoCode]);\n\n const getTooltipTitle = () => {\n if (!promoCode) return t(Translation.Step.Date.PromoCode);\n if (valid === false) return `Promo Code '${code}' is not valid`;\n if (valid === true) return `Promo Code '${code}' applied`;\n return t(Translation.Step.Date.PromoCode);\n };\n\n const promocodeInput = (\n <input\n className={classNames(styles.container, bookingWizardStyles['value'], {\n [styles['--error']]: valid === false,\n [styles['--success']]: valid === true,\n })}\n type=\"text\"\n value={code}\n placeholder={t(Translation.Step.Date.PromoCode)}\n onChange={(e) => setCode(e.target.value)}\n />\n );\n\n if (props.hideTooltip) {\n return promocodeInput;\n }\n\n return <Tooltip title={getTooltipTitle()}>{promocodeInput}</Tooltip>;\n};\n"]}
|
|
@@ -10,6 +10,12 @@ export interface DatePickerProps extends ShowYearOnCalendarProps {
|
|
|
10
10
|
onEndDateChanged?: (date: dayjs.Dayjs) => void;
|
|
11
11
|
fixedStartDate?: boolean;
|
|
12
12
|
showMultipleMonths?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* When showMultipleMonths is set to true.
|
|
15
|
+
* Optional limit for how many months can be displayed via "Add More Dates".
|
|
16
|
+
*/
|
|
17
|
+
monthCount?: number;
|
|
13
18
|
theme?: EBookingWizardTheme;
|
|
19
|
+
className?: string;
|
|
14
20
|
}
|
|
15
21
|
export default function DateRangePicker(props: DatePickerProps): JSX.Element;
|
|
@@ -55,7 +55,7 @@ var EDateRangePickingState;
|
|
|
55
55
|
})(EDateRangePickingState || (EDateRangePickingState = {}));
|
|
56
56
|
function DateRangePicker(props) {
|
|
57
57
|
var _a, _b;
|
|
58
|
-
const { showYearOnCalendar, yearDisplayOption } = props;
|
|
58
|
+
const { showYearOnCalendar, yearDisplayOption, showArrows = true, monthCount = 2 } = props;
|
|
59
59
|
const [currentMonth, setCurrentMonth] = (0, react_1.useState)(props.selectedStartDate ? props.selectedStartDate : (0, dayjs_1.default)());
|
|
60
60
|
const [selectedStartDate, setSelectedStartDate] = (0, react_1.useState)((_a = props.selectedStartDate) !== null && _a !== void 0 ? _a : (props.fixedStartDate ? (0, dayjs_1.default)() : null));
|
|
61
61
|
const [selectedEndDate, setSelectedEndDate] = (0, react_1.useState)((_b = props.selectedEndDate) !== null && _b !== void 0 ? _b : null);
|
|
@@ -128,10 +128,11 @@ function DateRangePicker(props) {
|
|
|
128
128
|
fixedStartDate: !!props.fixedStartDate,
|
|
129
129
|
theme: props.theme,
|
|
130
130
|
};
|
|
131
|
-
const printMonths = (0, react_1.useMemo)(() =>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
const printMonths = (0, react_1.useMemo)(() => {
|
|
132
|
+
const monthsToRender = props.showMultipleMonths ? Array.from({ length: monthCount }, (_, index) => currentMonth.clone().add(index, 'month')) : [currentMonth];
|
|
133
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, monthsToRender.map((month, index) => (react_1.default.createElement(DateRangePickerMonth_1.default, { key: index, small: props.small, showingMonth: month, showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption })))));
|
|
134
|
+
}, [currentMonth, props.showMultipleMonths, props.small, props.theme, showYearOnCalendar, yearDisplayOption, monthCount]);
|
|
135
|
+
const calendarClassNames = (0, classnames_1.default)(DateRangePicker_module_scss_1.default['roomstay-calendar'], props.className, {
|
|
135
136
|
[DateRangePicker_module_scss_1.default['--small']]: props.small,
|
|
136
137
|
[DateRangePicker_module_scss_1.default['--single']]: !props.showMultipleMonths,
|
|
137
138
|
[DateRangePicker_module_scss_1.default['--specific']]: props.theme === BookingWizard_1.EBookingWizardTheme.Specific,
|
|
@@ -146,9 +147,9 @@ function DateRangePicker(props) {
|
|
|
146
147
|
const iconBackground = props.theme === BookingWizard_1.EBookingWizardTheme.Specific ? undefined : Color_1.Color.Snow;
|
|
147
148
|
return (react_1.default.createElement(DateRangePickerContext_1.DateRangePickerContext.Provider, { value: context },
|
|
148
149
|
react_1.default.createElement("div", { ref: firstUpdate, className: calendarClassNames },
|
|
149
|
-
react_1.default.createElement("div", { className: DateRangePicker_module_scss_1.default['roomstay-calendar-navigation'] },
|
|
150
|
+
showArrows && (react_1.default.createElement("div", { className: DateRangePicker_module_scss_1.default['roomstay-calendar-navigation'] },
|
|
150
151
|
react_1.default.createElement(Icon_1.default, { className: DateRangePicker_module_scss_1.default['roomstay-calendar-arrow'], icon: Icon_1.IconType.ArrowLeft2, onClick: previousMonthOnClick, color: Color_1.Color.Navy, backgroundColor: iconBackground, borderRadius: "round", size: iconSize }),
|
|
151
|
-
react_1.default.createElement(Icon_1.default, { className: DateRangePicker_module_scss_1.default['roomstay-calendar-arrow'], icon: Icon_1.IconType.ArrowRight2, onClick: nextMonthOnClick, color: Color_1.Color.Navy, backgroundColor: iconBackground, borderRadius: "round", size: iconSize })),
|
|
152
|
+
react_1.default.createElement(Icon_1.default, { className: DateRangePicker_module_scss_1.default['roomstay-calendar-arrow'], icon: Icon_1.IconType.ArrowRight2, onClick: nextMonthOnClick, color: Color_1.Color.Navy, backgroundColor: iconBackground, borderRadius: "round", size: iconSize }))),
|
|
152
153
|
printMonths)));
|
|
153
154
|
}
|
|
154
155
|
exports.default = DateRangePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sourceRoot":"/","sources":["src/components/generic/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { DateRangePickerContext, DateRangePickerContextProps } from '@/components/generic/DateRangePicker/DateRangePickerContext';\nimport DateRangePickerMonth from '@/components/generic/DateRangePicker/DateRangePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport { Color } from '@/util/Color';\n\nimport { EBookingWizardTheme } from '../BookingWizard/BookingWizard';\nimport styles from './DateRangePicker.module.scss';\n\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isSameOrAfter);\n\nexport interface DatePickerProps extends ShowYearOnCalendarProps {\n selectedStartDate?: dayjs.Dayjs | null;\n selectedEndDate?: dayjs.Dayjs | null;\n // Includes default navigation arrows\n showArrows?: boolean;\n small?: boolean;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n fixedStartDate?: boolean;\n showMultipleMonths?: boolean;\n theme?: EBookingWizardTheme;\n}\n\nenum EDateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DateRangePicker(props: DatePickerProps) {\n const { showYearOnCalendar, yearDisplayOption } = props;\n const [currentMonth, setCurrentMonth] = useState(props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState<Dayjs | null>(props.selectedStartDate ?? (props.fixedStartDate ? dayjs() : null));\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(props.fixedStartDate ? EDateRangePickingState.EndDate : EDateRangePickingState.StartDate);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: EDateRangePickingState | null = null;\n switch (pickingState) {\n default:\n case EDateRangePickingState.StartDate:\n newPickingState = EDateRangePickingState.EndDate;\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n break;\n case EDateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = EDateRangePickingState.EndDate;\n } else {\n newPickingState = EDateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = newDate;\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n setPickingState(props.fixedStartDate ? EDateRangePickingState.EndDate : newPickingState);\n };\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n setHoveringOverDate(day as Dayjs);\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: DateRangePickerContextProps = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n fixedStartDate: !!props.fixedStartDate,\n theme: props.theme,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n <DateRangePickerMonth small={props.small} showingMonth={currentMonth} showYearOnCalendar={showYearOnCalendar} yearDisplayOption={yearDisplayOption} />\n {props.showMultipleMonths && (\n <DateRangePickerMonth\n small={props.small}\n showingMonth={currentMonth.add(1, 'month')}\n showYearOnCalendar={showYearOnCalendar}\n yearDisplayOption={yearDisplayOption}\n />\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths]\n );\n\n const calendarClassNames = classNames(styles['roomstay-calendar'], {\n [styles['--small']]: props.small,\n [styles['--single']]: !props.showMultipleMonths,\n [styles['--specific']]: props.theme === EBookingWizardTheme.Specific,\n });\n const previousMonthOnClick = () => {\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n\n const iconSize = props.theme === EBookingWizardTheme.Specific ? '16px' : '24px';\n const iconBackground = props.theme === EBookingWizardTheme.Specific ? undefined : Color.Snow;\n\n return (\n <DateRangePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n <div className={styles['roomstay-calendar-navigation']}>\n <Icon\n className={styles['roomstay-calendar-arrow']}\n icon={IconType.ArrowLeft2}\n onClick={previousMonthOnClick}\n color={Color.Navy}\n backgroundColor={iconBackground}\n borderRadius=\"round\"\n size={iconSize}\n />\n <Icon\n className={styles['roomstay-calendar-arrow']}\n icon={IconType.ArrowRight2}\n onClick={nextMonthOnClick}\n color={Color.Navy}\n backgroundColor={iconBackground}\n borderRadius=\"round\"\n size={iconSize}\n />\n </div>\n {printMonths}\n </div>\n </DateRangePickerContext.Provider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sourceRoot":"/","sources":["src/components/generic/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { DateRangePickerContext, DateRangePickerContextProps } from '@/components/generic/DateRangePicker/DateRangePickerContext';\nimport DateRangePickerMonth from '@/components/generic/DateRangePicker/DateRangePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { ShowYearOnCalendarProps } from '@/models/Api/HotelOverrideDTO';\nimport { Color } from '@/util/Color';\n\nimport { EBookingWizardTheme } from '../BookingWizard/BookingWizard';\nimport styles from './DateRangePicker.module.scss';\n\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isSameOrAfter);\n\nexport interface DatePickerProps extends ShowYearOnCalendarProps {\n selectedStartDate?: dayjs.Dayjs | null;\n selectedEndDate?: dayjs.Dayjs | null;\n // Includes default navigation arrows\n showArrows?: boolean;\n small?: boolean;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n fixedStartDate?: boolean;\n showMultipleMonths?: boolean;\n /**\n * When showMultipleMonths is set to true.\n * Optional limit for how many months can be displayed via \"Add More Dates\".\n */\n monthCount?: number;\n theme?: EBookingWizardTheme;\n className?: string;\n}\n\nenum EDateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DateRangePicker(props: DatePickerProps) {\n const { showYearOnCalendar, yearDisplayOption, showArrows = true, monthCount = 2 } = props;\n const [currentMonth, setCurrentMonth] = useState(props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState<Dayjs | null>(props.selectedStartDate ?? (props.fixedStartDate ? dayjs() : null));\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(props.fixedStartDate ? EDateRangePickingState.EndDate : EDateRangePickingState.StartDate);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: EDateRangePickingState | null = null;\n switch (pickingState) {\n default:\n case EDateRangePickingState.StartDate:\n newPickingState = EDateRangePickingState.EndDate;\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n break;\n case EDateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = EDateRangePickingState.EndDate;\n } else {\n newPickingState = EDateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = newDate;\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n setPickingState(props.fixedStartDate ? EDateRangePickingState.EndDate : newPickingState);\n };\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n setHoveringOverDate(day as Dayjs);\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: DateRangePickerContextProps = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n fixedStartDate: !!props.fixedStartDate,\n theme: props.theme,\n };\n\n const printMonths = useMemo(() => {\n const monthsToRender = props.showMultipleMonths ? Array.from({ length: monthCount }, (_, index) => currentMonth.clone().add(index, 'month')) : [currentMonth];\n\n return (\n <>\n {monthsToRender.map((month, index) => (\n <DateRangePickerMonth key={index} small={props.small} showingMonth={month} showYearOnCalendar={showYearOnCalendar} yearDisplayOption={yearDisplayOption} />\n ))}\n </>\n );\n }, [currentMonth, props.showMultipleMonths, props.small, props.theme, showYearOnCalendar, yearDisplayOption, monthCount]);\n\n const calendarClassNames = classNames(styles['roomstay-calendar'], props.className, {\n [styles['--small']]: props.small,\n [styles['--single']]: !props.showMultipleMonths,\n [styles['--specific']]: props.theme === EBookingWizardTheme.Specific,\n });\n const previousMonthOnClick = () => {\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n\n const iconSize = props.theme === EBookingWizardTheme.Specific ? '16px' : '24px';\n const iconBackground = props.theme === EBookingWizardTheme.Specific ? undefined : Color.Snow;\n\n return (\n <DateRangePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {showArrows && (\n <div className={styles['roomstay-calendar-navigation']}>\n <Icon\n className={styles['roomstay-calendar-arrow']}\n icon={IconType.ArrowLeft2}\n onClick={previousMonthOnClick}\n color={Color.Navy}\n backgroundColor={iconBackground}\n borderRadius=\"round\"\n size={iconSize}\n />\n <Icon\n className={styles['roomstay-calendar-arrow']}\n icon={IconType.ArrowRight2}\n onClick={nextMonthOnClick}\n color={Color.Navy}\n backgroundColor={iconBackground}\n borderRadius=\"round\"\n size={iconSize}\n />\n </div>\n )}\n {printMonths}\n </div>\n </DateRangePickerContext.Provider>\n );\n}\n"]}
|
|
@@ -15,6 +15,8 @@ export interface FloatingDateRangePickerProps extends Omit<DatePickerProps, 'sel
|
|
|
15
15
|
placement?: Placement;
|
|
16
16
|
fallbackPlacements?: Placement;
|
|
17
17
|
};
|
|
18
|
+
notes?: React.ReactNode;
|
|
19
|
+
onOverlayOpenChange?: (isOpen: boolean) => void;
|
|
18
20
|
}
|
|
19
21
|
export interface FloatingDateRangePickerHandle {
|
|
20
22
|
closePicker: () => void;
|
|
@@ -45,7 +45,7 @@ const BookingWizard_1 = require("../BookingWizard/BookingWizard");
|
|
|
45
45
|
const DateRangePicker_module_scss_1 = __importDefault(require("./DateRangePicker.module.scss"));
|
|
46
46
|
const FloatingDateRangePicker = react_1.default.forwardRef((props, ref) => {
|
|
47
47
|
var _a, _b;
|
|
48
|
-
const { children, startDate: startDateProp, endDate: endDateProp, selectedDateChanged: selectedDateChangedProp, className, overlay, showYearOnCalendar, yearDisplayOption } = props, DatePickerProps = __rest(props, ["children", "startDate", "endDate", "selectedDateChanged", "className", "overlay", "showYearOnCalendar", "yearDisplayOption"]);
|
|
48
|
+
const { children, notes, startDate: startDateProp, endDate: endDateProp, selectedDateChanged: selectedDateChangedProp, className, overlay, showYearOnCalendar, yearDisplayOption, onOverlayOpenChange } = props, DatePickerProps = __rest(props, ["children", "notes", "startDate", "endDate", "selectedDateChanged", "className", "overlay", "showYearOnCalendar", "yearDisplayOption", "onOverlayOpenChange"]);
|
|
49
49
|
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
50
50
|
const [startDate, setStartDate] = (0, react_1.useState)(null);
|
|
51
51
|
const thisElement = (0, react_1.useRef)(null);
|
|
@@ -71,6 +71,12 @@ const FloatingDateRangePicker = react_1.default.forwardRef((props, ref) => {
|
|
|
71
71
|
const onOverlayOpen = () => {
|
|
72
72
|
setIsOpen(true);
|
|
73
73
|
};
|
|
74
|
+
(0, react_1.useEffect)(() => {
|
|
75
|
+
onOverlayOpenChange === null || onOverlayOpenChange === void 0 ? void 0 : onOverlayOpenChange(isOpen);
|
|
76
|
+
return () => {
|
|
77
|
+
onOverlayOpenChange === null || onOverlayOpenChange === void 0 ? void 0 : onOverlayOpenChange(false);
|
|
78
|
+
};
|
|
79
|
+
}, [isOpen]);
|
|
74
80
|
const inner = (react_1.default.createElement("div", { className: "d-flex align-items-center flex-column" },
|
|
75
81
|
react_1.default.createElement(DateRangePicker_1.default, Object.assign({ selectedStartDate: startDateProp, selectedEndDate: endDateProp, onStartDateChanged: onStartDateChangedHandler, onEndDateChanged: selectedDateChanged, showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption }, DatePickerProps))));
|
|
76
82
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -78,8 +84,11 @@ const FloatingDateRangePicker = react_1.default.forwardRef((props, ref) => {
|
|
|
78
84
|
react_1.default.createElement(Overlay_1.Overlay, Object.assign({ offset: props.overlayOffset, open: isOpen, onClose: onOverlayClose, container: props.container || ((_b = (_a = thisElement.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement), followElement: props.container || thisElement.current }, (overlay || {}), { className: (0, classnames_1.default)(DateRangePicker_module_scss_1.default['floating-roomstay-calendar'], {
|
|
79
85
|
[DateRangePicker_module_scss_1.default['--small']]: DatePickerProps.small,
|
|
80
86
|
[DateRangePicker_module_scss_1.default['--specific']]: props.theme === BookingWizard_1.EBookingWizardTheme.Specific,
|
|
87
|
+
[DateRangePicker_module_scss_1.default['--images']]: props.theme === BookingWizard_1.EBookingWizardTheme.Images,
|
|
81
88
|
[DateRangePicker_module_scss_1.default['--single']]: !DatePickerProps.showMultipleMonths,
|
|
82
|
-
}) }),
|
|
89
|
+
}) }),
|
|
90
|
+
inner,
|
|
91
|
+
notes)));
|
|
83
92
|
});
|
|
84
93
|
FloatingDateRangePicker.displayName = 'FloatingDateRangePicker';
|
|
85
94
|
exports.default = FloatingDateRangePicker;
|