@roomstay/frontend 2.6.99-0 → 2.6.99
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/288.bundle.js +1 -1
- package/dist/328.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +3 -2
- package/dist/src/api/AvailabilityAPI.js +9 -5
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.js +0 -5
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/steps/addons/AddonCard.js +114 -9
- package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePicker.js +3 -5
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/room/RoomList.js.map +1 -1
- package/dist/src/components/steps/room/RoomModal.js +1 -1
- package/dist/src/components/steps/room/RoomModal.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +1 -3
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +4 -3
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummary.js +4 -3
- package/dist/src/components/summary/BESummary.js.map +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.d.ts +3 -0
- package/dist/src/components/summary/BESummaryAddonRow.js +16 -4
- package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +3 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +51 -21
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +6 -5
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +5 -3
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/models/BasketAddonRow.d.ts +27 -0
- package/dist/src/models/BasketAddonRow.js +50 -0
- package/dist/src/models/BasketAddonRow.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +0 -2
- package/dist/src/models/BasketRow.js +0 -21
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/utils/AddonDiscountCalculator.d.ts +79 -0
- package/dist/src/utils/AddonDiscountCalculator.js +142 -0
- package/dist/src/utils/AddonDiscountCalculator.js.map +1 -0
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomBuilderProgressRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport NumberOfAdultsPicker from '@/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker';\nimport NumberOfChildrenPicker from '@/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport NumberOfInfantsPicker from './NumberOfInfantsPicker';\n\nexport interface RoomBuilderProgressRowProps {\n row: BasketRow;\n number?: number;\n}\n\nexport default function RoomBuilderProgressRow(props: RoomBuilderProgressRowProps) {\n const context = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n const { showChildren } = useSearchScopeHook();\n const { t } = useTranslation();\n const { isMobile } = useWindowSize();\n const { signedInUser } = useSignedInMember();\n\n const [isEditing, setIsEditing] = useState(false);\n const [collapsed, setCollapsed] = useState<boolean>(true);\n const { row } = props;\n\n const isCurrent = useMemo(() => {\n return context.selectedBasketRow && context.selectedBasketRow?.getID() === row?.getID();\n }, [context.selectedBasketRow, context.selectedBasketRow?.getID(), row?.getID()]);\n\n const classes = classNames('room-builder-progress--item', {\n '--current': isCurrent,\n '--complete': row.isValid(),\n });\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n useEffect(() => {\n if (isEditing && !isCurrent) {\n setIsEditing(false);\n }\n }, [context.selectBasketRow]);\n\n const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }: { adults?: number; children?: number; infants?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n context.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n context.updateBasketRow(row);\n };\n\n const onDatePickerOpenChange = (isOpen: boolean) => {\n context.onDatePickerOpenChange(isOpen);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (context.selectedBasketRow) {\n context.selectedBasketRow.setPromoCode(code);\n context.selectedBasketRow.setManualInputPromoCode(!!code);\n context.updateBasketRow(context.selectedBasketRow);\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const isRemovable = context.currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.removeBasketRow(row);\n };\n const removeButton = (\n <div className=\"room-builder-progress--remove\">\n <Tooltip title={isRemovable ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}>\n <BEButton isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!isRemovable} onClick={removeRoomOnClick} />\n </Tooltip>\n </div>\n );\n\n const toggleButton = (\n <div className=\"room-builder-progress--collapse\">\n <BEButton\n isText\n icon={collapsed ? IconType.ArrowDown3 : IconType.ArrowUp3}\n iconPosition=\"right\"\n stopIconAnimation\n onClick={() => {\n setCollapsed((prev) => !prev);\n }}\n />\n </div>\n );\n\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n const showEditSection = isLargerThanLarge || isCurrent;\n\n const roomLabel = useMemo(() => {\n return context.currentBasketRows.length !== 1 ? (props.number as number) + 1 : '';\n }, [context.currentBasketRows.length, props.number]);\n\n const promoCodeTooltip = row?.getPromoCodeTooltip(t, Translation) || '';\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n const saveRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Save Room Changes', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const cancelRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const editRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(row);\n setIsEditing(true);\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const updateNumberOfInfantsOnChange = (value: string) => {\n updatePeopleValues({ infants: +value });\n };\n\n const promocode = row.getDefaultInputPromoCode(signedInUser, hotel?.memberOnlyPromoCode);\n\n const DateRangePicker = useMemo(() => {\n return (\n <div className=\"room-builder-progress--value\">\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n className=\"u-w-100@xl- d-flex align-items-center justify-content-center\"\n isAboveNav\n onDatePickerOpenChange={onDatePickerOpenChange}\n >\n <Tooltip title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n );\n }, [row, onDatePickerOpenChange]);\n\n const RoomBuilderProgressSearchForm = useMemo(() => {\n return (\n <>\n <Tooltip title={t(Translation.Step.Date.UpdateAdults)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} />\n </div>\n </Tooltip>\n {showChildren ? (\n <Tooltip title={t(Translation.Step.Date.UpdateChildren)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} />\n </div>\n </Tooltip>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <Tooltip title={t(Translation.Step.Date.UpdateInfants)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfInfantsPicker row={row} onChange={updateNumberOfInfantsOnChange} />\n </div>\n </Tooltip>\n ) : null}\n\n <>\n {!isMobile ? DateRangePicker : null}\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={promocode ? row.getPromoCodeColour() : Color.Navy}>\n {promocode ? promocode : t(Translation.Step.Date.PromoCode)}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n </>\n </>\n );\n }, [\n row,\n isMobile,\n promocode,\n promoCodeTooltip,\n showChildren,\n hotel?.childConfiguration,\n updateNumberOfAdultsOnChange,\n updateNumberOfChildrenOnChange,\n updateNumberOfInfantsOnChange,\n ]);\n\n return (\n <div className={classes}>\n {isCurrent || !row.isValid() ? (\n <div className=\"u-flex w-100 001\">\n <div className=\"u-flex flex-wrap flex-xl-nowrap flex-row u-w-100@xl- align-items-center\">\n <div>\n {row.isValid() ? (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.EditingRoom)} {roomLabel}\n </strong>\n </Text>\n ) : (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.SelectRoom)} {roomLabel}\n </strong>\n </Text>\n )}\n </div>\n {showEditSection ? (\n <>\n {!isLargerThanLarge && (\n <div className={'w-100 d-flex' + (showEditSection ? ' u-marg-bottom@xl-' : '')}>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n {t(Translation.Step.Room.ChooseRoomBelow)}\n </Text>\n </div>\n )}\n\n <>{isMobile ? DateRangePicker : null}</>\n {isMobile ? (\n <div className=\"w-100\">\n <AutoAutoHeight open={!collapsed}>\n <div className=\"w-100 u-flex flex-column\">{RoomBuilderProgressSearchForm}</div>\n </AutoAutoHeight>\n </div>\n ) : (\n RoomBuilderProgressSearchForm\n )}\n\n <Overlay open={isPromoModalOpen} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={promocode}\n onChange={changePromoCode}\n valid={\n context.selectedBasketRow?.getPromoCodeStatus() !== EPromoCodeStatus.New && promocode\n ? context.selectedBasketRow?.getPromoCodeStatus() === EPromoCodeStatus.Valid\n : undefined\n }\n row={context.selectedBasketRow}\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n {!isLargerThanLarge && row.isValid() && (\n <BEButton wide primary filled onClick={saveRoomChangesOnClick}>\n {t(Translation.Misc.Save)}\n </BEButton>\n )}\n </>\n ) : (\n <div className=\"w-100\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.NextRoom)}\n </Text>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n {row.isValid() && (\n <div className=\"u-none@xl-\">\n <Tooltip title=\"Cancel changes\">\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={cancelRoomChangesOnClick}>\n {t(Translation.Misc.Cancel).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n )}\n <div className=\"u-flex align-items-center flex-row\">\n {isMobile && toggleButton}\n {removeButton}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"u-flex w-100 002\">\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {promocode && row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {promocode}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={editRoomOnClick}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RoomBuilderProgressRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport NumberOfAdultsPicker from '@/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker';\nimport NumberOfChildrenPicker from '@/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport NumberOfInfantsPicker from './NumberOfInfantsPicker';\n\nexport interface RoomBuilderProgressRowProps {\n row: BasketRow;\n number?: number;\n}\n\nexport default function RoomBuilderProgressRow(props: RoomBuilderProgressRowProps) {\n const context = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n const { showChildren } = useSearchScopeHook();\n const { t } = useTranslation();\n const { isMobile } = useWindowSize();\n\n const [isEditing, setIsEditing] = useState(false);\n const [collapsed, setCollapsed] = useState<boolean>(true);\n const { row } = props;\n\n const isCurrent = useMemo(() => {\n return context.selectedBasketRow && context.selectedBasketRow?.getID() === row?.getID();\n }, [context.selectedBasketRow, context.selectedBasketRow?.getID(), row?.getID()]);\n\n const classes = classNames('room-builder-progress--item', {\n '--current': isCurrent,\n '--complete': row.isValid(),\n });\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n useEffect(() => {\n if (isEditing && !isCurrent) {\n setIsEditing(false);\n }\n }, [context.selectBasketRow]);\n\n const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }: { adults?: number; children?: number; infants?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n context.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n context.updateBasketRow(row);\n };\n\n const onDatePickerOpenChange = (isOpen: boolean) => {\n context.onDatePickerOpenChange(isOpen);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (context.selectedBasketRow) {\n context.selectedBasketRow.setPromoCode(code);\n context.selectedBasketRow.setManualInputPromoCode(!!code);\n context.updateBasketRow(context.selectedBasketRow);\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const isRemovable = context.currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.removeBasketRow(row);\n };\n const removeButton = (\n <div className=\"room-builder-progress--remove\">\n <Tooltip title={isRemovable ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}>\n <BEButton isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!isRemovable} onClick={removeRoomOnClick} />\n </Tooltip>\n </div>\n );\n\n const toggleButton = (\n <div className=\"room-builder-progress--collapse\">\n <BEButton\n isText\n icon={collapsed ? IconType.ArrowDown3 : IconType.ArrowUp3}\n iconPosition=\"right\"\n stopIconAnimation\n onClick={() => {\n setCollapsed((prev) => !prev);\n }}\n />\n </div>\n );\n\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n const showEditSection = isLargerThanLarge || isCurrent;\n\n const roomLabel = useMemo(() => {\n return context.currentBasketRows.length !== 1 ? (props.number as number) + 1 : '';\n }, [context.currentBasketRows.length, props.number]);\n\n const promoCodeTooltip = row?.getPromoCodeTooltip(t, Translation) || '';\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n const saveRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Save Room Changes', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const cancelRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const editRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(row);\n setIsEditing(true);\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const updateNumberOfInfantsOnChange = (value: string) => {\n updatePeopleValues({ infants: +value });\n };\n\n const promocode = row.getPromoCode(hotel?.memberOnlyPromoCode);\n\n const DateRangePicker = useMemo(() => {\n return (\n <div className=\"room-builder-progress--value\">\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n className=\"u-w-100@xl- d-flex align-items-center justify-content-center\"\n isAboveNav\n onDatePickerOpenChange={onDatePickerOpenChange}\n >\n <Tooltip title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n );\n }, [row, onDatePickerOpenChange]);\n\n const RoomBuilderProgressSearchForm = useMemo(() => {\n return (\n <>\n <Tooltip title={t(Translation.Step.Date.UpdateAdults)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} />\n </div>\n </Tooltip>\n {showChildren ? (\n <Tooltip title={t(Translation.Step.Date.UpdateChildren)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} />\n </div>\n </Tooltip>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <Tooltip title={t(Translation.Step.Date.UpdateInfants)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfInfantsPicker row={row} onChange={updateNumberOfInfantsOnChange} />\n </div>\n </Tooltip>\n ) : null}\n\n <>\n {!isMobile ? DateRangePicker : null}\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={promocode ? row.getPromoCodeColour() : Color.Navy}>\n {promocode ? promocode : t(Translation.Step.Date.PromoCode)}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n </>\n </>\n );\n }, [\n row,\n isMobile,\n promocode,\n promoCodeTooltip,\n showChildren,\n hotel?.childConfiguration,\n updateNumberOfAdultsOnChange,\n updateNumberOfChildrenOnChange,\n updateNumberOfInfantsOnChange,\n ]);\n\n return (\n <div className={classes}>\n {isCurrent || !row.isValid() ? (\n <div className=\"u-flex w-100 001\">\n <div className=\"u-flex flex-wrap flex-xl-nowrap flex-row u-w-100@xl- align-items-center\">\n <div>\n {row.isValid() ? (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.EditingRoom)} {roomLabel}\n </strong>\n </Text>\n ) : (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.SelectRoom)} {roomLabel}\n </strong>\n </Text>\n )}\n </div>\n {showEditSection ? (\n <>\n {!isLargerThanLarge && (\n <div className={'w-100 d-flex' + (showEditSection ? ' u-marg-bottom@xl-' : '')}>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n {t(Translation.Step.Room.ChooseRoomBelow)}\n </Text>\n </div>\n )}\n\n <>{isMobile ? DateRangePicker : null}</>\n {isMobile ? (\n <div className=\"w-100\">\n <AutoAutoHeight open={!collapsed}>\n <div className=\"w-100 u-flex flex-column\">{RoomBuilderProgressSearchForm}</div>\n </AutoAutoHeight>\n </div>\n ) : (\n RoomBuilderProgressSearchForm\n )}\n\n <Overlay open={isPromoModalOpen} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={promocode}\n onChange={changePromoCode}\n valid={\n context.selectedBasketRow?.getPromoCodeStatus() !== EPromoCodeStatus.New && promocode\n ? context.selectedBasketRow?.getPromoCodeStatus() === EPromoCodeStatus.Valid\n : undefined\n }\n row={context.selectedBasketRow}\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n {!isLargerThanLarge && row.isValid() && (\n <BEButton wide primary filled onClick={saveRoomChangesOnClick}>\n {t(Translation.Misc.Save)}\n </BEButton>\n )}\n </>\n ) : (\n <div className=\"w-100\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.NextRoom)}\n </Text>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n {row.isValid() && (\n <div className=\"u-none@xl-\">\n <Tooltip title=\"Cancel changes\">\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={cancelRoomChangesOnClick}>\n {t(Translation.Misc.Cancel).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n )}\n <div className=\"u-flex align-items-center flex-row\">\n {isMobile && toggleButton}\n {removeButton}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"u-flex w-100 002\">\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {promocode && row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {promocode}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={editRoomOnClick}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -62,6 +62,7 @@ const Color_1 = require("../../util/Color");
|
|
|
62
62
|
const GetStepRoom_1 = __importDefault(require("../../util/GetStepRoom"));
|
|
63
63
|
const StringHelper_1 = __importDefault(require("../../util/StringHelper"));
|
|
64
64
|
const TextAlignment_1 = require("../../util/TextAlignment");
|
|
65
|
+
const AddonDiscountCalculator_1 = require("../../utils/AddonDiscountCalculator");
|
|
65
66
|
const GroupedCheckInOutTimes_1 = require("../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes");
|
|
66
67
|
const TaxInclusionNotice_1 = require("../generic/TaxInclusionNotice/TaxInclusionNotice");
|
|
67
68
|
function BEMobileSummaryModal(props) {
|
|
@@ -166,11 +167,11 @@ function BEMobileSummaryModal(props) {
|
|
|
166
167
|
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
167
168
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
|
|
168
169
|
react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Thanks.AddOnItems)))),
|
|
169
|
-
addons.map((
|
|
170
|
+
AddonDiscountCalculator_1.AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(({ addon, remainingDiscount }) => {
|
|
170
171
|
const onRemoveClickHandler = () => {
|
|
171
|
-
return basketContext.removeBasketAddonRow(
|
|
172
|
+
return basketContext.removeBasketAddonRow(addon);
|
|
172
173
|
};
|
|
173
|
-
return react_1.default.createElement(BESummaryAddonRow_1.default, { row:
|
|
174
|
+
return (react_1.default.createElement(BESummaryAddonRow_1.default, { row: addon, key: addon.getID(), onRemoveClick: onRemoveClickHandler, promoCodeDetails: basketContext.promoCodeDetails, remainingDiscount: remainingDiscount }));
|
|
174
175
|
}))))) : (react_1.default.createElement("div", { className: "u-marg-bottom--heavy u-marg-top--heavy" },
|
|
175
176
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
|
|
176
177
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body }, t(Translation_1.Translation.Step.General.YourCartIsEmpty))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BEMobileSummaryModal.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummaryModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport SimpleModal from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport { BESummaryLayoutOrder } from '@/components/summary/BESummary';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryPrivacyPolicy from '@/components/summary/BESummaryPrivacyPolicy';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport { GroupedCheckInOutTimes } from '../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BEMobileSummaryModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n showImages?: boolean;\n}\n\nexport default function BEMobileSummaryModal(props: BEMobileSummaryModalProps) {\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const [mobileLayout, setMobileLayout] = useState<OrderableReactList>({});\n\n useEffect(() => {\n // We do this hacky thing since Mobile summary & Desktop summary are almost identical, just blocks are presented differently\n const newLayout: typeof BESummaryLayoutOrder = { ...BESummaryLayoutOrder };\n newLayout.TransportDistanceBlock.component = (\n <div className=\"u-flex justify-content-center u-marg-top u-marg-bottom\">\n <div className=\"u-flex flex-row u-w-100\">\n <TransportDistanceFromHotelBlock vertical hotel={hotel} />\n </div>\n </div>\n );\n newLayout.PerksBlock.component = <BESummaryPerkBlock size=\"mobile\" />;\n\n setMobileLayout(newLayout);\n }, []);\n\n const { sortedComponents } = useElementSort(mobileLayout);\n\n const totalDays = basketContext.endDate ? basketContext.endDate.diff(basketContext.startDate, 'day') : 0;\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const getAddressString = (val: string[]) => {\n const line = val.filter((it) => !!it && it !== '0').join(', ');\n\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n\n return null;\n };\n\n const onCloseModalHandler = () => {\n return props.onClose ? props.onClose() : null;\n };\n\n const editOnClick = () => {\n props.onClose?.();\n };\n\n const onEditPropertyClickedHandler = () => {\n props.onClose?.();\n };\n\n const totalPrice = basketContext.getTotalPrice();\n const totalPayNow = basketContext.getTotalPayNow();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n const depositFees = basketContext.getDepositQuoteFees();\n\n return (\n <SimpleModal\n open={props.isOpen}\n title={t(Translation.Misc.Summary)}\n onClose={onCloseModalHandler}\n mobileFooter={\n <div className=\"row align-items-center\">\n <div className=\"col-4\">\n <Text type={TextType.Body}>{t(Translation.Misc.Total)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{StringHelper.pluralWithDictAndCount(totalDays, Translation.Misc.Night, t)}</strong>\n </Text>\n </div>\n <div className=\"col-8 u-flex u-flex-direction-column align-items-end\">\n <Headline bold size=\"normal\" align={TextAlign.Right}>\n <Currency>{totalPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <GroupedCheckInOutTimes\n hotel={hotel}\n wrapperClassName=\"row u-border-bottom u-pad-top-bottom\"\n colClassName=\"col-6\"\n CheckInRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n )}\n CheckOutRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n )}\n LineRender={({ line }: { line: string }) => <Text type={TextType.Small}>{line}</Text>}\n />\n\n <div className=\"row u-border-bottom u-pad be-mobile-summary-select-date-header\" style={{ width: 'unset' }}>\n <div style={{ flex: 1 }}>\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.startDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.endDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)}, \n {basketContext.getNumberOfChildren(true)}, \n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <div className=\"u-align-right\">\n <Link to={getStepRoom().getStepUrl()}>\n <BEButton onClick={editOnClick} size=\"tiny\">\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </Link>\n </div>\n </div>\n\n {selectedBasketRows && selectedBasketRows.length ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return (\n <BESummaryRoomRow\n row={row}\n index={index}\n key={row.getID()}\n showImages={!!props.showImages}\n onEditPropertyClicked={onEditPropertyClickedHandler}\n />\n );\n })}\n\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow, index: number) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom--heavy u-marg-top--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Body}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {getAddressString(addressLine1 as string[])}\n {getAddressString(addressLine2 as string[])}\n </div>\n </div>\n )}\n\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel && totalPayNow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n {hotel?.rmsUseDepositQuote && (\n <>\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\n </>\n )}\n <div className=\"col-12 u-marg-top--light u-marg-bottom--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.PayNow)}\n </Text>\n <Text type={TextType.Small} bold>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n </SimpleModal>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BEMobileSummaryModal.js","sourceRoot":"/","sources":["src/components/summary/BEMobileSummaryModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport SimpleModal from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport { BESummaryLayoutOrder } from '@/components/summary/BESummary';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryPrivacyPolicy from '@/components/summary/BESummaryPrivacyPolicy';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport StringHelper from '@/util/StringHelper';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { GroupedCheckInOutTimes } from '../generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BEMobileSummaryModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n showImages?: boolean;\n}\n\nexport default function BEMobileSummaryModal(props: BEMobileSummaryModalProps) {\n const basketContext = useContext(BasketContext);\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const [mobileLayout, setMobileLayout] = useState<OrderableReactList>({});\n\n useEffect(() => {\n // We do this hacky thing since Mobile summary & Desktop summary are almost identical, just blocks are presented differently\n const newLayout: typeof BESummaryLayoutOrder = { ...BESummaryLayoutOrder };\n newLayout.TransportDistanceBlock.component = (\n <div className=\"u-flex justify-content-center u-marg-top u-marg-bottom\">\n <div className=\"u-flex flex-row u-w-100\">\n <TransportDistanceFromHotelBlock vertical hotel={hotel} />\n </div>\n </div>\n );\n newLayout.PerksBlock.component = <BESummaryPerkBlock size=\"mobile\" />;\n\n setMobileLayout(newLayout);\n }, []);\n\n const { sortedComponents } = useElementSort(mobileLayout);\n\n const totalDays = basketContext.endDate ? basketContext.endDate.diff(basketContext.startDate, 'day') : 0;\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const getAddressString = (val: string[]) => {\n const line = val.filter((it) => !!it && it !== '0').join(', ');\n\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n\n return null;\n };\n\n const onCloseModalHandler = () => {\n return props.onClose ? props.onClose() : null;\n };\n\n const editOnClick = () => {\n props.onClose?.();\n };\n\n const onEditPropertyClickedHandler = () => {\n props.onClose?.();\n };\n\n const totalPrice = basketContext.getTotalPrice();\n const totalPayNow = basketContext.getTotalPayNow();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n const depositFees = basketContext.getDepositQuoteFees();\n\n return (\n <SimpleModal\n open={props.isOpen}\n title={t(Translation.Misc.Summary)}\n onClose={onCloseModalHandler}\n mobileFooter={\n <div className=\"row align-items-center\">\n <div className=\"col-4\">\n <Text type={TextType.Body}>{t(Translation.Misc.Total)}</Text>\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{StringHelper.pluralWithDictAndCount(totalDays, Translation.Misc.Night, t)}</strong>\n </Text>\n </div>\n <div className=\"col-8 u-flex u-flex-direction-column align-items-end\">\n <Headline bold size=\"normal\" align={TextAlign.Right}>\n <Currency>{totalPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n </div>\n }\n >\n <>\n <div className=\"container\">\n <GroupedCheckInOutTimes\n hotel={hotel}\n wrapperClassName=\"row u-border-bottom u-pad-top-bottom\"\n colClassName=\"col-6\"\n CheckInRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n )}\n CheckOutRender={() => (\n <Text type={TextType.Small} color={Color.Grey}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n )}\n LineRender={({ line }: { line: string }) => <Text type={TextType.Small}>{line}</Text>}\n />\n\n <div className=\"row u-border-bottom u-pad be-mobile-summary-select-date-header\" style={{ width: 'unset' }}>\n <div style={{ flex: 1 }}>\n <div className=\"u-flex u-flex-flex-start\">\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.startDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.startDate ? basketContext.startDate.format('MMM D') : t(Translation.Step.Date.Arrival)}\n </span>\n </Text>\n <span className=\"u-marg-left-right--light\">\n <Icon icon={IconType.ArrowRight2} size=\"18px\" color={Color.DarkGrey} />\n </span>\n <Text className=\"select-date-header-title\">\n <span\n {...(basketContext.endDate\n ? {\n style: {\n color: Color.Accent,\n fontWeight: 'bold',\n },\n }\n : {})}\n >\n {basketContext.endDate ? basketContext.endDate.format('MMM D') : t(Translation.Step.Date.Departure)}\n </span>\n </Text>\n </div>\n <Text className=\"select-date-header-subtitle\">\n {basketContext.getNumberOfAdults(true)}, \n {basketContext.getNumberOfChildren(true)}, \n {basketContext.getNumberOfRooms(true)}\n </Text>\n </div>\n <div className=\"u-align-right\">\n <Link to={getStepRoom().getStepUrl()}>\n <BEButton onClick={editOnClick} size=\"tiny\">\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </Link>\n </div>\n </div>\n\n {selectedBasketRows && selectedBasketRows.length ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return (\n <BESummaryRoomRow\n row={row}\n index={index}\n key={row.getID()}\n showImages={!!props.showImages}\n onEditPropertyClicked={onEditPropertyClickedHandler}\n />\n );\n })}\n\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom--heavy u-marg-top--heavy\">\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Body}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {getAddressString(addressLine1 as string[])}\n {getAddressString(addressLine2 as string[])}\n </div>\n </div>\n )}\n\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n\n {sortedComponents}\n\n <div className=\"u-marg-top--heavy u-marg-bottom--heavy\">\n <BESummaryPrivacyPolicy />\n </div>\n {hotel && totalPayNow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row align-items-center\">\n {hotel?.rmsUseDepositQuote && (\n <>\n <div className=\"col-12 u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '8px' }} />\n </>\n )}\n <div className=\"col-12 u-marg-top--light u-marg-bottom--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.PayNow)}\n </Text>\n <Text type={TextType.Small} bold>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n </SimpleModal>\n );\n}\n"]}
|
|
@@ -59,6 +59,7 @@ const TransportDistanceFromHotelBlock_1 = __importDefault(require("./TransportDi
|
|
|
59
59
|
const StepConfirmation_1 = __importDefault(require("../../pages/steps/StepConfirmation/StepConfirmation"));
|
|
60
60
|
const Color_1 = require("../../util/Color");
|
|
61
61
|
const TextAlignment_1 = require("../../util/TextAlignment");
|
|
62
|
+
const AddonDiscountCalculator_1 = require("../../utils/AddonDiscountCalculator");
|
|
62
63
|
const OverlayLoader_1 = require("../generic/loader/OverlayLoader");
|
|
63
64
|
const TaxInclusionNotice_1 = require("../generic/TaxInclusionNotice/TaxInclusionNotice");
|
|
64
65
|
const TransportDistanceFromHotelBlockContainer = () => {
|
|
@@ -172,11 +173,11 @@ function BESummary(props) {
|
|
|
172
173
|
react_1.default.createElement("div", { className: "u-marg-top" },
|
|
173
174
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.DarkGrey },
|
|
174
175
|
react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Thanks.AddOnItems)))),
|
|
175
|
-
addons.map((
|
|
176
|
+
AddonDiscountCalculator_1.AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(({ addon, remainingDiscount }) => {
|
|
176
177
|
const onRemoveClickHandler = () => {
|
|
177
|
-
return basketContext.removeBasketAddonRow(
|
|
178
|
+
return basketContext.removeBasketAddonRow(addon);
|
|
178
179
|
};
|
|
179
|
-
return react_1.default.createElement(BESummaryAddonRow_1.default, { row:
|
|
180
|
+
return (react_1.default.createElement(BESummaryAddonRow_1.default, { row: addon, key: addon.getID(), onRemoveClick: onRemoveClickHandler, promoCodeDetails: basketContext.promoCodeDetails, remainingDiscount: remainingDiscount }));
|
|
180
181
|
}))),
|
|
181
182
|
totalFees > 0 && !(itemisedFees === null || itemisedFees === void 0 ? void 0 : itemisedFees.length) && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
182
183
|
react_1.default.createElement("div", { className: "line-break", style: { marginTop: 0, marginBottom: '24px' } }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.rmsUseDepositQuote, engineContext.currentStep?.getStepUrl()]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, FullPageEngineContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ItemisedFeesListing } from '@/components/steps/common/ItemisedFeesListing/ItemisedFeesListing';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketRow from '@/models/BasketRow';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\nimport { OverlayLoader } from '../generic/loader/OverlayLoader';\nimport { TaxInclusionNotice } from '../generic/TaxInclusionNotice/TaxInclusionNotice';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top u-w-100', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\" style={{ marginTop: '16px' }}>\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n const engineContext = useContext(FullPageEngineContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string, key?: string) => {\n if (line) {\n return (\n <Text key={key} type={TextType.Small}>\n {line}\n </Text>\n );\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1, 'addressLine1'), renderLine(line2, 'addressLine2')];\n };\n\n const showBasketItems = !!selectedBasketRows.length;\n\n const depositFees = basketContext.getDepositQuoteFees();\n const totalFees = basketContext.getTotalFees();\n const itemisedFees = basketContext.getItemisedFees();\n\n const totalSection = useMemo(() => {\n const totalPayNow = basketContext.getTotalPayNow();\n\n if (hotel && totalPayNow && engineContext.currentStep?.getStepUrl() === StepConfirmation.getStepUrl()) {\n const isLoading = basketContext.isLoadingPriceQuote;\n\n return (\n <div className=\"u-marg-top--light\" style={{ position: 'relative' }}>\n {isLoading && <OverlayLoader />}\n {totalFees > 0 && !itemisedFees?.length && (\n // We only show the total fees here if we don't have itemised fees available.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n {!!itemisedFees?.length && depositFees > 0 && hotel.addDepositFeeToBookingTotal && (\n // Because we're already showing itemised fees above the totals section, we only need to show the deposit fee here.\n // And only if the hotel is configured to add the deposit fee to the booking total.\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{depositFees}</Currency>\n </Text>\n </div>\n </div>\n )}\n <div className=\"u-marg-top--light\">\n <div className=\"u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.Total)}</Text>\n <Headline bold size=\"large\">\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n </div>\n\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex\">\n <Text type={TextType.Small}>{t(Translation.Misc.PayNow)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalPayNow}</Currency>\n </Text>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n <TaxInclusionNotice />\n </Text>\n </div>\n );\n }\n }, [basketContext.currentBasketRows, basketContext.isLoadingPriceQuote, basketContext.getTotalPrice, hotel?.rmsUseDepositQuote, engineContext.currentStep?.getStepUrl()]);\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>{t(Translation.Step.Thanks.AddOnItems)}</strong>\n </Text>\n </div>\n\n {/* Calculate individual addon discounts using AddonDiscountCalculator. */}\n {AddonDiscountCalculator.calculateIndividualDiscounts(addons, selectedBasketRows, basketContext.promoCodeDetails).map(\n ({ addon, remainingDiscount }) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(addon);\n };\n\n return (\n <BESummaryAddonRow\n row={addon}\n key={addon.getID()}\n onRemoveClick={onRemoveClickHandler}\n promoCodeDetails={basketContext.promoCodeDetails}\n remainingDiscount={remainingDiscount}\n />\n );\n }\n )}\n </>\n )}\n {/* Fees */}\n {totalFees > 0 && !itemisedFees?.length && (\n <>\n <div className=\"line-break\" style={{ marginTop: 0, marginBottom: '24px' }} />\n <div className=\"u-flex\">\n <Text type={TextType.Small}> {t(Translation.Step.Room.Summary.CreditCardSurcharge)}</Text>\n <Text type={TextType.Small}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n </>\n )}\n {!!itemisedFees?.length && <ItemisedFeesListing fees={itemisedFees} />}\n </>\n ) : (\n <div className=\"u-marg-bottom rs-summary-hotel-info\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom rs-summary-hotel-name\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n {totalSection}\n </div>\n );\n}\n"]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { IPromoCodeDetails } from '@roomstay/core';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import BasketAddonRow from '../../models/BasketAddonRow';
|
|
3
4
|
interface BESummaryAddonRowProps {
|
|
4
5
|
row: BasketAddonRow;
|
|
5
6
|
onRemoveClick: () => void;
|
|
7
|
+
promoCodeDetails?: IPromoCodeDetails | null;
|
|
8
|
+
remainingDiscount?: number;
|
|
6
9
|
}
|
|
7
10
|
export default function BESummaryAddonRow(props: BESummaryAddonRowProps): React.JSX.Element;
|
|
8
11
|
export {};
|
|
@@ -50,7 +50,7 @@ const Tooltip_1 = __importDefault(require("../generic/Tooltip/Tooltip"));
|
|
|
50
50
|
const Addon_1 = require("../../models/Addon/Addon");
|
|
51
51
|
const Color_1 = require("../../util/Color");
|
|
52
52
|
function BESummaryAddonRow(props) {
|
|
53
|
-
var _a, _b, _c, _d;
|
|
53
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
54
54
|
const { row } = props;
|
|
55
55
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
56
56
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
@@ -77,7 +77,13 @@ function BESummaryAddonRow(props) {
|
|
|
77
77
|
const pricingType = addon.pricingType;
|
|
78
78
|
const totalFees = row.getTotalFees();
|
|
79
79
|
const itemisedFees = hotel && row.getItemisedFees((0, core_1.getFilteredBookingAddonFees)((_a = hotel.fees) !== null && _a !== void 0 ? _a : []));
|
|
80
|
+
// Calculate discount if promo code is applied
|
|
81
|
+
const discount = row.getDiscountAmount((_b = props.promoCodeDetails) !== null && _b !== void 0 ? _b : undefined, props.remainingDiscount || 0);
|
|
82
|
+
const priceBeforeDiscount = row.getPriceBeforeDiscount();
|
|
80
83
|
let displayPrice = row.getTotalPrice();
|
|
84
|
+
if (discount > 0) {
|
|
85
|
+
displayPrice = row.getDiscountedTotalPrice((_c = props.promoCodeDetails) !== null && _c !== void 0 ? _c : undefined, props.remainingDiscount || 0);
|
|
86
|
+
}
|
|
81
87
|
if (itemisedFees === null || itemisedFees === void 0 ? void 0 : itemisedFees.length) {
|
|
82
88
|
// If we have itemised fees, we'll show the total price without fee.
|
|
83
89
|
displayPrice -= totalFees;
|
|
@@ -91,18 +97,18 @@ function BESummaryAddonRow(props) {
|
|
|
91
97
|
price: priceInfo.price,
|
|
92
98
|
quantity: row.getQuantity(),
|
|
93
99
|
},
|
|
94
|
-
...(((
|
|
100
|
+
...(((_d = priceInfo.childPrice) !== null && _d !== void 0 ? _d : 0) > 0
|
|
95
101
|
? [
|
|
96
102
|
{
|
|
97
103
|
name: 'Adult',
|
|
98
|
-
price: (
|
|
104
|
+
price: (_e = priceInfo.adultPrice) !== null && _e !== void 0 ? _e : priceInfo.price,
|
|
99
105
|
quantity: row.getAdultQuantity(),
|
|
100
106
|
},
|
|
101
107
|
]
|
|
102
108
|
: []),
|
|
103
109
|
{
|
|
104
110
|
name: 'Child',
|
|
105
|
-
price: (
|
|
111
|
+
price: (_f = priceInfo.childPrice) !== null && _f !== void 0 ? _f : priceInfo.price,
|
|
106
112
|
quantity: row.getChildQuantity(),
|
|
107
113
|
},
|
|
108
114
|
].map(({ price, quantity, name }, index) => {
|
|
@@ -142,6 +148,12 @@ function BESummaryAddonRow(props) {
|
|
|
142
148
|
printLine('Sub-total', react_1.default.createElement(Currency_1.default, null, row.getAddonSubtotal())),
|
|
143
149
|
core_1.ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights),
|
|
144
150
|
totalFees > 0 && !(itemisedFees === null || itemisedFees === void 0 ? void 0 : itemisedFees.length) && printLine('Fees', react_1.default.createElement(Currency_1.default, null, totalFees)),
|
|
151
|
+
discount > 0 && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
152
|
+
printLine(t(Translation_1.Translation.Misc.Rates), react_1.default.createElement(Currency_1.default, null, priceBeforeDiscount)),
|
|
153
|
+
((_g = props.promoCodeDetails) === null || _g === void 0 ? void 0 : _g.code) && printLine(t(Translation_1.Translation.Step.Date.PromoCode), props.promoCodeDetails.code),
|
|
154
|
+
printLine(t(Translation_1.Translation.Misc.Discount), react_1.default.createElement(react_1.default.Fragment, null,
|
|
155
|
+
react_1.default.createElement("span", { className: "u-ellip-overflow" }, "-"),
|
|
156
|
+
react_1.default.createElement(Currency_1.default, null, discount))))),
|
|
145
157
|
printLine('Total', react_1.default.createElement(Currency_1.default, null, displayPrice)),
|
|
146
158
|
react_1.default.createElement("div", { className: "u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start" },
|
|
147
159
|
react_1.default.createElement(Tooltip_1.default, { title: "Remove this addon" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, EAddonPricingType, getFilteredBookingAddonFees } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_PERSON_PER_NIGHT_TYPES } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n const itemisedFees = hotel && row.getItemisedFees(getFilteredBookingAddonFees(hotel.fees ?? []));\n\n let displayPrice = row.getTotalPrice();\n if (itemisedFees?.length) {\n // If we have itemised fees, we'll show the total price without fee.\n displayPrice -= totalFees;\n }\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n ...((priceInfo.childPrice ?? 0) > 0\n ? [\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n ]\n : []),\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === EAddonPricingType.PER_STAY || pricingType === EAddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}× <Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', dayjs(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM'))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/*/ Only show fees if we don't have itemised fees. If we have itemised fees they will be shown later. */}\n {totalFees > 0 && !itemisedFees?.length && printLine('Fees', <Currency>{totalFees}</Currency>)}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BESummaryAddonRow.js","sourceRoot":"/","sources":["src/components/summary/BESummaryAddonRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, EAddonPricingType, getFilteredBookingAddonFees, IPromoCodeDetails } from '@roomstay/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { ADDON_PER_PERSON_PER_NIGHT_TYPES } from '@/models/Addon/Addon';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { Color } from '@/util/Color';\n\ninterface BESummaryAddonRowProps {\n row: BasketAddonRow;\n onRemoveClick: () => void;\n promoCodeDetails?: IPromoCodeDetails | null;\n remainingDiscount?: number;\n}\n\nexport default function BESummaryAddonRow(props: BESummaryAddonRowProps) {\n const { row } = props;\n\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const addon = row.getAddon();\n const date = row.getSelectedDate();\n const priceInfo = addon.availability[date];\n\n let selectedTime: Dayjs | undefined;\n if (row.getSelectedTime()) {\n const [hours, minutes, seconds] = row\n .getSelectedTime()\n .substr(1)\n .split(':')\n .map((it) => parseInt(it, 10));\n selectedTime = dayjs().hour(hours).minute(minutes).second(seconds);\n }\n\n const removeOnClickHandler = () => {\n props.onRemoveClick();\n };\n\n const printLine = (left: any, right: any) => {\n return (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{left}</Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {right}\n </Text>\n </div>\n );\n };\n\n const pricingType = addon.pricingType;\n const totalFees = row.getTotalFees();\n const itemisedFees = hotel && row.getItemisedFees(getFilteredBookingAddonFees(hotel.fees ?? []));\n\n // Calculate discount if promo code is applied\n const discount = row.getDiscountAmount(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n const priceBeforeDiscount = row.getPriceBeforeDiscount();\n\n let displayPrice = row.getTotalPrice();\n if (discount > 0) {\n displayPrice = row.getDiscountedTotalPrice(props.promoCodeDetails ?? undefined, props.remainingDiscount || 0);\n }\n if (itemisedFees?.length) {\n // If we have itemised fees, we'll show the total price without fee.\n displayPrice -= totalFees;\n }\n\n return (\n <>\n {priceInfo && (\n <>\n <div className=\"u-marg-bottom--light u-marg-top\">\n <Text color={Color.Navy}>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n\n {[\n {\n price: priceInfo.price,\n quantity: row.getQuantity(),\n },\n ...((priceInfo.childPrice ?? 0) > 0\n ? [\n {\n name: 'Adult',\n price: priceInfo.adultPrice ?? priceInfo.price,\n quantity: row.getAdultQuantity(),\n },\n ]\n : []),\n {\n name: 'Child',\n price: priceInfo.childPrice ?? priceInfo.price,\n quantity: row.getChildQuantity(),\n },\n ].map(({ price, quantity, name }, index) => {\n let pluralName = name;\n\n if (quantity > 1) {\n switch (name) {\n case 'Adult':\n pluralName += 's';\n break;\n case 'Child':\n pluralName += 'ren';\n break;\n }\n }\n\n // If this is a per stay or per night addon, we only want to show the price once, if we show the name it will result in something like:\n // 2 x $100 = $200\n // 1 x Adult = $100\n // Total = $200\n if ((pricingType === EAddonPricingType.PER_STAY || pricingType === EAddonPricingType.PER_NIGHT) && name !== undefined) {\n return;\n }\n\n return (\n <React.Fragment key={index}>\n {price && quantity > 0 && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center\">\n <Text type={TextType.Small} inline>\n {quantity} {pluralName ? `${pluralName} ` : ''}× <Currency>{price}</Currency>\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n <Currency>{quantity * price}</Currency>\n </Text>\n </div>\n )}\n </React.Fragment>\n );\n })}\n\n {!row.getAddon().hideDatePicker && row.getSelectedDate() && printLine('Date', dayjs(row.getSelectedDate(), 'YYYY-MM-DD').format('D MMM'))}\n {selectedTime && printLine('Time', selectedTime.format('h:mma'))}\n\n {/* If this is a per person per night addon, and there are both children and adults added, show a sub-total. */}\n {ADDON_PER_PERSON_PER_NIGHT_TYPES.includes(pricingType) &&\n row.getAdultQuantity() > 0 &&\n row.getChildQuantity() > 0 &&\n printLine('Sub-total', <Currency>{row.getAddonSubtotal()}</Currency>)}\n\n {ADDON_PER_NIGHT_TYPES.includes(pricingType) && printLine('Nights', row.getAddon().nights)}\n\n {/*/ Only show fees if we don't have itemised fees. If we have itemised fees they will be shown later. */}\n {totalFees > 0 && !itemisedFees?.length && printLine('Fees', <Currency>{totalFees}</Currency>)}\n\n {/* Show discount information if promo code is applied */}\n {discount > 0 && (\n <>\n {printLine(t(Translation.Misc.Rates), <Currency>{priceBeforeDiscount}</Currency>)}\n {props.promoCodeDetails?.code && printLine(t(Translation.Step.Date.PromoCode), props.promoCodeDetails.code)}\n {printLine(\n t(Translation.Misc.Discount),\n <>\n <span className=\"u-ellip-overflow\">-</span>\n <Currency>{discount}</Currency>\n </>\n )}\n </>\n )}\n\n {printLine('Total', <Currency>{displayPrice}</Currency>)}\n\n <div className=\"u-marg-top--light u-marg-bottom--heavy u-flex justify-content-start\">\n <Tooltip title=\"Remove this addon\">\n <div>\n <BEButton isText size=\"tiny\" primary onClick={removeOnClickHandler}>\n {t(Translation.Misc.Remove)}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </>\n );\n}\n"]}
|