@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.
Files changed (130) hide show
  1. package/dist/493.bundle.js +1 -1
  2. package/dist/537.bundle.js +1 -0
  3. package/dist/903.bundle.js +1 -1
  4. package/dist/main.bundle.js +1 -1
  5. package/dist/src/api/AvailabilityAPI.js +8 -6
  6. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  7. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +1 -1
  8. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  9. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +9 -1
  10. package/dist/src/components/generic/BookingWizard/BookingWizard.js +86 -1
  11. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  12. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +14 -1
  13. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +27 -0
  14. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
  15. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +19 -0
  16. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +116 -30
  17. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  18. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +12 -1
  19. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  20. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +6 -2
  21. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +96 -29
  22. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  23. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +18 -3
  24. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +118 -27
  25. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  26. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +53 -18
  27. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  28. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +5 -2
  29. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
  30. package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +6 -0
  31. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +8 -7
  32. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  33. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.d.ts +2 -0
  34. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +11 -2
  35. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  36. package/dist/src/components/generic/Event/EventCard.js +6 -2
  37. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  38. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +19 -4
  39. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  40. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +1 -0
  41. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +2 -2
  42. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  43. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +3 -2
  44. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +10 -10
  45. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  46. package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
  47. package/dist/src/components/generic/date/DatePicker.js +7 -3
  48. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  49. package/dist/src/components/generic/date/DatePickerDay.js +13 -3
  50. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  51. package/dist/src/components/reservation/ReservationItem.js +5 -2
  52. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  53. package/dist/src/components/reservation/ReservationList.js +1 -1
  54. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  55. package/dist/src/components/steps/confirmation/PaymentInformation.js +4 -1
  56. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  57. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +7 -1
  58. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  59. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +7 -4
  60. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  61. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +3 -1
  62. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  63. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
  64. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  65. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
  66. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  67. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +9 -7
  68. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  69. package/dist/src/contexts/DatePickerContext.d.ts +1 -0
  70. package/dist/src/contexts/DatePickerContext.js.map +1 -1
  71. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +3 -0
  72. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  73. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +3 -3
  74. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  75. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +9 -2
  76. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  77. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +10 -10
  78. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  79. package/dist/src/handlers/payment/PaymentHandler.d.ts +1 -0
  80. package/dist/src/handlers/payment/PaymentHandler.js.map +1 -1
  81. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js +13 -35
  82. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  83. package/dist/src/index.d.ts +1 -0
  84. package/dist/src/index.js +5 -2
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  87. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  88. package/dist/src/models/BasketRow.d.ts +3 -6
  89. package/dist/src/models/BasketRow.js +11 -15
  90. package/dist/src/models/BasketRow.js.map +1 -1
  91. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +4 -0
  92. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  93. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -0
  94. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  95. package/dist/src/models/Confirmation.d.ts +1 -2
  96. package/dist/src/models/Confirmation.js.map +1 -1
  97. package/dist/src/models/Room/Room.d.ts +7 -0
  98. package/dist/src/models/Room/Room.js +13 -0
  99. package/dist/src/models/Room/Room.js.map +1 -1
  100. package/dist/src/models/Room/RoomRate.js +3 -0
  101. package/dist/src/models/Room/RoomRate.js.map +1 -1
  102. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  103. package/dist/src/pages/findReservation/FindReservationResults.js +12 -8
  104. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  105. package/dist/src/providers/RoomstayThemeEngine.d.ts +1 -1
  106. package/dist/src/providers/RoomstayThemeEngine.js +20 -5
  107. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  108. package/dist/src/stories/RadioButtonGroup.stories.d.ts +1 -1
  109. package/dist/src/translations/Translation.d.ts +7 -1
  110. package/dist/src/translations/Translation.js +7 -1
  111. package/dist/src/translations/Translation.js.map +1 -1
  112. package/dist/src/translations/languages/en-gb.js +7 -1
  113. package/dist/src/translations/languages/en-gb.js.map +1 -1
  114. package/dist/src/util/Analytics/GoogleAnalytics4.js +27 -12
  115. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  116. package/dist/src/util/Analytics/UniversalAnalytics.js +3 -3
  117. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  118. package/dist/src/util/DataLayer.d.ts +5 -1
  119. package/dist/src/util/DataLayer.js +9 -2
  120. package/dist/src/util/DataLayer.js.map +1 -1
  121. package/dist/src/util/EventsHelper.d.ts +4 -1
  122. package/dist/src/util/EventsHelper.js +15 -4
  123. package/dist/src/util/EventsHelper.js.map +1 -1
  124. package/dist/test.bundle.js +1 -1
  125. package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
  126. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  127. package/dist/vendors.bundle.js +1 -1
  128. package/package.json +2 -2
  129. package/dist/586.bundle.js +0 -1
  130. 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":"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","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":"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","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 BookingWizardBottomSheet_1 = __importDefault(require("../BookingWizardBottomSheet/BookingWizardBottomSheet"));
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
- setOpen(false);
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
- 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) },
111
- react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['container--suggest-list-hotel-name'] }, property.name),
112
- react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.check })));
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("div", { className: (0, classnames_1.default)({ [BookingWizardHotelSelector_module_scss_1.default['--mini']]: layout === 'horizontal-condensed' }), onClick: onOpenDrawer },
128
- 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) || 'Select...')),
129
- 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']), open: open, onDismiss: () => setOpen(false), header: react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.header },
130
- react_1.default.createElement("div", null, t(Translation_1.Translation.Misc.ChooseHotel)),
131
- " ",
132
- react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Close, onClick: () => setOpen(false) })) },
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'], { [BookingWizardHotelSelector_module_scss_1.default['small-container']]: isSmallContainer }),
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) => (react_1.default.createElement("div", { 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 === null || property === void 0 ? void 0 : property.id) }) },
144
- react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default['container--suggest-list-hotel-name'] }, property === null || property === void 0 ? void 0 : property.name),
145
- react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.check }))), renderLabel: (option) => {
146
- return (react_1.default.createElement(Text_1.default, { className: BookingWizardHotelSelector_module_scss_1.default.optionLabel, bold: true }, (option === null || option === void 0 ? void 0 : option.name) || react_1.default.createElement("span", { className: BookingWizardHotelSelector_module_scss_1.default['hotel-dropdown-label'] }, t(Translation_1.Translation.Misc.PleaseSelectHotel))));
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"]}
@@ -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
- console.log(props.hideTooltip);
61
- const promocodeInput = (react_1.default.createElement("input", { className: (0, classnames_1.default)(BookingWizardPromoCode_module_scss_1.default.container, { [BookingWizardPromoCode_module_scss_1.default['--error']]: valid === false, [BookingWizardPromoCode_module_scss_1.default['--success']]: valid === true }), type: "text", value: code, placeholder: t(Translation_1.Translation.Step.Date.PromoCode), onChange: (e) => setCode(e.target.value) }));
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;AAUnD,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,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,cAAc,GAAG,CACnB,yCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,4CAAM,CAAC,SAAS,EAAE,EAAE,CAAC,4CAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC,4CAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,EACxH,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;AA7CW,QAAA,sBAAsB,0BA6CjC","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 styles from './BookingWizardPromoCode.module.scss';\n\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 console.log(props.hideTooltip);\n\n const promocodeInput = (\n <input\n className={classNames(styles.container, { [styles['--error']]: valid === false, [styles['--success']]: valid === true })}\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"]}
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)(() => (react_1.default.createElement(react_1.default.Fragment, null,
132
- react_1.default.createElement(DateRangePickerMonth_1.default, { small: props.small, showingMonth: currentMonth, showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption }),
133
- props.showMultipleMonths && (react_1.default.createElement(DateRangePickerMonth_1.default, { small: props.small, showingMonth: currentMonth.add(1, 'month'), showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption })))), [currentMonth, props.showMultipleMonths]);
134
- const calendarClassNames = (0, classnames_1.default)(DateRangePicker_module_scss_1.default['roomstay-calendar'], {
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
- }) }), inner)));
89
+ }) }),
90
+ inner,
91
+ notes)));
83
92
  });
84
93
  FloatingDateRangePicker.displayName = 'FloatingDateRangePicker';
85
94
  exports.default = FloatingDateRangePicker;