@roomstay/frontend 2.5.2-3 → 2.5.2
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/449.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/{419.bundle.js → 736.bundle.js} +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +3 -3
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +0 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +4 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +0 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +6 -3
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.d.ts +1 -0
- package/dist/src/components/generic/PromoCodeInput.js +9 -4
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +3 -4
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePickerRow.js +23 -22
- package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
- package/dist/src/components/steps/date/StepOneStatusPeople.js +5 -3
- package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelSearchParameters.js +6 -4
- package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +5 -4
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +7 -4
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +5 -4
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +4 -5
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +0 -1
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +0 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +0 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +1 -1
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/OfflineEngineDefaults.d.ts +1 -0
- package/dist/tests/offline/entry/OfflineEngineDefaults.js +5 -1
- package/dist/tests/offline/entry/OfflineEngineDefaults.js.map +1 -1
- package/package.json +1 -1
|
@@ -46,7 +46,7 @@ var EBookingWizardTheme;
|
|
|
46
46
|
EBookingWizardTheme["Specific"] = "specific";
|
|
47
47
|
})(EBookingWizardTheme = exports.EBookingWizardTheme || (exports.EBookingWizardTheme = {}));
|
|
48
48
|
const BookingWizard = (props) => {
|
|
49
|
-
const { layout = 'horizontal', theme = EBookingWizardTheme.Default, onSubmit, wrapperClassname, contentClassname: contentClassnameProps, selectedProperty, properties, defaultColors, disableChild,
|
|
49
|
+
const { layout = 'horizontal', theme = EBookingWizardTheme.Default, onSubmit, wrapperClassname, contentClassname: contentClassnameProps, selectedProperty, properties, defaultColors, disableChild, disableRoom, hideGuestSelect, hidePromocode, defaultValues, } = props;
|
|
50
50
|
const [isOpen, setIsOpen] = react_1.default.useState(false);
|
|
51
51
|
const { isMobile } = (0, WindowSize_1.useWindowSize)();
|
|
52
52
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
@@ -114,11 +114,11 @@ const BookingWizard = (props) => {
|
|
|
114
114
|
react_1.default.createElement(Icon_1.default, { className: BookingWizard_module_scss_1.default.closeBtn, icon: Icon_1.IconType.Close, size: "24px", onClick: () => setIsOpen(false) })),
|
|
115
115
|
react_1.default.createElement(BookingWizardContext_1.BookingWizardContext.Provider, { value: bookingWizardContext },
|
|
116
116
|
react_1.default.createElement("div", { className: classes },
|
|
117
|
-
react_1.default.createElement(BookingWizardContent_1.BookingWizardContent, { properties: properties, selectedProperty: selectedProperty, defaultColors: defaultColors, classname: contentClassname, disableChild: disableChild,
|
|
117
|
+
react_1.default.createElement(BookingWizardContent_1.BookingWizardContent, { properties: properties, selectedProperty: selectedProperty, defaultColors: defaultColors, classname: contentClassname, disableChild: disableChild, disableRoom: disableRoom, defaultValues: defaultValues, hideGuestSelect: hideGuestSelect, hidePromocode: hidePromocode })))))));
|
|
118
118
|
}
|
|
119
119
|
return (react_1.default.createElement("div", { ref: ref, className: classes },
|
|
120
120
|
react_1.default.createElement(BookingWizardContext_1.BookingWizardContext.Provider, { value: bookingWizardContext },
|
|
121
|
-
react_1.default.createElement(BookingWizardContent_1.BookingWizardContent, Object.assign({}, props, { classname: contentClassname, disableChild: disableChild,
|
|
121
|
+
react_1.default.createElement(BookingWizardContent_1.BookingWizardContent, Object.assign({}, props, { classname: contentClassname, disableChild: disableChild, disableRoom: disableRoom, defaultValues: defaultValues })))));
|
|
122
122
|
};
|
|
123
123
|
exports.default = BookingWizard;
|
|
124
124
|
//# sourceMappingURL=BookingWizard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizard.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Placement } from '@popperjs/core';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useMeasure from 'react-use-measure';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { BookingWizardContent, BookingWizardContentProps } from '@/components/generic/BookingWizard/BookingWizardContent';\nimport {\n BookingWizardContext,\n BookingWizardContextType,\n BookingWizardLayout,\n BookingWizardOverlayType,\n BookingWizardTheme,\n} from '@/components/generic/BookingWizard/BookingWizardContext';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport styles from './BookingWizard.module.scss';\n\nexport enum EBookingWizardTheme {\n Default = 'default',\n Specific = 'specific',\n}\n\nexport interface BookingWizardProps extends BookingWizardContentProps {\n layout?: BookingWizardLayout;\n theme?: BookingWizardTheme;\n\n wrapperClassname?: string;\n contentClassname?: string;\n\n properties: TBookingWizardProperties;\n selectedProperty: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n onSubmit: BookingWizardContextType['onSubmit'];\n}\n\nconst BookingWizard: React.FC<BookingWizardProps> = (props) => {\n const {\n layout = 'horizontal',\n theme = EBookingWizardTheme.Default,\n onSubmit,\n wrapperClassname,\n contentClassname: contentClassnameProps,\n selectedProperty,\n properties,\n defaultColors,\n disableChild,\n disableInfants,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n defaultValues,\n } = props;\n const [isOpen, setIsOpen] = React.useState(false);\n\n const { isMobile } = useWindowSize();\n const { t } = useTranslation();\n const [ref, bounds] = useMeasure({ debounce: 300 });\n\n const [compOverlayType, setCompOverlayType] = useState<BookingWizardOverlayType>('popup');\n const [overlayOffset, setOverlayOffset] = useState<[number, number]>();\n const [dateSelectorOverlayOffset, setDateSelectorOverlayOffset] = useState<[number, number]>();\n const [overlayPlacement, setOverlayPlacement] = useState<Placement>();\n\n const isSmallContainer = useMemo(() => {\n return bounds.width <= ScreenSize.Medium;\n }, [bounds]);\n\n useEffect(() => {\n if ((layout === 'horizontal' || layout === 'horizontal-condensed') && !isMobile) {\n setOverlayOffset([0, 6]);\n setDateSelectorOverlayOffset([0, 6]);\n setCompOverlayType('popup');\n\n // if (isSmallContainer && layout !== 'horizontal-condensed') {\n // setOverlayOffset([0, 0]);\n // setDateSelectorOverlayOffset([0, 0]);\n // }\n } else {\n setOverlayOffset([0, 10]);\n setDateSelectorOverlayOffset([0, -8]);\n setCompOverlayType('bottom-sheet');\n }\n }, [layout, isMobile, isSmallContainer]);\n\n useEffect(() => {\n if (!isMobile) {\n setOverlayPlacement('bottom-start');\n } else {\n setOverlayPlacement('bottom');\n }\n }, [isMobile]);\n\n const classes = classNames(\n styles.container,\n {\n [styles['--theme-specific']]: theme === EBookingWizardTheme.Specific,\n [styles['--theme-default']]: theme === EBookingWizardTheme.Default,\n [styles['--theme-condensed']]: layout === 'horizontal-condensed',\n [styles['--in-small-container']]: isSmallContainer,\n },\n wrapperClassname\n );\n\n const contentClassname = classNames(contentClassnameProps, { [styles['--in-small-container']]: isSmallContainer });\n\n const bookingWizardContext: BookingWizardContextType = {\n layout,\n theme,\n type: compOverlayType,\n className: classes,\n isMobile,\n isSmallContainer,\n\n onSubmit,\n\n overlay: {\n offset: overlayOffset,\n placement: overlayPlacement,\n fallbackPlacements: overlayPlacement,\n dateOffset: dateSelectorOverlayOffset,\n },\n };\n\n if (layout === 'button') {\n return (\n <div className={classes}>\n <BEButton className={styles.bookNowBtn} onClick={() => setIsOpen(true)}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n\n <SimpleModal className={styles.container} size={SimpleModalSize.ExtraSmall} open={isOpen} onClose={() => setIsOpen(false)} alignCenter overflowVisible>\n <div>\n <div className={styles.title}>\n <span>{t(Translation.Misc.BookAHotel)}</span>\n <Icon className={styles.closeBtn} icon={IconType.Close} size=\"24px\" onClick={() => setIsOpen(false)} />\n </div>\n <BookingWizardContext.Provider value={bookingWizardContext}>\n <div className={classes}>\n <BookingWizardContent\n properties={properties}\n selectedProperty={selectedProperty}\n defaultColors={defaultColors}\n classname={contentClassname}\n disableChild={disableChild}\n disableInfants={disableInfants}\n disableRoom={disableRoom}\n defaultValues={defaultValues}\n hideGuestSelect={hideGuestSelect}\n hidePromocode={hidePromocode}\n />\n </div>\n </BookingWizardContext.Provider>\n </div>\n </SimpleModal>\n </div>\n );\n }\n\n return (\n <div ref={ref} className={classes}>\n <BookingWizardContext.Provider value={bookingWizardContext}>\n <BookingWizardContent\n {...props}\n classname={contentClassname}\n disableChild={disableChild}\n disableInfants={disableInfants}\n disableRoom={disableRoom}\n defaultValues={defaultValues}\n />\n </BookingWizardContext.Provider>\n </div>\n );\n};\n\nexport default BookingWizard;\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizard.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Placement } from '@popperjs/core';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useMeasure from 'react-use-measure';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { BookingWizardContent, BookingWizardContentProps } from '@/components/generic/BookingWizard/BookingWizardContent';\nimport {\n BookingWizardContext,\n BookingWizardContextType,\n BookingWizardLayout,\n BookingWizardOverlayType,\n BookingWizardTheme,\n} from '@/components/generic/BookingWizard/BookingWizardContext';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport styles from './BookingWizard.module.scss';\n\nexport enum EBookingWizardTheme {\n Default = 'default',\n Specific = 'specific',\n}\n\nexport interface BookingWizardProps extends BookingWizardContentProps {\n layout?: BookingWizardLayout;\n theme?: BookingWizardTheme;\n\n wrapperClassname?: string;\n contentClassname?: string;\n\n properties: TBookingWizardProperties;\n selectedProperty: BookingWizardProperty;\n defaultColors: BookingWizardProperty['colors'];\n onSubmit: BookingWizardContextType['onSubmit'];\n}\n\nconst BookingWizard: React.FC<BookingWizardProps> = (props) => {\n const {\n layout = 'horizontal',\n theme = EBookingWizardTheme.Default,\n onSubmit,\n wrapperClassname,\n contentClassname: contentClassnameProps,\n selectedProperty,\n properties,\n defaultColors,\n disableChild,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n defaultValues,\n } = props;\n const [isOpen, setIsOpen] = React.useState(false);\n\n const { isMobile } = useWindowSize();\n const { t } = useTranslation();\n const [ref, bounds] = useMeasure({ debounce: 300 });\n\n const [compOverlayType, setCompOverlayType] = useState<BookingWizardOverlayType>('popup');\n const [overlayOffset, setOverlayOffset] = useState<[number, number]>();\n const [dateSelectorOverlayOffset, setDateSelectorOverlayOffset] = useState<[number, number]>();\n const [overlayPlacement, setOverlayPlacement] = useState<Placement>();\n\n const isSmallContainer = useMemo(() => {\n return bounds.width <= ScreenSize.Medium;\n }, [bounds]);\n\n useEffect(() => {\n if ((layout === 'horizontal' || layout === 'horizontal-condensed') && !isMobile) {\n setOverlayOffset([0, 6]);\n setDateSelectorOverlayOffset([0, 6]);\n setCompOverlayType('popup');\n\n // if (isSmallContainer && layout !== 'horizontal-condensed') {\n // setOverlayOffset([0, 0]);\n // setDateSelectorOverlayOffset([0, 0]);\n // }\n } else {\n setOverlayOffset([0, 10]);\n setDateSelectorOverlayOffset([0, -8]);\n setCompOverlayType('bottom-sheet');\n }\n }, [layout, isMobile, isSmallContainer]);\n\n useEffect(() => {\n if (!isMobile) {\n setOverlayPlacement('bottom-start');\n } else {\n setOverlayPlacement('bottom');\n }\n }, [isMobile]);\n\n const classes = classNames(\n styles.container,\n {\n [styles['--theme-specific']]: theme === EBookingWizardTheme.Specific,\n [styles['--theme-default']]: theme === EBookingWizardTheme.Default,\n [styles['--theme-condensed']]: layout === 'horizontal-condensed',\n [styles['--in-small-container']]: isSmallContainer,\n },\n wrapperClassname\n );\n\n const contentClassname = classNames(contentClassnameProps, { [styles['--in-small-container']]: isSmallContainer });\n\n const bookingWizardContext: BookingWizardContextType = {\n layout,\n theme,\n type: compOverlayType,\n className: classes,\n isMobile,\n isSmallContainer,\n\n onSubmit,\n\n overlay: {\n offset: overlayOffset,\n placement: overlayPlacement,\n fallbackPlacements: overlayPlacement,\n dateOffset: dateSelectorOverlayOffset,\n },\n };\n\n if (layout === 'button') {\n return (\n <div className={classes}>\n <BEButton className={styles.bookNowBtn} onClick={() => setIsOpen(true)}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n\n <SimpleModal className={styles.container} size={SimpleModalSize.ExtraSmall} open={isOpen} onClose={() => setIsOpen(false)} alignCenter overflowVisible>\n <div>\n <div className={styles.title}>\n <span>{t(Translation.Misc.BookAHotel)}</span>\n <Icon className={styles.closeBtn} icon={IconType.Close} size=\"24px\" onClick={() => setIsOpen(false)} />\n </div>\n <BookingWizardContext.Provider value={bookingWizardContext}>\n <div className={classes}>\n <BookingWizardContent\n properties={properties}\n selectedProperty={selectedProperty}\n defaultColors={defaultColors}\n classname={contentClassname}\n disableChild={disableChild}\n disableRoom={disableRoom}\n defaultValues={defaultValues}\n hideGuestSelect={hideGuestSelect}\n hidePromocode={hidePromocode}\n />\n </div>\n </BookingWizardContext.Provider>\n </div>\n </SimpleModal>\n </div>\n );\n }\n\n return (\n <div ref={ref} className={classes}>\n <BookingWizardContext.Provider value={bookingWizardContext}>\n <BookingWizardContent {...props} classname={contentClassname} disableChild={disableChild} disableRoom={disableRoom} defaultValues={defaultValues} />\n </BookingWizardContext.Provider>\n </div>\n );\n};\n\nexport default BookingWizard;\n"]}
|
|
@@ -44,6 +44,7 @@ const react_i18next_1 = require("react-i18next");
|
|
|
44
44
|
const AvailabilityAPI_1 = __importDefault(require("../../../api/AvailabilityAPI"));
|
|
45
45
|
const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
|
|
46
46
|
const Translation_1 = require("../../../translations/Translation");
|
|
47
|
+
const hooks_1 = require("../../../hooks");
|
|
47
48
|
const BEButton_1 = __importDefault(require("../BEButton"));
|
|
48
49
|
const BookingWizard_module_scss_1 = __importDefault(require("./BookingWizard.module.scss"));
|
|
49
50
|
const BookingWizardContext_1 = require("./BookingWizardContext");
|
|
@@ -51,10 +52,11 @@ const BookingWizardDateSelector_1 = require("./BookingWizardDateSelector/Booking
|
|
|
51
52
|
const BookingWizardGuestSelector_1 = require("./BookingWizardGuestSelector/BookingWizardGuestSelector");
|
|
52
53
|
const BookingWizardHotelSelector_1 = require("./BookingWizardHotelSelector/BookingWizardHotelSelector");
|
|
53
54
|
const BookingWizardPromoCode_1 = require("./BookingWizardPromoCode/BookingWizardPromoCode");
|
|
54
|
-
const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, defaultColors, classname, disableChild,
|
|
55
|
+
const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, defaultColors, classname, disableChild, disableRoom, hideGuestSelect, hidePromocode, defaultValues, dateFormat, }) => {
|
|
55
56
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
56
57
|
const bwContext = (0, react_1.useContext)(BookingWizardContext_1.BookingWizardContext);
|
|
57
58
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
59
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
58
60
|
const [checkInDate, setCheckInDate] = (0, react_1.useState)((defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.checkIn) ? (0, dayjs_1.default)(defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.checkIn) : (0, dayjs_1.default)());
|
|
59
61
|
const [checkOutDate, setCheckOutDate] = (0, react_1.useState)((defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.checkout) ? (0, dayjs_1.default)(defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.checkout) : (0, dayjs_1.default)().add(1, 'days'));
|
|
60
62
|
const [adults, setAdults] = (0, react_1.useState)((_b = (_a = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.guests) === null || _a === void 0 ? void 0 : _a.adults) !== null && _b !== void 0 ? _b : 1);
|
|
@@ -163,7 +165,7 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
163
165
|
adults,
|
|
164
166
|
children,
|
|
165
167
|
room,
|
|
166
|
-
}, onChange: setGuest, disableChild: disableChild,
|
|
168
|
+
}, onChange: setGuest, disableChild: disableChild, disableRoom: disableRoom })),
|
|
167
169
|
react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.divider }),
|
|
168
170
|
hidePromocode || bwContext.layout === 'horizontal-condensed' ? null : (react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.item },
|
|
169
171
|
react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, "Promocode"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardContent.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import 'react-spring-bottom-sheet/dist/style.css';\n\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\n\nimport BEButton from '../BEButton';\nimport styles from './BookingWizard.module.scss';\nimport { BookingWizardContext, BookingWizardOnBooking } from './BookingWizardContext';\nimport { BookingWizardDateSelector } from './BookingWizardDateSelector/BookingWizardDateSelector';\nimport { BookingWizardGuestSelector } from './BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BookingWizardHotelSelector } from './BookingWizardHotelSelector/BookingWizardHotelSelector';\nimport { BookingWizardPromoCode } from './BookingWizardPromoCode/BookingWizardPromoCode';\n\nexport interface BookingWizardContentProps {\n defaultColors: BookingWizardProperty['colors'];\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n classname?: string;\n disableChild?: boolean;\n disableInfants?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n dateFormat?: string;\n}\n\nexport const BookingWizardContent: React.FC<BookingWizardContentProps> = ({\n properties,\n selectedProperty: defaultProperty,\n defaultColors,\n classname,\n disableChild,\n disableInfants,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n defaultValues,\n dateFormat,\n}) => {\n const bwContext = useContext(BookingWizardContext);\n const { t } = useTranslation();\n\n const [checkInDate, setCheckInDate] = useState<Dayjs | null>(defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : dayjs());\n const [checkOutDate, setCheckOutDate] = useState<Dayjs | null>(defaultValues?.checkout ? dayjs(defaultValues?.checkout) : dayjs().add(1, 'days'));\n const [adults, setAdults] = useState<number>(defaultValues?.guests?.adults ?? 1);\n const [children, setChildren] = useState<number>(defaultValues?.guests?.children ?? 0);\n const [infants, setInfants] = useState<number>(defaultValues?.guests?.infants ?? 0);\n const [room, setRoom] = useState<number>(defaultValues?.guests?.room ?? 1);\n const [promoCode, setPromoCode] = useState<string>(defaultValues?.promoCode || '');\n const [promoCodeValid, setPromoCodeValid] = useState<boolean>();\n const [selectedProperty, setSelectedProperty] = useState<BookingWizardProperty | undefined>(defaultProperty);\n const [hotelContainerRef, setHotelContainerRef] = useState<HTMLDivElement | null>(null);\n const [guestsContainerRef, setGuestContainerRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (selectedProperty?.colors) {\n RoomstayThemeEngine.changeTheme(selectedProperty.colors);\n } else if (defaultColors) {\n RoomstayThemeEngine.changeTheme(defaultColors);\n }\n }, [selectedProperty]);\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n setAdults(guests.adults);\n setChildren(guests.children);\n setInfants(guests.infants);\n setRoom(guests.room);\n };\n\n const setDate = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n setCheckInDate(startDate);\n setCheckOutDate(endDate);\n };\n\n const isValid = () => {\n if (!selectedProperty) return false;\n if (!checkInDate) return false;\n if (!checkOutDate) return false;\n if (adults + children <= 0) return false;\n\n return true;\n };\n\n const _onSubmit = () => {\n if (!isValid()) return false;\n\n // After passing validation, we pass the function up the chain for the engine\n // Implementor to decide where the user should be redirected to\n // This is to give the hotel team a chance to add tracking, or modify the request on their end.\n bwContext.onSubmit?.({\n id: selectedProperty?.id as string,\n checkIn: checkInDate as Dayjs,\n checkout: checkOutDate as Dayjs,\n promoCode,\n guests: {\n adults,\n children,\n infants,\n room,\n },\n });\n };\n\n const _onPromoCodeChange = async (value?: string) => {\n setPromoCode?.(value || '');\n if (!value) {\n setPromoCodeValid(undefined);\n } else if (isValid() && selectedProperty && checkInDate && checkOutDate) {\n const result = await new AvailabilityAPI().fetchAvailability({\n fromDate: checkInDate,\n toDate: checkOutDate,\n adults,\n children,\n infants,\n promoCode: value,\n hotelId: selectedProperty?.id,\n promoOnly: true,\n });\n\n const rate = Object.values(result.ratePlans).find((rate: any) => rate.promoCode === value);\n setPromoCodeValid(!!rate);\n }\n };\n\n const submitButton = (\n <BEButton disabled={!isValid()} className={styles.bookNowBtn} onClick={_onSubmit}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n );\n\n return (\n <>\n <div\n className={classNames(\n styles.content,\n styles[`--${bwContext.layout}`],\n {\n [styles['--vertical']]: bwContext.layout === 'button',\n [styles.inline]: bwContext.type === 'inline',\n },\n classname\n )}\n >\n <>\n <div ref={setHotelContainerRef} className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.ChooseHotel)}</label>\n <BookingWizardHotelSelector\n followElement={hotelContainerRef}\n onChange={(value) => setSelectedProperty(value || undefined)}\n properties={properties}\n selectedProperty={selectedProperty}\n contentClassName={classname}\n />\n </div>\n <div className={styles.divider} />\n </>\n <BookingWizardDateSelector\n onChange={setDate}\n defaultStartDate={defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : undefined}\n defaultEndDate={defaultValues?.checkout ? dayjs(defaultValues?.checkout) : undefined}\n dateFormat={dateFormat}\n />\n\n {hideGuestSelect ? null : (\n <>\n <div className={styles.divider} />\n <div ref={setGuestContainerRef} className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={{\n adults,\n children,\n room,\n }}\n onChange={setGuest}\n disableChild={disableChild}\n disableRoom={disableRoom}\n followElement={guestsContainerRef}\n />\n </div>\n </>\n )}\n <div className={styles.divider} />\n <div className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={{\n adults,\n children,\n room,\n }}\n onChange={setGuest}\n disableChild={disableChild}\n disableInfants={disableInfants}\n disableRoom={disableRoom}\n />\n </div>\n <div className={styles.divider} />\n {hidePromocode || bwContext.layout === 'horizontal-condensed' ? null : (\n <div className={styles.item}>\n <label className={styles.label}>Promocode</label>\n <BookingWizardPromoCode promoCode={promoCode} onChange={_onPromoCodeChange} valid={promoCodeValid} />\n </div>\n )}\n {!(bwContext.layout === 'horizontal-condensed') ? <div className={styles.action}>{submitButton}</div> : null}\n </div>\n\n {bwContext.layout === 'horizontal-condensed' ? (\n <div className={classNames(styles.content, classname)}>\n <div className={classNames(styles.action, styles.centerItems, 'u-marg-top u-marg-top--light@l-')}>{submitButton}</div>\n </div>\n ) : null}\n </>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardContent.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import 'react-spring-bottom-sheet/dist/style.css';\n\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Translation } from '@/translations/Translation';\n\nimport { useCurrentHotel } from '../../../hooks';\nimport BEButton from '../BEButton';\nimport styles from './BookingWizard.module.scss';\nimport { BookingWizardContext, BookingWizardOnBooking } from './BookingWizardContext';\nimport { BookingWizardDateSelector } from './BookingWizardDateSelector/BookingWizardDateSelector';\nimport { BookingWizardGuestSelector } from './BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { BookingWizardHotelSelector } from './BookingWizardHotelSelector/BookingWizardHotelSelector';\nimport { BookingWizardPromoCode } from './BookingWizardPromoCode/BookingWizardPromoCode';\n\nexport interface BookingWizardContentProps {\n defaultColors: BookingWizardProperty['colors'];\n properties: TBookingWizardProperties;\n selectedProperty?: BookingWizardProperty;\n classname?: string;\n disableChild?: boolean;\n disableRoom?: boolean;\n hideGuestSelect?: boolean;\n hidePromocode?: boolean;\n defaultValues?: Partial<Omit<BookingWizardOnBooking, 'id' | 'checkIn' | 'checkout'>> & { checkIn?: string; checkout?: string };\n dateFormat?: string;\n}\n\nexport const BookingWizardContent: React.FC<BookingWizardContentProps> = ({\n properties,\n selectedProperty: defaultProperty,\n defaultColors,\n classname,\n disableChild,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n defaultValues,\n dateFormat,\n}) => {\n const bwContext = useContext(BookingWizardContext);\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const [checkInDate, setCheckInDate] = useState<Dayjs | null>(defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : dayjs());\n const [checkOutDate, setCheckOutDate] = useState<Dayjs | null>(defaultValues?.checkout ? dayjs(defaultValues?.checkout) : dayjs().add(1, 'days'));\n const [adults, setAdults] = useState<number>(defaultValues?.guests?.adults ?? 1);\n const [children, setChildren] = useState<number>(defaultValues?.guests?.children ?? 0);\n const [infants, setInfants] = useState<number>(defaultValues?.guests?.infants ?? 0);\n const [room, setRoom] = useState<number>(defaultValues?.guests?.room ?? 1);\n const [promoCode, setPromoCode] = useState<string>(defaultValues?.promoCode || '');\n const [promoCodeValid, setPromoCodeValid] = useState<boolean>();\n const [selectedProperty, setSelectedProperty] = useState<BookingWizardProperty | undefined>(defaultProperty);\n const [hotelContainerRef, setHotelContainerRef] = useState<HTMLDivElement | null>(null);\n const [guestsContainerRef, setGuestContainerRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (selectedProperty?.colors) {\n RoomstayThemeEngine.changeTheme(selectedProperty.colors);\n } else if (defaultColors) {\n RoomstayThemeEngine.changeTheme(defaultColors);\n }\n }, [selectedProperty]);\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n setAdults(guests.adults);\n setChildren(guests.children);\n setInfants(guests.infants);\n setRoom(guests.room);\n };\n\n const setDate = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n setCheckInDate(startDate);\n setCheckOutDate(endDate);\n };\n\n const isValid = () => {\n if (!selectedProperty) return false;\n if (!checkInDate) return false;\n if (!checkOutDate) return false;\n if (adults + children <= 0) return false;\n\n return true;\n };\n\n const _onSubmit = () => {\n if (!isValid()) return false;\n\n // After passing validation, we pass the function up the chain for the engine\n // Implementor to decide where the user should be redirected to\n // This is to give the hotel team a chance to add tracking, or modify the request on their end.\n bwContext.onSubmit?.({\n id: selectedProperty?.id as string,\n checkIn: checkInDate as Dayjs,\n checkout: checkOutDate as Dayjs,\n promoCode,\n guests: {\n adults,\n children,\n infants,\n room,\n },\n });\n };\n\n const _onPromoCodeChange = async (value?: string) => {\n setPromoCode?.(value || '');\n if (!value) {\n setPromoCodeValid(undefined);\n } else if (isValid() && selectedProperty && checkInDate && checkOutDate) {\n const result = await new AvailabilityAPI().fetchAvailability({\n fromDate: checkInDate,\n toDate: checkOutDate,\n adults,\n children,\n infants,\n promoCode: value,\n hotelId: selectedProperty?.id,\n promoOnly: true,\n });\n\n const rate = Object.values(result.ratePlans).find((rate: any) => rate.promoCode === value);\n setPromoCodeValid(!!rate);\n }\n };\n\n const submitButton = (\n <BEButton disabled={!isValid()} className={styles.bookNowBtn} onClick={_onSubmit}>\n {t(Translation.Misc.BookNow)}\n </BEButton>\n );\n\n return (\n <>\n <div\n className={classNames(\n styles.content,\n styles[`--${bwContext.layout}`],\n {\n [styles['--vertical']]: bwContext.layout === 'button',\n [styles.inline]: bwContext.type === 'inline',\n },\n classname\n )}\n >\n <>\n <div ref={setHotelContainerRef} className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.ChooseHotel)}</label>\n <BookingWizardHotelSelector\n followElement={hotelContainerRef}\n onChange={(value) => setSelectedProperty(value || undefined)}\n properties={properties}\n selectedProperty={selectedProperty}\n contentClassName={classname}\n />\n </div>\n <div className={styles.divider} />\n </>\n <BookingWizardDateSelector\n onChange={setDate}\n defaultStartDate={defaultValues?.checkIn ? dayjs(defaultValues?.checkIn) : undefined}\n defaultEndDate={defaultValues?.checkout ? dayjs(defaultValues?.checkout) : undefined}\n dateFormat={dateFormat}\n />\n\n {hideGuestSelect ? null : (\n <>\n <div className={styles.divider} />\n <div ref={setGuestContainerRef} className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={{\n adults,\n children,\n room,\n }}\n onChange={setGuest}\n disableChild={disableChild}\n disableRoom={disableRoom}\n followElement={guestsContainerRef}\n />\n </div>\n </>\n )}\n <div className={styles.divider} />\n <div className={styles.item}>\n <label className={styles.label}>{t(Translation.Misc.Guests)}</label>\n <BookingWizardGuestSelector\n defaultValue={{\n adults,\n children,\n room,\n }}\n onChange={setGuest}\n disableChild={disableChild}\n disableRoom={disableRoom}\n />\n </div>\n <div className={styles.divider} />\n {hidePromocode || bwContext.layout === 'horizontal-condensed' ? null : (\n <div className={styles.item}>\n <label className={styles.label}>Promocode</label>\n <BookingWizardPromoCode promoCode={promoCode} onChange={_onPromoCodeChange} valid={promoCodeValid} />\n </div>\n )}\n {!(bwContext.layout === 'horizontal-condensed') ? <div className={styles.action}>{submitButton}</div> : null}\n </div>\n\n {bwContext.layout === 'horizontal-condensed' ? (\n <div className={classNames(styles.content, classname)}>\n <div className={classNames(styles.action, styles.centerItems, 'u-marg-top u-marg-top--light@l-')}>{submitButton}</div>\n </div>\n ) : null}\n </>\n );\n};\n"]}
|
|
@@ -38,13 +38,15 @@ const Overlay_1 = require("../../Overlay/Overlay");
|
|
|
38
38
|
const Text_1 = __importStar(require("../../Text"));
|
|
39
39
|
const Translation_1 = require("../../../../translations/Translation");
|
|
40
40
|
const StringHelper_1 = __importDefault(require("../../../../util/StringHelper"));
|
|
41
|
+
const hooks_1 = require("../../../../hooks");
|
|
41
42
|
const BookingWizardBottomSheet_1 = __importDefault(require("../BookingWizardBottomSheet/BookingWizardBottomSheet"));
|
|
42
43
|
const BookingWizardContext_1 = require("../BookingWizardContext");
|
|
43
44
|
const BookingWizardGuestSelector_module_scss_1 = __importDefault(require("./BookingWizardGuestSelector.module.scss"));
|
|
44
|
-
const BookingWizardGuestSelector = ({ disableChild,
|
|
45
|
+
const BookingWizardGuestSelector = ({ disableChild, disableRoom, defaultValue, followElement, onChange }) => {
|
|
45
46
|
var _a, _b, _c, _d;
|
|
46
47
|
const { overlay, type: overlayType, layout, isSmallContainer } = (0, BookingWizardContext_1.useBookingWizard)();
|
|
47
48
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
49
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
48
50
|
const ref = (0, react_1.useRef)(null);
|
|
49
51
|
const targetRef = (0, react_1.useRef)(null);
|
|
50
52
|
const [adults, setAdults] = (0, react_1.useState)((_a = defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.adults) !== null && _a !== void 0 ? _a : 1);
|
|
@@ -90,6 +92,7 @@ const BookingWizardGuestSelector = ({ disableChild, disableInfants, disableRoom,
|
|
|
90
92
|
return parts.join(' - ');
|
|
91
93
|
};
|
|
92
94
|
const inner = (applyButton = true) => {
|
|
95
|
+
var _a;
|
|
93
96
|
return (react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default['popper--box'] },
|
|
94
97
|
react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default['popper--content'], ref: ref },
|
|
95
98
|
react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
|
|
@@ -98,9 +101,9 @@ const BookingWizardGuestSelector = ({ disableChild, disableInfants, disableRoom,
|
|
|
98
101
|
disableChild ? null : (react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
|
|
99
102
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingChildren, 'Child', t)),
|
|
100
103
|
react_1.default.createElement(NumberIncrement_1.default, { number: editingChildren, min: 0, max: 10, onChange: applyButton ? setEditingChildren : setChildren, textSize: Text_1.TextType.Small }))),
|
|
101
|
-
|
|
104
|
+
((_a = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _a === void 0 ? void 0 : _a.supportInfants) ? (react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
|
|
102
105
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingInfants, 'Infant', t)),
|
|
103
|
-
react_1.default.createElement(NumberIncrement_1.default, { number: editingInfants, min: 0, max: 10, onChange: applyButton ? setEditingInfants : setInfants, textSize: Text_1.TextType.Small }))),
|
|
106
|
+
react_1.default.createElement(NumberIncrement_1.default, { number: editingInfants, min: 0, max: 10, onChange: applyButton ? setEditingInfants : setInfants, textSize: Text_1.TextType.Small }))) : null,
|
|
104
107
|
disableRoom ? null : (react_1.default.createElement("div", { className: BookingWizardGuestSelector_module_scss_1.default.row },
|
|
105
108
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, StringHelper_1.default.plural(editingRoom, 'Room', t)),
|
|
106
109
|
react_1.default.createElement(NumberIncrement_1.default, { number: editingRoom, min: 1, max: 10, onChange: applyButton ? setEditingRoom : setRoom, textSize: Text_1.TextType.Small }))),
|
|
@@ -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 disableInfants?: boolean;\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}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({ disableChild, disableInfants, disableRoom, defaultValue, followElement, onChange }) => {\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 number={editingAdults} min={1} max={10} onChange={applyButton ? setEditingAdults : setAdults} textSize={TextType.Small} />\n </div>\n {disableChild ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingChildren, 'Child', t)}</Text>\n <NumberIncrement number={editingChildren} min={0} max={10} onChange={applyButton ? setEditingChildren : setChildren} textSize={TextType.Small} />\n </div>\n )}\n {disableInfants ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingInfants, 'Infant', t)}</Text>\n <NumberIncrement number={editingInfants} min={0} max={10} onChange={applyButton ? setEditingInfants : setInfants} textSize={TextType.Small} />\n </div>\n )}\n {disableRoom ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingRoom, 'Room', t)}</Text>\n <NumberIncrement number={editingRoom} min={1} max={10} onChange={applyButton ? setEditingRoom : setRoom} textSize={TextType.Small} />\n </div>\n )}\n {applyButton ? (\n <div className={styles['popper--action']}>\n <BEButton\n wide={overlayType === 'bottom-sheet'}\n className={classNames(styles.applyBtn, {\n [styles['--booking-summary']]: layout === 'booking-summary',\n })}\n onClick={onApply}\n >\n {t(Translation.Misc.Apply)}\n </BEButton>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n if (overlayType === 'inline') {\n return (\n <div className={styles.popper}>\n <AutoAutoHeight open={open}>{inner(false)}</AutoAutoHeight>\n </div>\n );\n }\n\n if (['bottom-sheet', 'top-sheet'].includes(overlayType)) {\n return (\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'])}\n open={open}\n onDismiss={() => setOpen(false)}\n header={\n <div className={styles.header}>\n <Text>{t(Translation.Misc.HowManyGuests)}</Text> <Icon icon={IconType.Close} onClick={() => setOpen(false)} />\n </div>\n }\n {...('top-sheet' === overlayType && {\n snapPoints: ({ maxHeight }) => [maxHeight],\n })}\n >\n <div className={styles.popper}>{inner()} </div>\n </BookingWizardBottomSheet>\n );\n }\n\n return (\n <Overlay\n offset={overlay?.offset}\n usePortal={false}\n followElement={followElement || targetRef.current}\n placement={overlay?.placement}\n fallbackPlacements={overlay?.fallbackPlacements}\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(!open)}\n className={styles.popper}\n containerClassName={classNames(styles['custom-overlay'], { [styles['small-container']]: isSmallContainer })}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n return (\n <div\n ref={targetRef}\n className={classNames(styles.container, {\n [styles['--inline']]: overlayType === 'inline',\n [styles['--open']]: open,\n })}\n >\n <div className={classNames(styles['container--search'])} onClick={() => setOpen?.(!open)}>\n <Text\n className={classNames(styles['text-display'], {\n [styles['--line-1']]: layout === 'horizontal-condensed',\n [styles['--line-booking-summary']]: layout === 'booking-summary',\n })}\n bold\n >\n {getValueAsText()}\n </Text>\n\n {['horizontal-condensed', 'booking-summary'].includes(layout) ? null : <Icon icon={IconType.Dropdown} />}\n </div>\n\n {content()}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"BookingWizardGuestSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,+CAA+D;AAC/D,iDAA+C;AAE/C,iFAAyD;AACzD,6EAAqD;AACrD,uEAAgE;AAChE,2FAAmE;AACnE,kEAA+D;AAC/D,kEAA2D;AAC3D,4DAAyD;AACzD,uEAA+C;AAE/C,6CAAoD;AACpD,oHAA4F;AAC5F,kEAA2D;AAC3D,sHAA8D;AAUvD,MAAM,0BAA0B,GAAwC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;;IACpJ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACpF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,SAAS,CAAC,aAAa,CAAC,CAAC;QACzB,WAAW,CAAC,eAAe,CAAC,CAAC;QAC7B,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,IAAI,MAAM,KAAK,sBAAsB,EAAE;YACnC,OAAO,MAAM,GAAG,QAAQ,CAAC;SAC5B;QAED,IAAI,MAAM,KAAK,iBAAiB,EAAE;YAC9B,OAAO,sBAAY,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;SAChF;QAED,MAAM,KAAK,GAAG,CAAC,sBAAY,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE;;QACjC,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,aAAa,CAAC;YACjC,uCAAK,SAAS,EAAE,gDAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG;gBAC/C,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;oBACnF,8BAAC,yBAAe,IAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CACzI;gBACL,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAQ;oBACrF,8BAAC,yBAAe,IAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CAC/I,CACT;gBACA,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,0CAAE,cAAc,EAAC,CAAC,CAAC,CACzC,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAQ;oBACrF,8BAAC,yBAAe,IAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CAC5I,CACT,CAAC,CAAC,CAAC,IAAI;gBACP,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,uCAAK,SAAS,EAAE,gDAAM,CAAC,GAAG;oBACtB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,sBAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAQ;oBAChF,8BAAC,yBAAe,IAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CACnI,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC;oBACpC,8BAAC,kBAAQ,IACL,IAAI,EAAE,WAAW,KAAK,cAAc,EACpC,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,QAAQ,EAAE;4BACnC,CAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;yBAC9D,CAAC,EACF,OAAO,EAAE,OAAO,IAEf,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CACT,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC1B,OAAO,CACH,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;gBACzB,8BAAC,wBAAc,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAC,KAAK,CAAC,CAAkB,CACzD,CACT,CAAC;SACL;QAED,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrD,OAAO,CACH,8BAAC,kCAAwB,kBACrB,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE,gDAAM,CAAC,gBAAgB,CAAC,CAAC,EACjE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC/B,MAAM,EACF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBACzB,8BAAC,cAAI,QAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAQ;;oBAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,CAC5G,IAEN,CAAC,WAAW,KAAK,WAAW,IAAI;gBAChC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;aAC7C,CAAC;gBAEF,uCAAK,SAAS,EAAE,gDAAM,CAAC,MAAM;oBAAG,KAAK,EAAE;wBAAQ,CACxB,CAC9B,CAAC;SACL;QAED,OAAO,CACH,8BAAC,iBAAO,IACJ,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EACvB,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,aAAa,IAAI,SAAS,CAAC,OAAO,EACjD,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC7B,kBAAkB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,EAC/C,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC,EAC/B,SAAS,EAAE,gDAAM,CAAC,MAAM,EACxB,kBAAkB,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gDAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAC3G,UAAU,UAET,KAAK,EAAE,CACF,CACb,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACH,uCACI,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,SAAS,EAAE;YACpC,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,KAAK,QAAQ;YAC9C,CAAC,gDAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI;SAC3B,CAAC;QAEF,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC;YACpF,8BAAC,cAAI,IACD,SAAS,EAAE,IAAA,oBAAU,EAAC,gDAAM,CAAC,cAAc,CAAC,EAAE;oBAC1C,CAAC,gDAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,KAAK,sBAAsB;oBACvD,CAAC,gDAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB;iBACnE,CAAC,EACF,IAAI,UAEH,cAAc,EAAE,CACd;YAEN,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CACtG;QAEL,OAAO,EAAE,CACR,CACT,CAAC;AACN,CAAC,CAAC;AAnLW,QAAA,0BAA0B,8BAmLrC","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 { useCurrentHotel } from '../../../../hooks';\nimport BookingWizardBottomSheet from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardGuestSelector.module.scss';\n\nexport interface BookingWizardGuestSelectorProps {\n disableChild?: boolean;\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}\n\nexport const BookingWizardGuestSelector: FC<BookingWizardGuestSelectorProps> = ({ disableChild, disableRoom, defaultValue, followElement, onChange }) => {\n const { overlay, type: overlayType, layout, isSmallContainer } = useBookingWizard();\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\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 number={editingAdults} min={1} max={10} onChange={applyButton ? setEditingAdults : setAdults} textSize={TextType.Small} />\n </div>\n {disableChild ? null : (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingChildren, 'Child', t)}</Text>\n <NumberIncrement number={editingChildren} min={0} max={10} onChange={applyButton ? setEditingChildren : setChildren} textSize={TextType.Small} />\n </div>\n )}\n {hotel?.childConfiguration?.supportInfants ? (\n <div className={styles.row}>\n <Text type={TextType.Small}>{StringHelper.plural(editingInfants, 'Infant', t)}</Text>\n <NumberIncrement number={editingInfants} min={0} max={10} onChange={applyButton ? setEditingInfants : setInfants} textSize={TextType.Small} />\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 number={editingRoom} min={1} max={10} onChange={applyButton ? setEditingRoom : setRoom} textSize={TextType.Small} />\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"]}
|
|
@@ -126,10 +126,15 @@ function PromoCodeInput(props) {
|
|
|
126
126
|
pressedChange && (react_1.default.createElement(Tooltip_1.default, { title: "Promo code loading" },
|
|
127
127
|
react_1.default.createElement("div", { className: "people-picker--promo-icon" },
|
|
128
128
|
react_1.default.createElement(SmallSpinner_1.default, null))))),
|
|
129
|
-
props.
|
|
130
|
-
react_1.default.createElement(
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
!props.hideValidText && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
130
|
+
props.valid === true && (react_1.default.createElement("div", { className: "u-marg-top" },
|
|
131
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Success }, t(Translation_1.Translation.Step.Date.PromoCodeValidation.Valid, {
|
|
132
|
+
value: props.value,
|
|
133
|
+
})))),
|
|
134
|
+
props.valid === false && (react_1.default.createElement("div", { className: "u-marg-top" },
|
|
135
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Alert }, t(Translation_1.Translation.Step.Date.PromoCodeValidation.Invalid, {
|
|
136
|
+
value: props.value,
|
|
137
|
+
}))))))));
|
|
133
138
|
}
|
|
134
139
|
exports.default = PromoCodeInput;
|
|
135
140
|
//# sourceMappingURL=PromoCodeInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport styles from '@/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { Color } from '@/util/Color';\n\nimport TextBox from './TextBox';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n variant?: 'outlined' | 'text';\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter') {\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n {props.variant === 'text' ? (\n <input\n className={classNames(styles.container, { [styles['--error']]: promoCodeStatus === 'error', [styles['--success']]: promoCodeStatus === 'success' })}\n type=\"text\"\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCodePlaceHolder)}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n ) : (\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n )}\n\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {/* {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )} */}\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {t(Translation.Step.Date.PromoCodeValidation.Invalid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport styles from '@/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { Color } from '@/util/Color';\n\nimport TextBox from './TextBox';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n variant?: 'outlined' | 'text';\n\n hideValidText?: boolean;\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter') {\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n {props.variant === 'text' ? (\n <input\n className={classNames(styles.container, { [styles['--error']]: promoCodeStatus === 'error', [styles['--success']]: promoCodeStatus === 'success' })}\n type=\"text\"\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCodePlaceHolder)}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n ) : (\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n )}\n\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {!props.hideValidText && (\n <>\n {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {t(Translation.Step.Date.PromoCodeValidation.Invalid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -65,7 +65,6 @@ const Validation_1 = require("../../../util/Validation");
|
|
|
65
65
|
const RoomContactDetails = () => {
|
|
66
66
|
const { register, formState, control, watch, getValues, setValue } = (0, react_hook_form_1.useFormContext)();
|
|
67
67
|
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
68
|
-
const { engine } = (0, contexts_1.useBookingEngine)();
|
|
69
68
|
const basketRows = basketContext.getAllValidRows();
|
|
70
69
|
const basketAddonRows = basketContext.basketAddonRows;
|
|
71
70
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
@@ -155,7 +154,7 @@ const RoomContactDetails = () => {
|
|
|
155
154
|
return null;
|
|
156
155
|
};
|
|
157
156
|
return (react_1.default.createElement(react_1.default.Fragment, null, fields.map((field, index) => {
|
|
158
|
-
var _a, _b;
|
|
157
|
+
var _a, _b, _c;
|
|
159
158
|
const padInputName = (name) => padInputNameByRoomNumber(name, index);
|
|
160
159
|
const getValidationClass = (name) => {
|
|
161
160
|
var _a, _b, _c;
|
|
@@ -205,9 +204,9 @@ const RoomContactDetails = () => {
|
|
|
205
204
|
StringHelper_1.default.pluralWithDictAndCount(basketRow.getAdults(), Translation_1.Translation.Step.Date.Adult, t),
|
|
206
205
|
",\u00A0",
|
|
207
206
|
StringHelper_1.default.pluralWithDictAndCount(basketRow.getChildren(), Translation_1.Translation.Step.Date.Child, t),
|
|
208
|
-
|
|
207
|
+
((_c = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _c === void 0 ? void 0 : _c.supportInfants) ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
209
208
|
",\u00A0",
|
|
210
|
-
StringHelper_1.default.pluralWithDictAndCount(basketRow.getInfants(), Translation_1.Translation.Step.Date.Infant, t)))),
|
|
209
|
+
StringHelper_1.default.pluralWithDictAndCount(basketRow.getInfants(), Translation_1.Translation.Step.Date.Infant, t))) : null),
|
|
211
210
|
react_1.default.createElement("div", { className: "step-one-status--dates u-flex justify-content-start" },
|
|
212
211
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Accent },
|
|
213
212
|
react_1.default.createElement("strong", null, basketRow.getStartDate().format('ddd, MMM D'))),
|