@roomstay/frontend 2.6.5 → 2.6.6
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/166.bundle.js +1 -0
- package/dist/370.bundle.js +1 -1
- package/dist/457.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/736.bundle.js +1 -1
- package/dist/850.bundle.js +1 -0
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/Event/EventCarouselContainer.d.ts +2 -2
- package/dist/src/components/Event/EventCarouselContainer.js +9 -3
- package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.js +15 -1
- package/dist/src/components/generic/Event/EventCard.js.map +1 -1
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +3 -3
- package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
- package/dist/src/components/generic/buttons/NextStepButton.js +3 -1
- package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
- package/dist/src/components/navigation/StepSelector.js +7 -1
- package/dist/src/components/navigation/StepSelector.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +1 -1
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +3 -2
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +3 -2
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +3 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +3 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +34 -2
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummary.js +31 -20
- package/dist/src/components/summary/BESummary.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +0 -4
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +23 -2
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.d.ts +2 -0
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +14 -1
- package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
- package/dist/src/hooks/useNextStepAction.d.ts +15 -0
- package/dist/src/hooks/useNextStepAction.js +146 -0
- package/dist/src/hooks/useNextStepAction.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +11 -1
- package/dist/src/models/BasketRow.js +31 -7
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +1 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +10 -0
- package/dist/src/translations/Translation.js +10 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +10 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/EventsHelper.d.ts +6 -1
- package/dist/src/util/EventsHelper.js +13 -5
- package/dist/src/util/EventsHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/387.bundle.js +0 -1
- package/dist/537.bundle.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
+
import { IRoomstayMemberBookingItemWithRefAndHotelDetails } from '../../contexts';
|
|
2
3
|
interface EventCarouselContainerProps {
|
|
3
4
|
defaultExpanded?: boolean;
|
|
4
|
-
|
|
5
|
-
checkInDate: string;
|
|
5
|
+
itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;
|
|
6
6
|
}
|
|
7
7
|
declare const EventCarouselContainer: FC<EventCarouselContainerProps>;
|
|
8
8
|
export default EventCarouselContainer;
|
|
@@ -42,11 +42,12 @@ const EventCarousel_1 = __importDefault(require("../generic/Event/EventCarousel"
|
|
|
42
42
|
const contexts_1 = require("../../contexts");
|
|
43
43
|
const EventsHelper = __importStar(require("../../util/EventsHelper"));
|
|
44
44
|
const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
|
|
45
|
-
const EventCarouselContainer = ({
|
|
45
|
+
const EventCarouselContainer = ({ defaultExpanded, itineraryItem }) => {
|
|
46
|
+
const { checkInDate, checkOutDate, hotel: { checkInTime, checkOutTime }, hotelId, } = itineraryItem;
|
|
46
47
|
const [loadedEvents, setLoadedEvents] = (0, react_1.useState)([]);
|
|
47
48
|
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
48
49
|
const isMobile = beContext.screenSize <= ScreenSize_1.default.Medium;
|
|
49
|
-
const unixStartTime = (0, dayjs_1.default)(checkInDate).valueOf();
|
|
50
|
+
const unixStartTime = (0, dayjs_1.default)(`${checkInDate}${checkInTime}`, 'YYYY-MM-DDHH:mm').valueOf();
|
|
50
51
|
const getEventsFromStorage = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
52
|
let cachedEvent = undefined;
|
|
52
53
|
try {
|
|
@@ -80,7 +81,12 @@ const EventCarouselContainer = ({ hotelId, defaultExpanded, checkInDate }) => {
|
|
|
80
81
|
expired: (0, dayjs_1.default)().add(1, 'd').valueOf(),
|
|
81
82
|
events: newEvents,
|
|
82
83
|
});
|
|
83
|
-
setLoadedEvents(EventsHelper.getApplicableEvents(newEvents
|
|
84
|
+
setLoadedEvents(EventsHelper.getApplicableEvents(newEvents, {
|
|
85
|
+
checkInDate,
|
|
86
|
+
checkInTime,
|
|
87
|
+
checkOutDate,
|
|
88
|
+
checkOutTime,
|
|
89
|
+
}));
|
|
84
90
|
}
|
|
85
91
|
// }
|
|
86
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCarouselContainer.js","sourceRoot":"/","sources":["src/components/Event/EventCarouselContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,+CAAmE;AAEnE,4EAA6E;AAC7E,6FAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"EventCarouselContainer.js","sourceRoot":"/","sources":["src/components/Event/EventCarouselContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,+CAAmE;AAEnE,4EAA6E;AAC7E,6FAAqE;AACrE,yCAAoG;AAEpG,kEAAoD;AACpD,mEAA2C;AAO3C,MAAM,sBAAsB,GAAoC,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,EAAE;IACnG,MAAM,EACF,WAAW,EACX,YAAY,EACZ,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EACpC,OAAO,GACV,GAAG,aAAa,CAAC;IAElB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC;IAE3D,MAAM,aAAa,GAAG,IAAA,eAAK,EAAC,GAAG,WAAW,GAAG,WAAW,EAAE,EAAE,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEzF,MAAM,oBAAoB,GAAG,GAA6C,EAAE;QACxE,IAAI,WAAW,GAAqC,SAAS,CAAC;QAC9D,IAAI;YACA,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SACjE;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,OAAO,WAAW,IAAI,SAAS,CAAC;IACpC,CAAC,CAAA,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAChC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,OAAO,IAAA,uCAAoB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC1F,CAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QACzB,qDAAqD;QACrD,uEAAuE;QACvE,4EAA4E;QAC5E,2BAA2B;QAC3B,yCAAyC;QACzC,+BAA+B;QAC/B,UAAU;QACV,oCAAoC;QACpC,WAAW;QACX,gDAAgD;QAEhD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE3C,IAAI,SAAS,EAAE;YACX,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;gBACvC,OAAO,EAAE,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;gBACtC,MAAM,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,eAAe,CACX,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE;gBACxC,WAAW;gBACX,WAAW;gBACX,YAAY;gBACZ,YAAY;aACf,CAAC,CACL,CAAC;SACL;QACD,IAAI;IACR,CAAC,CAAA,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE;YACT,SAAS,EAAE,CAAC;SACf;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,8BAAC,uBAAa,IAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAAC;AACpG,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { FC, useContext, useEffect, useState } from 'react';\n\nimport { getEventsFromHotelId } from '@/api/events-service/EventsServiceAPI';\nimport EventCarousel from '@/components/generic/Event/EventCarousel';\nimport { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@/contexts';\nimport type { ICachedEvents } from '@/util/EventsHelper';\nimport * as EventsHelper from '@/util/EventsHelper';\nimport ScreenSize from '@/util/ScreenSize';\n\ninterface EventCarouselContainerProps {\n defaultExpanded?: boolean;\n itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;\n}\n\nconst EventCarouselContainer: FC<EventCarouselContainerProps> = ({ defaultExpanded, itineraryItem }) => {\n const {\n checkInDate,\n checkOutDate,\n hotel: { checkInTime, checkOutTime },\n hotelId,\n } = itineraryItem;\n\n const [loadedEvents, setLoadedEvents] = useState<IRoomstayEvent[]>([]);\n\n const beContext = useContext(BookingEngineContext);\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const unixStartTime = dayjs(`${checkInDate}${checkInTime}`, 'YYYY-MM-DDHH:mm').valueOf();\n\n const getEventsFromStorage = async (): Promise<ICachedEvents | undefined> => {\n let cachedEvent: ICachedEvents | undefined | null = undefined;\n try {\n cachedEvent = await EventsHelper.read(hotelId, unixStartTime);\n } catch (e) {\n console.log(e);\n }\n return cachedEvent || undefined;\n };\n\n const getEventsFromApi = async () => {\n if (!hotelId) {\n return;\n }\n\n return getEventsFromHotelId(hotelId, unixStartTime).then(EventsHelper.getValidEvents);\n };\n\n const getEvents = async () => {\n // const cachedEvents = await getEventsFromStorage();\n // if (cachedEvents && EventsHelper.isCachedEventValid(cachedEvents)) {\n // const validEvents = EventsHelper.getValidEvents(cachedEvents.events);\n // EventsHelper.write({\n // expired: cachedEvents.expired,\n // events: validEvents,\n // });\n // setLoadedEvents(validEvents);\n // } else {\n // TODO: Commented out event caching temporarily\n\n const newEvents = await getEventsFromApi();\n\n if (newEvents) {\n EventsHelper.write(hotelId, unixStartTime, {\n expired: dayjs().add(1, 'd').valueOf(),\n events: newEvents,\n });\n setLoadedEvents(\n EventsHelper.getApplicableEvents(newEvents, {\n checkInDate,\n checkInTime,\n checkOutDate,\n checkOutTime,\n })\n );\n }\n // }\n };\n\n useEffect(() => {\n if (hotelId) {\n getEvents();\n }\n }, [hotelId]);\n\n if (!loadedEvents.length) return null;\n\n return <EventCarousel small={isMobile} data={loadedEvents} defaultExpanded={defaultExpanded} />;\n};\n\nexport default EventCarouselContainer;\n"]}
|
|
@@ -56,6 +56,12 @@ const BookingWizardGuestSelector = ({ disableChild, showInfants, maxAdults = 10,
|
|
|
56
56
|
const [editingInfants, setEditingInfants] = (0, react_1.useState)(infants);
|
|
57
57
|
const [editingRoom, setEditingRoom] = (0, react_1.useState)(room);
|
|
58
58
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
59
|
+
(0, react_1.useEffect)(() => {
|
|
60
|
+
var _a, _b, _c;
|
|
61
|
+
setAdults((_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.adults) !== null && _a !== void 0 ? _a : 1);
|
|
62
|
+
setChildren((_b = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.children) !== null && _b !== void 0 ? _b : 0);
|
|
63
|
+
setInfants((_c = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.infants) !== null && _c !== void 0 ? _c : 0);
|
|
64
|
+
}, [defaultValue]);
|
|
59
65
|
(0, react_1.useEffect)(() => {
|
|
60
66
|
setEditingAdults(adults);
|
|
61
67
|
}, [adults]);
|
|
@@ -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 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 maxAdults?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n onChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n maxAdults = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\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 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 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 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 {disableChild ? null : (\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={10}\n onChange={applyButton ? setEditingChildren : setChildren}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n )}\n {showInfants ? (\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={10}\n onChange={applyButton ? setEditingInfants : setInfants}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\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, 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 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 maxAdults?: number;\n\n disableRoom?: boolean;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n onChange?: ({ adults, children, room }: { adults: number; children: number; infants: number; room: number }) => void;\n followElement?: HTMLElement | null;\n hideTooltip?: boolean;\n}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({\n disableChild,\n showInfants,\n maxAdults = 10,\n disableRoom,\n defaultValue,\n followElement,\n hideTooltip,\n onChange,\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 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 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 {disableChild ? null : (\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={10}\n onChange={applyButton ? setEditingChildren : setChildren}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\n </div>\n )}\n {showInfants ? (\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={10}\n onChange={applyButton ? setEditingInfants : setInfants}\n textSize={TextType.Small}\n hideTooltips={hideTooltip}\n />\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"]}
|
|
@@ -40,6 +40,20 @@ const EventCard = ({ event, ratio }) => {
|
|
|
40
40
|
var _a, _b, _c, _d, _e, _f;
|
|
41
41
|
const [collapsed, setCollapsed] = (0, react_1.useState)(true);
|
|
42
42
|
const toggleCollapse = () => setCollapsed(!collapsed);
|
|
43
|
+
const displayEventTime = () => {
|
|
44
|
+
const startDate = event.startDate ? (0, dayjs_1.default)(event.startDate) : undefined;
|
|
45
|
+
const endDate = event.endDate ? (0, dayjs_1.default)(event.endDate) : undefined;
|
|
46
|
+
if ([startDate, endDate].some((date) => !date)) {
|
|
47
|
+
return `${startDate ? startDate.format(`ddd, MMM D, h:mmA`) : 'Now'}${endDate ? ` - ${endDate.format(`ddd, MMM D, h:mmA`)}` : ''}`;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (startDate.isSame(endDate, 'date')) {
|
|
51
|
+
return `${startDate.format(`ddd, MMM D, h:mmA`)} - ${endDate.format(`h:mmA`)}`;
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
return `${startDate.format(`ddd, MMM D, h:mmA`)} - ${endDate.format(`ddd, MMM D, h:mmA`)}`;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
43
57
|
return (react_1.default.createElement("div", { className: EventCard_module_scss_1.default.root },
|
|
44
58
|
react_1.default.createElement(RatioImage_1.default, { src: `${(_a = event === null || event === void 0 ? void 0 : event.image) === null || _a === void 0 ? void 0 : _a.url}`, ratio: ratio, style: {
|
|
45
59
|
backgroundRepeat: 'no-repeat',
|
|
@@ -54,7 +68,7 @@ const EventCard = ({ event, ratio }) => {
|
|
|
54
68
|
'u-text-overflow-ellipsis-1': collapsed,
|
|
55
69
|
'u-text-overflow-ellipsis-2': !collapsed,
|
|
56
70
|
}), bold: true, color: Color_1.Color.Navy }, event.name),
|
|
57
|
-
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true }, event.eventTimeDescription ? event.eventTimeDescription : (
|
|
71
|
+
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true }, event.eventTimeDescription ? event.eventTimeDescription : displayEventTime())),
|
|
58
72
|
react_1.default.createElement("div", { className: EventCard_module_scss_1.default.collapButton },
|
|
59
73
|
react_1.default.createElement(Icon_1.default, { color: Color_1.Color.Accent, icon: collapsed ? Icon_1.IconType.ArrowUp3 : Icon_1.IconType.ArrowDown3, size: "18px" }))),
|
|
60
74
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: !collapsed },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCard.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAAoC;AACpC,kDAA0B;AAC1B,+CAA4C;AAE5C,iFAAyD;AACzD,uEAAgE;AAChE,4FAAoE;AACpE,kEAA2D;AAC3D,wCAAqC;AACrC,wDAAiD;AAEjD,oFAA6C;AAO7C,MAAM,SAAS,GAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;;IAC3D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,CAAC;IAE1D,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;IAEtD,OAAO,CACH,uCAAK,SAAS,EAAE,+BAAM,CAAC,IAAI;QACvB,8BAAC,oBAAU,IACP,GAAG,EAAE,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,GAAG,EAAE,EAC3B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE;gBACH,gBAAgB,EAAE,WAAW;gBAC7B,kBAAkB,EAAE,YAAY;aACnC,GACH;QACF,uCAAK,SAAS,EAAE,+BAAM,CAAC,YAAY;YAC/B,8BAAC,cAAI,IAAC,KAAK,EAAE,yBAAS,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UACjD,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAG,CAAC,CAAC,0CAAE,YAAY,CAC3B,CACL;QACN,uCAAK,SAAS,EAAE,+BAAM,CAAC,OAAO;YAC1B,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,+BAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,cAAc;gBAClF;oBACI,8BAAC,cAAI,IACD,SAAS,EAAE,IAAA,oBAAU,EAAC;4BAClB,4BAA4B,EAAE,SAAS;4BACvC,4BAA4B,EAAE,CAAC,SAAS;yBAC3C,CAAC,EACF,IAAI,QACJ,KAAK,EAAE,aAAK,CAAC,IAAI,IAEhB,KAAK,CAAC,IAAI,CACR;oBACP,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,IAAI,UAC1B,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"EventCard.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { FC, useState } from 'react';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport RatioImage from '@/components/generic/RatioImage/RatioImage';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './EventCard.module.scss';\n\nexport interface EventCardInterface {\n ratio: number;\n event: IRoomstayEvent;\n}\n\nconst EventCard: FC<EventCardInterface> = ({ event, ratio }) => {\n const [collapsed, setCollapsed] = useState<boolean>(true);\n\n const toggleCollapse = () => setCollapsed(!collapsed);\n\n const displayEventTime = () => {\n const startDate = event.startDate ? dayjs(event.startDate) : undefined;\n const endDate = event.endDate ? dayjs(event.endDate) : undefined;\n if ([startDate, endDate].some((date) => !date)) {\n return `${startDate ? startDate.format(`ddd, MMM D, h:mmA`) : 'Now'}${endDate ? ` - ${endDate.format(`ddd, MMM D, h:mmA`)}` : ''}`;\n } else {\n if (startDate!.isSame(endDate, 'date')) {\n return `${startDate!.format(`ddd, MMM D, h:mmA`)} - ${endDate!.format(`h:mmA`)}`;\n } else return `${startDate!.format(`ddd, MMM D, h:mmA`)} - ${endDate!.format(`ddd, MMM D, h:mmA`)}`;\n }\n };\n\n return (\n <div className={styles.root}>\n <RatioImage\n src={`${event?.image?.url}`}\n ratio={ratio}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'top center',\n }}\n />\n <div className={styles.categoryMask}>\n <Text align={TextAlign.Right} color={Color.White} bold>\n {event.tags?.[0]?.display_name}\n </Text>\n </div>\n <div className={styles.content}>\n <div className={classNames(styles.header, 'u-cursor-pointer')} onClick={toggleCollapse}>\n <div>\n <Text\n className={classNames({\n 'u-text-overflow-ellipsis-1': collapsed,\n 'u-text-overflow-ellipsis-2': !collapsed,\n })}\n bold\n color={Color.Navy}\n >\n {event.name}\n </Text>\n <Text color={Color.Accent} bold>\n {event.eventTimeDescription ? event.eventTimeDescription : displayEventTime()}\n </Text>\n </div>\n <div className={styles.collapButton}>\n <Icon color={Color.Accent} icon={collapsed ? IconType.ArrowUp3 : IconType.ArrowDown3} size=\"18px\" />\n </div>\n </div>\n <AutoAutoHeight open={!collapsed}>\n <div className=\"u-pad-top--light\">\n <Text type={TextType.Small} color={Color.Accent}>\n {[event?.address?.line1, event?.address?.line2, event?.address?.city].filter((item) => !!item).join(', ')}\n </Text>\n <Text className=\"u-text-overflow-ellipsis-3\" color={Color.DarkGrey} type={TextType.Small}>\n {event.summary}\n </Text>\n </div>\n <a href={event.url} target=\"_blank\" rel=\"noreferrer\">\n <Text className={classNames(styles.footer, 'u-flex', 'u-flex-gap--light', 'u-flex-align-center')} type={TextType.Label} color={Color.Accent}>\n {/*TODO translation*/}\n <div>More Info</div>\n <Icon icon={IconType.ArrowRight} />\n </Text>\n </a>\n </AutoAutoHeight>\n </div>\n </div>\n );\n};\n\nexport default EventCard;\n"]}
|
|
@@ -44,10 +44,10 @@ const InlinePaymentOption = ({ card, active, overrideSubLabel }) => {
|
|
|
44
44
|
const displayExpiry = (expiry) => {
|
|
45
45
|
return expiry.slice(0, 2) + ' / ' + expiry.slice(2);
|
|
46
46
|
};
|
|
47
|
-
const {
|
|
48
|
-
const
|
|
47
|
+
const { getTotalPayNow } = (0, contexts_1.useBasket)();
|
|
48
|
+
const totalPayNow = getTotalPayNow();
|
|
49
49
|
const { symbol, prettyValue } = (0, Currency_1.default)({
|
|
50
|
-
children:
|
|
50
|
+
children: totalPayNow,
|
|
51
51
|
});
|
|
52
52
|
const subLabel = overrideSubLabel ? overrideSubLabel : card ? `Expires ${displayExpiry(card.expiry)}` : t(Translation_1.Translation.Step.Confirmation.CardSubLabel);
|
|
53
53
|
return (react_1.default.createElement("div", { className: "u-flex u-flex-justify-between w-100 u-flex-align-center" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlinePaymentOption.js","sourceRoot":"/","sources":["src/components/generic/PaymentCard/InlinePaymentOption.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAkC;AAClC,iDAA+C;AAE/C,2GAAmF;AACnF,kEAA2D;AAC3D,kEAA2D;AAC3D,iIAAyG;AACzG,yCAAyD;AACzD,gEAA2C;AAE3C,4DAAyD;AACzD,wCAAqC;AACrC,wDAAiD;AAEjD,wGAAuD;AASvD,MAAM,mBAAmB,GAAiC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC7F,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,2BAAgB,GAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"InlinePaymentOption.js","sourceRoot":"/","sources":["src/components/generic/PaymentCard/InlinePaymentOption.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayMemberCards } from '@roomstay/core';\nimport React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport InlinePaymentCard from '@/components/generic/PaymentCard/InlinePaymentCard';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport { useBasket, useMemberContext } from '@/contexts';\nimport useCurrency from '@/hooks/Currency';\nimport { VGSCardName } from '@/models/Api/HotelDTO';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './InlinePaymentOption.module.scss';\n\ninterface InlinePaymentOptionProps {\n card?: IRoomstayMemberCards;\n active?: boolean;\n\n overrideSubLabel?: string;\n}\n\nconst InlinePaymentOption: FC<InlinePaymentOptionProps> = ({ card, active, overrideSubLabel }) => {\n const { t } = useTranslation();\n const { roomstayMember } = useMemberContext();\n const displayExpiry = (expiry: string) => {\n return expiry.slice(0, 2) + ' / ' + expiry.slice(2);\n };\n const { getTotalPayNow } = useBasket();\n const totalPayNow = getTotalPayNow();\n const { symbol, prettyValue } = useCurrency({\n children: totalPayNow,\n });\n\n const subLabel = overrideSubLabel ? overrideSubLabel : card ? `Expires ${displayExpiry(card.expiry)}` : t(Translation.Step.Confirmation.CardSubLabel);\n\n return (\n <div className=\"u-flex u-flex-justify-between w-100 u-flex-align-center\">\n <div className={styles.root}>\n {card ? (\n <div className=\"flex-shrink-0\">\n <InlinePaymentCard vgsCardName={card.type as VGSCardName} large />\n </div>\n ) : null}\n <div>\n <Text align={TextAlign.Left} type={TextType.Small} color={Color.Navy}>\n {card ? `**** **** **** ${card.cardNumber.slice(-4)}` : t(Translation.Step.Confirmation.CardLabel)}\n </Text>\n\n <Text className=\"u-marg-top--lighter\" align={TextAlign.Left} type={TextType.Caption} color={Color.DarkGrey}>\n {subLabel}\n </Text>\n </div>\n {!card && (\n <div>\n <AcceptablePaymentCard\n style={{\n width: 24,\n height: 16,\n borderRadius: 1.5,\n border: '0.5px solid #DFE1E5',\n }}\n isCurrent={() => true}\n />\n </div>\n )}\n {roomstayMember?.defaultCard && card && card.cardId === roomstayMember.defaultCard && (\n <Pill size=\"small\" type={PillType.Primary}>\n DEFAULT CARD\n </Pill>\n )}\n </div>\n <Text bold className=\"u-flex\" color={Color.Navy} type={TextType.Small}>\n {symbol}\n {prettyValue}\n </Text>\n </div>\n );\n};\n\nexport default InlinePaymentOption;\n"]}
|
|
@@ -40,8 +40,10 @@ const react_1 = __importStar(require("react"));
|
|
|
40
40
|
const BEButton_1 = __importDefault(require("../BEButton"));
|
|
41
41
|
const Icon_1 = require("../Icon/Icon");
|
|
42
42
|
const HistoryConsistentPush_1 = require("../../../hooks/HistoryConsistentPush");
|
|
43
|
+
const useNextStepAction_1 = require("../../../hooks/useNextStepAction");
|
|
43
44
|
const ScreenSize_1 = __importDefault(require("../../../util/ScreenSize"));
|
|
44
45
|
const StepManager_1 = __importDefault(require("../../../util/StepManager"));
|
|
46
|
+
const ButtonWithNextStepConfirmationDialog = (0, useNextStepAction_1.withNextStepConfirmationDialog)(BEButton_1.default);
|
|
45
47
|
function NextStepButton(props) {
|
|
46
48
|
const context = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
47
49
|
const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
|
|
@@ -52,7 +54,7 @@ function NextStepButton(props) {
|
|
|
52
54
|
}
|
|
53
55
|
});
|
|
54
56
|
return (react_1.default.createElement("div", { className: "next-step-button" },
|
|
55
|
-
react_1.default.createElement(
|
|
57
|
+
react_1.default.createElement(ButtonWithNextStepConfirmationDialog, { size: "large", icon: props.hideIcon ? undefined : Icon_1.IconType.ArrowRight, iconPosition: "right", filled: true, primary: true, isLoading: props.isLoading, disabled: props.disabled, wide: props.wideByDefault || context.screenSize <= ScreenSize_1.default.Medium, onClick: buttonClickHandler }, props.text)));
|
|
56
58
|
}
|
|
57
59
|
exports.default = NextStepButton;
|
|
58
60
|
//# sourceMappingURL=NextStepButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextStepButton.js","sourceRoot":"/","sources":["src/components/generic/buttons/NextStepButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiF;AACjF,+CAA0C;AAE1C,6EAAqD;AACrD,yDAA0D;AAC1D,yEAAyE;AACzE,mEAA2C;AAC3C,qEAA6C;AAW7C,SAAwB,cAAc,CAAC,KAA0B;IAC7D,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAC1D,MAAM,qBAAqB,GAAG,IAAA,gDAAwB,GAAE,CAAC;IACzD,MAAM,kBAAkB,GAAG,GAAS,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YAC9D,qBAAqB,CAAC,qBAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;SAClE;IACL,CAAC,CAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"NextStepButton.js","sourceRoot":"/","sources":["src/components/generic/buttons/NextStepButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiF;AACjF,+CAA0C;AAE1C,6EAAqD;AACrD,yDAA0D;AAC1D,yEAAyE;AACzE,iEAA2E;AAC3E,mEAA2C;AAC3C,qEAA6C;AAW7C,MAAM,oCAAoC,GAAG,IAAA,kDAA8B,EAAC,kBAAQ,CAAC,CAAC;AAEtF,SAAwB,cAAc,CAAC,KAA0B;IAC7D,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAC1D,MAAM,qBAAqB,GAAG,IAAA,gDAAwB,GAAE,CAAC;IACzD,MAAM,kBAAkB,GAAG,GAAS,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YAC9D,qBAAqB,CAAC,qBAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;SAClE;IACL,CAAC,CAAA,CAAC;IAEF,OAAO,CACH,uCAAK,SAAS,EAAC,kBAAkB;QAC7B,8BAAC,oCAAoC,IACjC,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAQ,CAAC,UAAU,EACtD,YAAY,EAAC,OAAO,EACpB,MAAM,QACN,OAAO,QACP,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,EACpE,OAAO,EAAE,kBAAkB,IAE1B,KAAK,CAAC,IAAI,CACwB,CACrC,CACT,CAAC;AACN,CAAC;AA3BD,iCA2BC","sourcesContent":["import { BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport React, { useContext } from 'react';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport { useHistoryConsistentPush } from '@/hooks/HistoryConsistentPush';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\n\nexport interface NextStepButtonProps {\n text: string;\n disabled?: boolean;\n isLoading?: boolean;\n onClick?: () => Promise<unknown>;\n wideByDefault?: boolean;\n hideIcon?: boolean;\n}\n\nconst ButtonWithNextStepConfirmationDialog = withNextStepConfirmationDialog(BEButton);\n\nexport default function NextStepButton(props: NextStepButtonProps) {\n const context = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const historyConsistentPush = useHistoryConsistentPush();\n const buttonClickHandler = async () => {\n if (!props.onClick || (props.onClick && (await props.onClick()))) {\n historyConsistentPush(StepManager.getNextStepUrl(currentStep));\n }\n };\n\n return (\n <div className=\"next-step-button\">\n <ButtonWithNextStepConfirmationDialog\n size=\"large\"\n icon={props.hideIcon ? undefined : IconType.ArrowRight}\n iconPosition=\"right\"\n filled\n primary\n isLoading={props.isLoading}\n disabled={props.disabled}\n wide={props.wideByDefault || context.screenSize <= ScreenSize.Medium}\n onClick={buttonClickHandler}\n >\n {props.text}\n </ButtonWithNextStepConfirmationDialog>\n </div>\n );\n}\n"]}
|
|
@@ -35,14 +35,17 @@ const Translation_1 = require("translations/Translation");
|
|
|
35
35
|
const Icon_1 = __importStar(require("../generic/Icon/Icon"));
|
|
36
36
|
const Text_1 = __importStar(require("../generic/Text"));
|
|
37
37
|
const StepSelectorModal_1 = __importDefault(require("./StepSelectorModal"));
|
|
38
|
+
const useNextStepAction_1 = require("../../hooks/useNextStepAction");
|
|
38
39
|
const Color_1 = require("../../util/Color");
|
|
39
40
|
const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
|
|
40
41
|
const StepManager_1 = __importDefault(require("../../util/StepManager"));
|
|
42
|
+
const LinkWithNextStepConfirmationDialog = (0, useNextStepAction_1.withNextStepConfirmationDialog)((props) => react_1.default.createElement("a", Object.assign({}, props, { style: { cursor: 'pointer' } })));
|
|
41
43
|
function StepSelector() {
|
|
42
44
|
const { screenSize } = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
43
45
|
const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
|
|
44
46
|
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
45
47
|
const location = (0, react_router_dom_1.useLocation)();
|
|
48
|
+
const history = (0, react_router_dom_1.useHistory)();
|
|
46
49
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
47
50
|
const [modalOpen, setModalOpen] = (0, react_1.useState)(false);
|
|
48
51
|
const steps = StepManager_1.default.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));
|
|
@@ -93,7 +96,10 @@ function StepSelector() {
|
|
|
93
96
|
react_1.default.createElement("strong", null, t(Translation_1.Translation.Navigation.Steps.StepProgress, { step: prettyStep, maxSteps: StepManager_1.default.getSteps().length })))),
|
|
94
97
|
react_1.default.createElement(Text_1.default, null,
|
|
95
98
|
react_1.default.createElement("strong", null, stepName))),
|
|
96
|
-
react_1.default.createElement(
|
|
99
|
+
react_1.default.createElement(LinkWithNextStepConfirmationDialog, { onClick: () => {
|
|
100
|
+
const newLocation = Object.assign(Object.assign({}, location), { pathname: step.getStepUrl() });
|
|
101
|
+
history.push(newLocation);
|
|
102
|
+
} })));
|
|
97
103
|
})))),
|
|
98
104
|
screenSize <= ScreenSize_1.default.Medium && react_1.default.createElement(StepSelectorModal_1.default, { isOpen: modalOpen, onClose: closeModal })));
|
|
99
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepSelector.js","sourceRoot":"/","sources":["src/components/navigation/StepSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgG;AAChG,4DAAoC;AACpC,+CAAoD;AACpD,iDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"StepSelector.js","sourceRoot":"/","sources":["src/components/navigation/StepSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepSelectorModal from '@/components/navigation/StepSelectorModal';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport Step from '@/pages/steps/Step';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\n\nconst LinkWithNextStepConfirmationDialog = withNextStepConfirmationDialog((props: any) => <a {...props} style={{ cursor: 'pointer' }}></a>);\n\nexport default function StepSelector() {\n const { screenSize } = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const location = useLocation();\n const history = useHistory();\n\n const { t } = useTranslation();\n\n const [modalOpen, setModalOpen] = useState(false);\n\n const steps = StepManager.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));\n\n const onDropdownClick = () => {\n screenSize <= ScreenSize.Medium ? setModalOpen(true) : null;\n };\n\n const closeModal = () => {\n setModalOpen(false);\n };\n\n const currentStepIndex = StepManager.getStepIndex(currentStep.getName());\n\n return (\n <>\n <div className=\"step-dropdown\" onClick={onDropdownClick}>\n <div className=\"step-container\">\n <span className=\"step-container-dropdown\">\n <Icon icon={IconType.Dropdown} />\n </span>\n <div className=\"step-awards\">\n <img alt=\"\" style={{ width: '80px' }} />\n </div>\n <ul className=\"step-selector\">\n {steps.map((step: Step, stepIndex: number) => {\n const stepName = t(step.getStepTranslation() as string);\n\n const prettyStep = stepIndex + 1;\n\n const isPrevStep = currentStepIndex > prettyStep;\n\n let stepNumber: JSX.Element;\n if (isPrevStep) {\n stepNumber = <Icon icon={IconType.Check} color={Color.White} size=\"24px\" />;\n } else {\n stepNumber = (\n <Text type={TextType.Small}>\n <strong>{'0' + prettyStep}</strong>\n </Text>\n );\n }\n\n let isClickable = false;\n\n if (step) {\n const stepValidator = step.getValidator();\n\n if (stepValidator && stepValidator.isValid(basketContext)) {\n isClickable = true;\n }\n }\n\n const stepClassNames = classNames('step-selector__item', {\n 'is-current': currentStepIndex === prettyStep,\n 'is-valid': isClickable,\n 'is-complete': isPrevStep,\n 'is-disabled': !isPrevStep && currentStepIndex !== prettyStep && !isClickable,\n });\n\n return (\n <li className={stepClassNames} key={prettyStep}>\n <span className=\"step-selector__count\">{stepNumber}</span>\n <div>\n <span className=\"step-selector__step-count-mobile\">\n <Text type={TextType.Small} color={Color.Navy}>\n <strong>{t(Translation.Navigation.Steps.StepProgress, { step: prettyStep, maxSteps: StepManager.getSteps().length })}</strong>\n </Text>\n </span>\n <Text>\n <strong>{stepName}</strong>\n </Text>\n </div>\n <LinkWithNextStepConfirmationDialog\n onClick={() => {\n const newLocation = { ...location, pathname: step.getStepUrl() };\n history.push(newLocation);\n }}\n />\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n {screenSize <= ScreenSize.Medium && <StepSelectorModal isOpen={modalOpen} onClose={closeModal} />}\n </>\n );\n}\n"]}
|
|
@@ -177,7 +177,7 @@ const ReservationItem = (props) => {
|
|
|
177
177
|
react_1.default.createElement("div", { className: "reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy" }, renderActions())))),
|
|
178
178
|
react_1.default.createElement(NoPrint_1.default, null,
|
|
179
179
|
react_1.default.createElement("div", { className: "u-marg-top--medium" },
|
|
180
|
-
react_1.default.createElement(EventCarouselContainer_1.default, { defaultExpanded: defaultEventsExpanded,
|
|
180
|
+
react_1.default.createElement(EventCarouselContainer_1.default, { defaultExpanded: defaultEventsExpanded, itineraryItem: itineraryItem })))));
|
|
181
181
|
};
|
|
182
182
|
exports.default = ReservationItem;
|
|
183
183
|
//# sourceMappingURL=ReservationItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReservationItem.js","sourceRoot":"/","sources":["src/components/reservation/ReservationItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { IBookingStatus } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport EventCarouselContainer from '@/components/Event/EventCarouselContainer';\nimport BEButton, { BEButtonProps } from '@/components/generic/BEButton';\nimport Headline, { HeadlineProps } from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NoPrint from '@/components/generic/print/NoPrint';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useCurrentHotel } from '@/hooks';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\nimport { TextAlign } from '@/util/TextAlignment';\nimport TimeHelper from '@/util/TimeHelper';\n\nimport styles from './ReservationItem.module.scss';\n\nexport enum ReservationAction {\n MoreDetails = 'MoreDetails',\n BookAgain = 'BookAgain',\n Cancel = 'Cancel',\n Modify = 'Modify',\n}\n\nexport type ReservationItemProps = {\n itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;\n disableMarginBottom?: boolean;\n actions?: ReservationAction[];\n showCancelledNotifications?: boolean;\n onActionClick?: (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => void;\n defaultEventsExpanded?: boolean;\n};\n\nconst defaultActions: ReservationAction[] = [ReservationAction.MoreDetails];\n\nconst ReservationItem = (props: ReservationItemProps) => {\n const { itineraryItem, disableMarginBottom, actions = defaultActions, showCancelledNotifications = false, defaultEventsExpanded } = props;\n\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const nameSize: HeadlineProps['size'] = isMobile ? 'normal' : 'large';\n\n const CheckinCheckoutComponent = ({ translation, value }: { translation: string; value: string }) => {\n const TextContainer = isMobile ? Text : Headline;\n\n const time = useMemo(() => {\n // Using timeHelper to convert 24hr to 12hr\n return TimeHelper.convert24To12hr(value);\n }, [value]);\n\n return (\n <TextContainer>\n {t(translation)} {time}\n </TextContainer>\n );\n };\n\n const renderActions = () =>\n actions.map((action, index) => {\n const defaultButtonProps: BEButtonProps = {\n mobileWidth: true,\n rounded: true,\n wide: isMobile,\n key: index,\n className: classNames({\n 'u-marg-right@m': index === 0,\n }),\n };\n\n const onActionClick = () => {\n if (props.onActionClick) {\n props.onActionClick(action, itineraryItem);\n }\n };\n\n /**\n * Only renders Cancel/Modify if the booking is NOT cancelled\n */\n if (cancelled && [ReservationAction.Cancel, ReservationAction.Modify].includes(action)) {\n return;\n }\n\n /**\n * Only renders BookAgain if booking IS cancelled\n */\n if (!cancelled && action === ReservationAction.BookAgain) {\n return;\n }\n\n switch (action) {\n case ReservationAction.Modify:\n return ModifyBookingFeature.isActive() ? (\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.ModifyThisRoom)}\n </BEButton>\n ) : null;\n case ReservationAction.Cancel:\n return (\n <BEButton {...defaultButtonProps} danger onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.CancelReservation)}\n </BEButton>\n );\n case ReservationAction.BookAgain:\n return (\n <Link to={StepManager.getFirstStep().getStepUrl()} key={index}>\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick}>\n {t(Translation.Reservation.BookAgain)}\n </BEButton>\n </Link>\n );\n case ReservationAction.MoreDetails:\n return (\n <Link to={`${AccountRoutes.SingleReservation.path}${itineraryItem.bookingId}/item`} key={index}>\n <BEButton {...defaultButtonProps} primary filled icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.MoreDetails)}\n </BEButton>\n </Link>\n );\n }\n });\n\n if (!itineraryItem) {\n return <></>;\n }\n\n const itineraryItemNights = Object.keys(itineraryItem.nights);\n\n const checkInDate = dayjs(itineraryItem.checkInDate);\n const checkOutDate = dayjs(itineraryItem.checkOutDate);\n\n const reservationOccupancy = itineraryItem.adults + (itineraryItem?.children || 0);\n\n const cancelled = itineraryItem.status === IBookingStatus.Cancelled;\n\n const colorProfile = itineraryItem?.hotel?.colors;\n\n return (\n <div id={`reservation-${itineraryItem.id}`} className={classNames({ 'u-marg-bottom--heavy u-marg-bottom@m-': !disableMarginBottom })}>\n {showCancelledNotifications && cancelled && (\n <div className={styles['cancelledNotification']}>\n <div className={styles['cancelledNotification-icon']}>\n <Icon icon={IconType.Error} size=\"44px\" color={Color.Danger} />\n </div>\n <div>\n <Text type={TextType.Small} bold color={Color.Danger} className={styles['cancelledNotification-title']}>\n {t(Translation.Reservation.Notification.ThisRoomIsCancelled.Title)}\n </Text>\n <Trans\n i18nKey={Translation.Reservation.Notification.ThisRoomIsCancelled.Detail}\n components={[<Link key={0} to={AccountRoutes.Help.path} style={{ color: Color.Accent }}></Link>]}\n />\n </div>\n </div>\n )}\n <div className=\"reservation-item-container\">\n {!!colorProfile && (\n <style>\n {`\n #reservation-${itineraryItem.id} {\n ${getAccentOverrideStyleContent(colorProfile)}\n }\n `}\n </style>\n )}\n\n <div className=\"reservation-item\">\n <div className={classNames('reservation-item--image u-border-rounded u-print-none', { 'reservation-item--disabled': cancelled })}>\n <ImageGallerySlider images={itineraryItem.images} imageSize={ImageSize.Medium} />\n <div className=\"reservation-item--floating-date\">\n <Headline size=\"extra-large\" color={cancelled ? Color.DarkGrey : Color.White} align={TextAlign.Center}>\n {checkInDate.format('DD')}\n </Headline>\n <Text type={TextType.Small} color={cancelled ? Color.DarkGrey : Color.White} bold>\n {checkInDate.format('MMM YYYY')}\n </Text>\n </div>\n </div>\n\n <div className=\"reservation-item--content u-pad--heavy u-pad-left-none@m- u-pad-right-none@m- u-pad-bottom-none@m- u-print-pad-left-none\">\n <div className=\"reservation-item--content-title u-marg-bottom--light\">\n {hotel?.hotelID !== itineraryItem.hotelId && (\n <Text color={Color.Accent} size={nameSize} bold>\n {itineraryItem.hotel.name}\n </Text>\n )}\n <Headline bold size={nameSize}>\n {itineraryItem.roomName}\n </Headline>\n </div>\n <div className=\"text-body u-marg-bottom\">{(itineraryItem?.profile?.firstName ?? '') + ' ' + (itineraryItem?.profile?.lastName ?? '')}</div>\n <div className=\"reservation-item--info u-marg-bottom--heavy\">\n <div className=\"u-flex u-flex-gap--light\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <Text type={TextType.Small}>{checkInDate.format('D MMM, YYYY')}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.ArrowRight2} color={Color.Grey} />\n <Text type={TextType.Small}>{checkOutDate.format('D MMM, YYYY')}</Text>\n </div>\n </div>\n <div className=\"u-flex u-flex-gap\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.LateCheckout} color={Color.Grey} />\n <Text type={TextType.Small}>{`${itineraryItemNights.length} night${itineraryItemNights.length > 1 ? 's' : ''}`}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Person} color={Color.Grey} />\n <Text type={TextType.Small}>{`${reservationOccupancy} guest${reservationOccupancy > 1 ? 's' : ''}`}</Text>\n </div>\n </div>\n </div>\n <div className=\"reservation-item--checkin-checkout u-flex justify-content-start u-pad u-border-rounded\">\n <div className=\"u-marg-right--heavy\">\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckIn)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.After} value={itineraryItem?.hotel?.checkInTime} />\n </div>\n <div>\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckOut)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.Before} value={itineraryItem?.hotel?.checkOutTime} />\n </div>\n </div>\n <div className=\"reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy\">{renderActions()}</div>\n </div>\n </div>\n </div>\n <NoPrint>\n <div className=\"u-marg-top--medium\">\n <EventCarouselContainer defaultExpanded={defaultEventsExpanded} hotelId={itineraryItem.hotelId} checkInDate={itineraryItem.checkInDate} />\n </div>\n </NoPrint>\n </div>\n );\n};\n\nexport default ReservationItem;\n"]}
|
|
1
|
+
{"version":3,"file":"ReservationItem.js","sourceRoot":"/","sources":["src/components/reservation/ReservationItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { IBookingStatus } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport EventCarouselContainer from '@/components/Event/EventCarouselContainer';\nimport BEButton, { BEButtonProps } from '@/components/generic/BEButton';\nimport Headline, { HeadlineProps } from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport NoPrint from '@/components/generic/print/NoPrint';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useCurrentHotel } from '@/hooks';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\nimport { TextAlign } from '@/util/TextAlignment';\nimport TimeHelper from '@/util/TimeHelper';\n\nimport styles from './ReservationItem.module.scss';\n\nexport enum ReservationAction {\n MoreDetails = 'MoreDetails',\n BookAgain = 'BookAgain',\n Cancel = 'Cancel',\n Modify = 'Modify',\n}\n\nexport type ReservationItemProps = {\n itineraryItem: IRoomstayMemberBookingItemWithRefAndHotelDetails;\n disableMarginBottom?: boolean;\n actions?: ReservationAction[];\n showCancelledNotifications?: boolean;\n onActionClick?: (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => void;\n defaultEventsExpanded?: boolean;\n};\n\nconst defaultActions: ReservationAction[] = [ReservationAction.MoreDetails];\n\nconst ReservationItem = (props: ReservationItemProps) => {\n const { itineraryItem, disableMarginBottom, actions = defaultActions, showCancelledNotifications = false, defaultEventsExpanded } = props;\n\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const { hotel } = useCurrentHotel();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const nameSize: HeadlineProps['size'] = isMobile ? 'normal' : 'large';\n\n const CheckinCheckoutComponent = ({ translation, value }: { translation: string; value: string }) => {\n const TextContainer = isMobile ? Text : Headline;\n\n const time = useMemo(() => {\n // Using timeHelper to convert 24hr to 12hr\n return TimeHelper.convert24To12hr(value);\n }, [value]);\n\n return (\n <TextContainer>\n {t(translation)} {time}\n </TextContainer>\n );\n };\n\n const renderActions = () =>\n actions.map((action, index) => {\n const defaultButtonProps: BEButtonProps = {\n mobileWidth: true,\n rounded: true,\n wide: isMobile,\n key: index,\n className: classNames({\n 'u-marg-right@m': index === 0,\n }),\n };\n\n const onActionClick = () => {\n if (props.onActionClick) {\n props.onActionClick(action, itineraryItem);\n }\n };\n\n /**\n * Only renders Cancel/Modify if the booking is NOT cancelled\n */\n if (cancelled && [ReservationAction.Cancel, ReservationAction.Modify].includes(action)) {\n return;\n }\n\n /**\n * Only renders BookAgain if booking IS cancelled\n */\n if (!cancelled && action === ReservationAction.BookAgain) {\n return;\n }\n\n switch (action) {\n case ReservationAction.Modify:\n return ModifyBookingFeature.isActive() ? (\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.ModifyThisRoom)}\n </BEButton>\n ) : null;\n case ReservationAction.Cancel:\n return (\n <BEButton {...defaultButtonProps} danger onClick={onActionClick} disabled={!itineraryItem.isCancellable}>\n {t(Translation.Reservation.CancelReservation)}\n </BEButton>\n );\n case ReservationAction.BookAgain:\n return (\n <Link to={StepManager.getFirstStep().getStepUrl()} key={index}>\n <BEButton {...defaultButtonProps} icon={IconType.ArrowRight} iconPosition=\"right\" onClick={onActionClick}>\n {t(Translation.Reservation.BookAgain)}\n </BEButton>\n </Link>\n );\n case ReservationAction.MoreDetails:\n return (\n <Link to={`${AccountRoutes.SingleReservation.path}${itineraryItem.bookingId}/item`} key={index}>\n <BEButton {...defaultButtonProps} primary filled icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.MoreDetails)}\n </BEButton>\n </Link>\n );\n }\n });\n\n if (!itineraryItem) {\n return <></>;\n }\n\n const itineraryItemNights = Object.keys(itineraryItem.nights);\n\n const checkInDate = dayjs(itineraryItem.checkInDate);\n const checkOutDate = dayjs(itineraryItem.checkOutDate);\n\n const reservationOccupancy = itineraryItem.adults + (itineraryItem?.children || 0);\n\n const cancelled = itineraryItem.status === IBookingStatus.Cancelled;\n\n const colorProfile = itineraryItem?.hotel?.colors;\n\n return (\n <div id={`reservation-${itineraryItem.id}`} className={classNames({ 'u-marg-bottom--heavy u-marg-bottom@m-': !disableMarginBottom })}>\n {showCancelledNotifications && cancelled && (\n <div className={styles['cancelledNotification']}>\n <div className={styles['cancelledNotification-icon']}>\n <Icon icon={IconType.Error} size=\"44px\" color={Color.Danger} />\n </div>\n <div>\n <Text type={TextType.Small} bold color={Color.Danger} className={styles['cancelledNotification-title']}>\n {t(Translation.Reservation.Notification.ThisRoomIsCancelled.Title)}\n </Text>\n <Trans\n i18nKey={Translation.Reservation.Notification.ThisRoomIsCancelled.Detail}\n components={[<Link key={0} to={AccountRoutes.Help.path} style={{ color: Color.Accent }}></Link>]}\n />\n </div>\n </div>\n )}\n <div className=\"reservation-item-container\">\n {!!colorProfile && (\n <style>\n {`\n #reservation-${itineraryItem.id} {\n ${getAccentOverrideStyleContent(colorProfile)}\n }\n `}\n </style>\n )}\n\n <div className=\"reservation-item\">\n <div className={classNames('reservation-item--image u-border-rounded u-print-none', { 'reservation-item--disabled': cancelled })}>\n <ImageGallerySlider images={itineraryItem.images} imageSize={ImageSize.Medium} />\n <div className=\"reservation-item--floating-date\">\n <Headline size=\"extra-large\" color={cancelled ? Color.DarkGrey : Color.White} align={TextAlign.Center}>\n {checkInDate.format('DD')}\n </Headline>\n <Text type={TextType.Small} color={cancelled ? Color.DarkGrey : Color.White} bold>\n {checkInDate.format('MMM YYYY')}\n </Text>\n </div>\n </div>\n\n <div className=\"reservation-item--content u-pad--heavy u-pad-left-none@m- u-pad-right-none@m- u-pad-bottom-none@m- u-print-pad-left-none\">\n <div className=\"reservation-item--content-title u-marg-bottom--light\">\n {hotel?.hotelID !== itineraryItem.hotelId && (\n <Text color={Color.Accent} size={nameSize} bold>\n {itineraryItem.hotel.name}\n </Text>\n )}\n <Headline bold size={nameSize}>\n {itineraryItem.roomName}\n </Headline>\n </div>\n <div className=\"text-body u-marg-bottom\">{(itineraryItem?.profile?.firstName ?? '') + ' ' + (itineraryItem?.profile?.lastName ?? '')}</div>\n <div className=\"reservation-item--info u-marg-bottom--heavy\">\n <div className=\"u-flex u-flex-gap--light\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Calendar} color={Color.Grey} />\n <Text type={TextType.Small}>{checkInDate.format('D MMM, YYYY')}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.ArrowRight2} color={Color.Grey} />\n <Text type={TextType.Small}>{checkOutDate.format('D MMM, YYYY')}</Text>\n </div>\n </div>\n <div className=\"u-flex u-flex-gap\">\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.LateCheckout} color={Color.Grey} />\n <Text type={TextType.Small}>{`${itineraryItemNights.length} night${itineraryItemNights.length > 1 ? 's' : ''}`}</Text>\n </div>\n <div className=\"u-flex u-flex-nowrap u-flex-gap--light\">\n <Icon icon={IconType.Person} color={Color.Grey} />\n <Text type={TextType.Small}>{`${reservationOccupancy} guest${reservationOccupancy > 1 ? 's' : ''}`}</Text>\n </div>\n </div>\n </div>\n <div className=\"reservation-item--checkin-checkout u-flex justify-content-start u-pad u-border-rounded\">\n <div className=\"u-marg-right--heavy\">\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckIn)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.After} value={itineraryItem?.hotel?.checkInTime} />\n </div>\n <div>\n <Text type={TextType.Small} color={Color.DarkGrey} className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CheckOut)}\n </Text>\n <CheckinCheckoutComponent translation={Translation.Reservation.Before} value={itineraryItem?.hotel?.checkOutTime} />\n </div>\n </div>\n <div className=\"reservation-item--actions u-flex justify-content-start u-print-none u-marg-top--heavy\">{renderActions()}</div>\n </div>\n </div>\n </div>\n <NoPrint>\n <div className=\"u-marg-top--medium\">\n <EventCarouselContainer defaultExpanded={defaultEventsExpanded} itineraryItem={itineraryItem} />\n </div>\n </NoPrint>\n </div>\n );\n};\n\nexport default ReservationItem;\n"]}
|
|
@@ -43,9 +43,10 @@ const DataLayer_1 = __importDefault(require("../../../../util/DataLayer"));
|
|
|
43
43
|
const TabGroupedRooms = () => {
|
|
44
44
|
var _a;
|
|
45
45
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
46
|
-
const { rooms, isLoading, loadingAttempted,
|
|
46
|
+
const { rooms, isLoading, loadingAttempted, apiHasError } = (0, RoomRateAvailabilityListFromApi_1.useRoomRateAvailabilityListFromApi)();
|
|
47
47
|
const params = (0, Query_1.useHashQuery)();
|
|
48
48
|
const groupedRooms = (0, react_1.useMemo)(() => {
|
|
49
|
+
var _a;
|
|
49
50
|
if (!hotel) {
|
|
50
51
|
return [];
|
|
51
52
|
}
|
|
@@ -60,7 +61,7 @@ const TabGroupedRooms = () => {
|
|
|
60
61
|
for (const room of rooms) {
|
|
61
62
|
let groupId = !!room.roomGroupId ? room.roomGroupId : 'list-all';
|
|
62
63
|
if (!sortingGroup[groupId]) {
|
|
63
|
-
const foundGroup = hotel.roomGroups.find((group) => group.id === groupId);
|
|
64
|
+
const foundGroup = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.roomGroups) === null || _a === void 0 ? void 0 : _a.find((group) => group.id === groupId);
|
|
64
65
|
if (foundGroup) {
|
|
65
66
|
sortingGroup[groupId] = Object.assign(Object.assign({}, foundGroup), { rooms: [] });
|
|
66
67
|
}
|