@roomstay/frontend 2.6.58 → 2.6.60
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/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +1 -1
- package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +9 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js +86 -1
- package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +14 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +27 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +19 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +116 -30
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +12 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +6 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +96 -29
- package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +18 -3
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +118 -27
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +53 -18
- package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +5 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +6 -0
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +8 -7
- package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.d.ts +2 -0
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +11 -2
- package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +22 -5
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/room/ImageGallerySlider.js +5 -3
- package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +7 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +47 -21
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +3 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +7 -6
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +9 -2
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.d.ts +4 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +28 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +202 -41
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +4 -0
- package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.js +15 -4
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +1 -1
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +7 -1
- package/dist/src/translations/Translation.js +7 -1
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +7 -1
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -1
- package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
- package/package.json +1 -1
|
@@ -43,7 +43,7 @@ function BookNowPayLaterInfoBlock() {
|
|
|
43
43
|
url = (_b = (_a = hotel.bestRateNoBSUrl) !== null && _a !== void 0 ? _a : hotel.bookNowPayLaterUrl) !== null && _b !== void 0 ? _b : hotel.privacyPolicyUrl;
|
|
44
44
|
}
|
|
45
45
|
const titleTranslation = t(Translation_1.Translation.Custom.BookNowPayLaterInfoBlock.BookNowPayLater);
|
|
46
|
-
return titleTranslation ? (react_1.default.createElement("div", { className: "u-marg-bottom u-border-rounded", style: { padding: '16px 30px', backgroundColor: Color_1.Color.Accent2 } },
|
|
46
|
+
return titleTranslation ? (react_1.default.createElement("div", { className: "rs-book-now-pay-later-info-block u-marg-bottom u-border-rounded", style: { padding: '16px 30px', backgroundColor: Color_1.Color.Accent2 } },
|
|
47
47
|
react_1.default.createElement("div", { className: "u-flex u-flex-flex-start u-flex-align-center" },
|
|
48
48
|
react_1.default.createElement(BookNowPayLaterIcon_1.default, { width: 40, height: 40 }),
|
|
49
49
|
react_1.default.createElement("div", { className: "u-marg-left--med" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookNowPayLaterInfoBlock.js","sourceRoot":"/","sources":["src/components/generic/BookNowPayLaterInfoBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAA4C;AAC5C,iDAA+C;AAC/C,0DAAuD;AAEvD,kEAA2D;AAC3D,0GAAkF;AAClF,wCAAqC;AAErC,SAAgB,wBAAwB;;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,EAAE;QACP,GAAG,GAAG,MAAA,MAAA,KAAK,CAAC,eAAe,mCAAI,KAAK,CAAC,kBAAkB,mCAAI,KAAK,CAAC,gBAAgB,CAAC;KACrF;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,yBAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAExF,OAAO,gBAAgB,CAAC,CAAC,CAAC,CACtB,uCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"BookNowPayLaterInfoBlock.js","sourceRoot":"/","sources":["src/components/generic/BookNowPayLaterInfoBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAA4C;AAC5C,iDAA+C;AAC/C,0DAAuD;AAEvD,kEAA2D;AAC3D,0GAAkF;AAClF,wCAAqC;AAErC,SAAgB,wBAAwB;;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,EAAE;QACP,GAAG,GAAG,MAAA,MAAA,KAAK,CAAC,eAAe,mCAAI,KAAK,CAAC,kBAAkB,mCAAI,KAAK,CAAC,gBAAgB,CAAC;KACrF;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,yBAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAExF,OAAO,gBAAgB,CAAC,CAAC,CAAC,CACtB,uCAAK,SAAS,EAAC,iEAAiE,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAK,CAAC,OAAO,EAAE;QAC5I,uCAAK,SAAS,EAAC,8CAA8C;YACzD,8BAAC,6BAAmB,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI;YAC9C,uCAAK,SAAS,EAAC,kBAAkB;gBAC7B,8BAAC,cAAI,IAAC,IAAI,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAC1B,gBAAgB,CACd;gBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;oBACrB,CAAC,CAAC,yBAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;oBAAE,GAAG;oBACvE,qCAAG,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,IACzE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAClC;wBAED,CACL,CACJ,CACJ,CACT,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC;AA9BD,4DA8BC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React, { ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Text, { TextType } from '@/components/generic/Text';\nimport BookNowPayLaterIcon from '@/components/iconComponents/BookNowPayLaterIcon';\nimport { Color } from '@/util/Color';\n\nexport function BookNowPayLaterInfoBlock(): ReactElement | null {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n let url = '';\n if (hotel) {\n url = hotel.bestRateNoBSUrl ?? hotel.bookNowPayLaterUrl ?? hotel.privacyPolicyUrl;\n }\n\n const titleTranslation = t(Translation.Custom.BookNowPayLaterInfoBlock.BookNowPayLater);\n\n return titleTranslation ? (\n <div className=\"rs-book-now-pay-later-info-block u-marg-bottom u-border-rounded\" style={{ padding: '16px 30px', backgroundColor: Color.Accent2 }}>\n <div className=\"u-flex u-flex-flex-start u-flex-align-center\">\n <BookNowPayLaterIcon width={40} height={40} />\n <div className=\"u-marg-left--med\">\n <Text bold type={TextType.Small}>\n {titleTranslation}\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Custom.BookNowPayLaterInfoBlock.IfYourDreamsChange)}{' '}\n <a style={{ color: Color.Accent }} href={url} target=\"_blank\" rel=\"noreferrer\">\n {t(Translation.Step.Room.ReadMore)}\n </a>\n .\n </Text>\n </div>\n </div>\n </div>\n ) : null;\n}\n"]}
|
|
@@ -5,12 +5,20 @@ import { BookingWizardProperty } from '../../../models/BookingWizard/BookingWiza
|
|
|
5
5
|
import { TBookingWizardProperties } from '../../../models/BookingWizard/BookingWizardTypes';
|
|
6
6
|
export declare enum EBookingWizardTheme {
|
|
7
7
|
Default = "default",
|
|
8
|
-
Specific = "specific"
|
|
8
|
+
Specific = "specific",
|
|
9
|
+
Images = "images"
|
|
9
10
|
}
|
|
10
11
|
export declare enum EBookingWizardOverlayDirection {
|
|
11
12
|
Upward = "upward",
|
|
12
13
|
Downward = "downward"
|
|
13
14
|
}
|
|
15
|
+
export declare enum EBookingWizardSection {
|
|
16
|
+
Property = "property",
|
|
17
|
+
Date = "date",
|
|
18
|
+
Guest = "guest",
|
|
19
|
+
Promo = "promo"
|
|
20
|
+
}
|
|
21
|
+
export declare const StateSectionsDefault: BookingWizardContextType['stateSections'];
|
|
14
22
|
export interface BookingWizardProps extends BookingWizardContentProps {
|
|
15
23
|
layout?: BookingWizardLayout;
|
|
16
24
|
theme?: BookingWizardTheme;
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.EBookingWizardOverlayDirection = exports.EBookingWizardTheme = void 0;
|
|
29
|
+
exports.StateSectionsDefault = exports.EBookingWizardSection = exports.EBookingWizardOverlayDirection = exports.EBookingWizardTheme = void 0;
|
|
30
30
|
const classnames_1 = __importDefault(require("classnames"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const react_i18next_1 = require("react-i18next");
|
|
@@ -44,12 +44,26 @@ var EBookingWizardTheme;
|
|
|
44
44
|
(function (EBookingWizardTheme) {
|
|
45
45
|
EBookingWizardTheme["Default"] = "default";
|
|
46
46
|
EBookingWizardTheme["Specific"] = "specific";
|
|
47
|
+
EBookingWizardTheme["Images"] = "images";
|
|
47
48
|
})(EBookingWizardTheme = exports.EBookingWizardTheme || (exports.EBookingWizardTheme = {}));
|
|
48
49
|
var EBookingWizardOverlayDirection;
|
|
49
50
|
(function (EBookingWizardOverlayDirection) {
|
|
50
51
|
EBookingWizardOverlayDirection["Upward"] = "upward";
|
|
51
52
|
EBookingWizardOverlayDirection["Downward"] = "downward";
|
|
52
53
|
})(EBookingWizardOverlayDirection = exports.EBookingWizardOverlayDirection || (exports.EBookingWizardOverlayDirection = {}));
|
|
54
|
+
var EBookingWizardSection;
|
|
55
|
+
(function (EBookingWizardSection) {
|
|
56
|
+
EBookingWizardSection["Property"] = "property";
|
|
57
|
+
EBookingWizardSection["Date"] = "date";
|
|
58
|
+
EBookingWizardSection["Guest"] = "guest";
|
|
59
|
+
EBookingWizardSection["Promo"] = "promo";
|
|
60
|
+
})(EBookingWizardSection = exports.EBookingWizardSection || (exports.EBookingWizardSection = {}));
|
|
61
|
+
exports.StateSectionsDefault = {
|
|
62
|
+
[EBookingWizardSection.Property]: { opening: false, isFirst: false, hidden: false, inactive: false },
|
|
63
|
+
[EBookingWizardSection.Date]: { opening: false, isFirst: false, hidden: false, inactive: false },
|
|
64
|
+
[EBookingWizardSection.Guest]: { opening: false, isFirst: false, hidden: false, inactive: false },
|
|
65
|
+
[EBookingWizardSection.Promo]: { opening: false, isFirst: false, hidden: false, inactive: false },
|
|
66
|
+
};
|
|
53
67
|
const BookingWizard = (props) => {
|
|
54
68
|
const { layout = 'horizontal', theme = EBookingWizardTheme.Default, onSubmit, wrapperClassname, contentClassname: contentClassnameProps, selectedProperty, properties, defaultColors, maxAdults, disableChild, showInfants, disableRoom, hideGuestSelect, hidePromocode, hideProperty, defaultValues, overlayDirection = EBookingWizardOverlayDirection.Downward, } = props;
|
|
55
69
|
const [isOpen, setIsOpen] = react_1.default.useState(false);
|
|
@@ -85,13 +99,78 @@ const BookingWizard = (props) => {
|
|
|
85
99
|
setOverlayPlacement(overlayDirection === EBookingWizardOverlayDirection.Downward ? 'bottom' : 'top');
|
|
86
100
|
}
|
|
87
101
|
}, [isMobile]);
|
|
102
|
+
const isImagesTheme = theme === EBookingWizardTheme.Images;
|
|
88
103
|
const classes = (0, classnames_1.default)(BookingWizard_module_scss_1.default.container, {
|
|
89
104
|
[BookingWizard_module_scss_1.default['--theme-specific']]: theme === EBookingWizardTheme.Specific,
|
|
90
105
|
[BookingWizard_module_scss_1.default['--theme-default']]: theme === EBookingWizardTheme.Default,
|
|
106
|
+
[BookingWizard_module_scss_1.default['--theme-images']]: isImagesTheme,
|
|
91
107
|
[BookingWizard_module_scss_1.default['--theme-condensed']]: layout === 'horizontal-condensed',
|
|
92
108
|
[BookingWizard_module_scss_1.default['--in-small-container']]: isSmallContainer,
|
|
93
109
|
}, wrapperClassname);
|
|
94
110
|
const contentClassname = (0, classnames_1.default)(contentClassnameProps, { [BookingWizard_module_scss_1.default['--in-small-container']]: isSmallContainer });
|
|
111
|
+
const isImagesThemeMobile = isImagesTheme && isSmallContainer;
|
|
112
|
+
const [activeSection, setActiveSection] = (0, react_1.useState)(null);
|
|
113
|
+
const [availableSections, setAvailableSections] = (0, react_1.useState)([]);
|
|
114
|
+
const [stateSections, setStateSections] = (0, react_1.useState)(exports.StateSectionsDefault);
|
|
115
|
+
(0, react_1.useEffect)(() => {
|
|
116
|
+
const isPromoHidden = hidePromocode || layout === 'horizontal-condensed' || isImagesThemeMobile;
|
|
117
|
+
const isPropertyHidden = !!hideProperty;
|
|
118
|
+
const isGuestHidden = !!hideGuestSelect;
|
|
119
|
+
const state = {
|
|
120
|
+
[EBookingWizardSection.Property]: {
|
|
121
|
+
hidden: isPropertyHidden,
|
|
122
|
+
isFirst: !isPropertyHidden,
|
|
123
|
+
opening: EBookingWizardSection.Property === activeSection,
|
|
124
|
+
inactive: isPropertyHidden || (isImagesThemeMobile && activeSection !== null && activeSection !== EBookingWizardSection.Property),
|
|
125
|
+
},
|
|
126
|
+
[EBookingWizardSection.Date]: {
|
|
127
|
+
hidden: false,
|
|
128
|
+
isFirst: isPropertyHidden,
|
|
129
|
+
opening: EBookingWizardSection.Date === activeSection,
|
|
130
|
+
inactive: (isImagesThemeMobile && isPropertyHidden && activeSection === null) || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Date),
|
|
131
|
+
},
|
|
132
|
+
[EBookingWizardSection.Guest]: {
|
|
133
|
+
hidden: isGuestHidden,
|
|
134
|
+
isFirst: false,
|
|
135
|
+
opening: EBookingWizardSection.Guest === activeSection,
|
|
136
|
+
inactive: isGuestHidden || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Guest),
|
|
137
|
+
},
|
|
138
|
+
[EBookingWizardSection.Promo]: {
|
|
139
|
+
hidden: isPromoHidden,
|
|
140
|
+
isFirst: false,
|
|
141
|
+
opening: EBookingWizardSection.Promo === activeSection,
|
|
142
|
+
inactive: isPromoHidden || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Promo),
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
// Extract available (i.e., not hidden) sections from state
|
|
146
|
+
const enabled = Object.entries(state)
|
|
147
|
+
.filter(([, value]) => !value.hidden)
|
|
148
|
+
.map(([key]) => key);
|
|
149
|
+
setAvailableSections(enabled);
|
|
150
|
+
// If all inactive are true, then find the first section with hidden === false and set its inactive to false.
|
|
151
|
+
const allInactive = Object.values(state).every((s) => s.inactive);
|
|
152
|
+
if (allInactive) {
|
|
153
|
+
const sections = [EBookingWizardSection.Property, EBookingWizardSection.Date, EBookingWizardSection.Guest, EBookingWizardSection.Promo];
|
|
154
|
+
for (const section of sections) {
|
|
155
|
+
if (!state[section].hidden) {
|
|
156
|
+
state[section].opening = false;
|
|
157
|
+
state[section].inactive = false;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
setStateSections(state);
|
|
163
|
+
}, [layout, hideProperty, hideGuestSelect, hidePromocode, activeSection, isImagesTheme, isImagesThemeMobile]);
|
|
164
|
+
const navigateSection = (currentSection, direction) => {
|
|
165
|
+
var _a;
|
|
166
|
+
if (!currentSection)
|
|
167
|
+
return;
|
|
168
|
+
const currentIndex = availableSections.indexOf(currentSection);
|
|
169
|
+
const targetSection = (_a = availableSections[currentIndex + direction]) !== null && _a !== void 0 ? _a : null;
|
|
170
|
+
setActiveSection(targetSection);
|
|
171
|
+
};
|
|
172
|
+
const onNextHandler = (section) => navigateSection(section, 1);
|
|
173
|
+
const onPrevHandler = (section) => navigateSection(section, -1);
|
|
95
174
|
const bookingWizardContext = {
|
|
96
175
|
layout,
|
|
97
176
|
theme,
|
|
@@ -106,6 +185,12 @@ const BookingWizard = (props) => {
|
|
|
106
185
|
fallbackPlacements: overlayPlacement,
|
|
107
186
|
dateOffset: dateSelectorOverlayOffset,
|
|
108
187
|
},
|
|
188
|
+
isImagesTheme,
|
|
189
|
+
isImagesThemeMobile,
|
|
190
|
+
activeSection,
|
|
191
|
+
stateSections,
|
|
192
|
+
onNextHandler,
|
|
193
|
+
onPrevHandler,
|
|
109
194
|
};
|
|
110
195
|
if (layout === 'button') {
|
|
111
196
|
return (react_1.default.createElement("div", { className: classes },
|
|
@@ -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 enum EBookingWizardOverlayDirection {\n Upward = 'upward',\n Downward = 'downward',\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 overlayDirection?: EBookingWizardOverlayDirection;\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 maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n hideProperty,\n defaultValues,\n overlayDirection = EBookingWizardOverlayDirection.Downward,\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 if (!bounds.width) return false;\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 } 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(overlayDirection === EBookingWizardOverlayDirection.Downward ? 'bottom-start' : 'top-start');\n } else {\n setOverlayPlacement(overlayDirection === EBookingWizardOverlayDirection.Downward ? 'bottom' : 'top');\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 maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n defaultValues={defaultValues}\n hideGuestSelect={hideGuestSelect}\n hidePromocode={hidePromocode}\n hideProperty={hideProperty}\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"]}
|
|
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 Images = 'images',\n}\n\nexport enum EBookingWizardOverlayDirection {\n Upward = 'upward',\n Downward = 'downward',\n}\n\nexport enum EBookingWizardSection {\n Property = 'property',\n Date = 'date',\n Guest = 'guest',\n Promo = 'promo',\n}\n\nexport const StateSectionsDefault: BookingWizardContextType['stateSections'] = {\n [EBookingWizardSection.Property]: { opening: false, isFirst: false, hidden: false, inactive: false },\n [EBookingWizardSection.Date]: { opening: false, isFirst: false, hidden: false, inactive: false },\n [EBookingWizardSection.Guest]: { opening: false, isFirst: false, hidden: false, inactive: false },\n [EBookingWizardSection.Promo]: { opening: false, isFirst: false, hidden: false, inactive: false },\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 overlayDirection?: EBookingWizardOverlayDirection;\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 maxAdults,\n disableChild,\n showInfants,\n disableRoom,\n hideGuestSelect,\n hidePromocode,\n hideProperty,\n defaultValues,\n overlayDirection = EBookingWizardOverlayDirection.Downward,\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 if (!bounds.width) return false;\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 } 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(overlayDirection === EBookingWizardOverlayDirection.Downward ? 'bottom-start' : 'top-start');\n } else {\n setOverlayPlacement(overlayDirection === EBookingWizardOverlayDirection.Downward ? 'bottom' : 'top');\n }\n }, [isMobile]);\n\n const isImagesTheme = theme === EBookingWizardTheme.Images;\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-images']]: isImagesTheme,\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 isImagesThemeMobile = isImagesTheme && isSmallContainer;\n const [activeSection, setActiveSection] = useState<EBookingWizardSection | null>(null);\n const [availableSections, setAvailableSections] = useState<EBookingWizardSection[]>([]);\n const [stateSections, setStateSections] = useState<BookingWizardContextType['stateSections']>(StateSectionsDefault);\n\n useEffect(() => {\n const isPromoHidden = hidePromocode || layout === 'horizontal-condensed' || isImagesThemeMobile;\n const isPropertyHidden = !!hideProperty;\n const isGuestHidden = !!hideGuestSelect;\n\n const state: BookingWizardContextType['stateSections'] = {\n [EBookingWizardSection.Property]: {\n hidden: isPropertyHidden,\n isFirst: !isPropertyHidden,\n opening: EBookingWizardSection.Property === activeSection,\n inactive: isPropertyHidden || (isImagesThemeMobile && activeSection !== null && activeSection !== EBookingWizardSection.Property),\n },\n [EBookingWizardSection.Date]: {\n hidden: false,\n isFirst: isPropertyHidden,\n opening: EBookingWizardSection.Date === activeSection,\n inactive: (isImagesThemeMobile && isPropertyHidden && activeSection === null) || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Date),\n },\n [EBookingWizardSection.Guest]: {\n hidden: isGuestHidden,\n isFirst: false,\n opening: EBookingWizardSection.Guest === activeSection,\n inactive: isGuestHidden || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Guest),\n },\n [EBookingWizardSection.Promo]: {\n hidden: isPromoHidden,\n isFirst: false,\n opening: EBookingWizardSection.Promo === activeSection,\n inactive: isPromoHidden || (isImagesThemeMobile && activeSection !== EBookingWizardSection.Promo),\n },\n };\n\n // Extract available (i.e., not hidden) sections from state\n const enabled = Object.entries(state)\n .filter(([, value]) => !value.hidden)\n .map(([key]) => key as EBookingWizardSection);\n setAvailableSections(enabled);\n\n // If all inactive are true, then find the first section with hidden === false and set its inactive to false.\n const allInactive = Object.values(state).every((s) => s.inactive);\n if (allInactive) {\n const sections: EBookingWizardSection[] = [EBookingWizardSection.Property, EBookingWizardSection.Date, EBookingWizardSection.Guest, EBookingWizardSection.Promo];\n for (const section of sections) {\n if (!state[section].hidden) {\n state[section].opening = false;\n state[section].inactive = false;\n break;\n }\n }\n }\n\n setStateSections(state);\n }, [layout, hideProperty, hideGuestSelect, hidePromocode, activeSection, isImagesTheme, isImagesThemeMobile]);\n\n const navigateSection = (currentSection: EBookingWizardSection, direction: 1 | -1) => {\n if (!currentSection) return;\n const currentIndex = availableSections.indexOf(currentSection);\n const targetSection = availableSections[currentIndex + direction] ?? null;\n setActiveSection(targetSection);\n };\n\n const onNextHandler = (section: EBookingWizardSection) => navigateSection(section, 1);\n const onPrevHandler = (section: EBookingWizardSection) => navigateSection(section, -1);\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 isImagesTheme,\n isImagesThemeMobile,\n activeSection,\n stateSections,\n onNextHandler,\n onPrevHandler,\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 maxAdults={maxAdults}\n disableChild={disableChild}\n showInfants={showInfants}\n disableRoom={disableRoom}\n defaultValues={defaultValues}\n hideGuestSelect={hideGuestSelect}\n hidePromocode={hidePromocode}\n hideProperty={hideProperty}\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"]}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
2
|
import { BottomSheetProps } from 'react-spring-bottom-sheet';
|
|
3
3
|
declare const BookingWizardBottomSheet: React.FC<BottomSheetProps>;
|
|
4
|
+
interface BWBottomSheetFooterProps {
|
|
5
|
+
onPrev?: () => void;
|
|
6
|
+
onNext?: () => void;
|
|
7
|
+
hidePrev?: boolean;
|
|
8
|
+
preLabel?: string;
|
|
9
|
+
nextLabel?: string;
|
|
10
|
+
disabledNext?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const BWBottomSheetFooter: ({ onPrev, onNext, hidePrev, preLabel, nextLabel, disabledNext }: BWBottomSheetFooterProps) => JSX.Element | null;
|
|
13
|
+
export declare const BWBottomSheetHeader: ({ title, onClose }: {
|
|
14
|
+
title: ReactNode;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
}) => JSX.Element;
|
|
4
17
|
export default BookingWizardBottomSheet;
|
|
@@ -14,9 +14,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.BWBottomSheetHeader = exports.BWBottomSheetFooter = void 0;
|
|
18
|
+
const ui_1 = require("@roomstay/ui");
|
|
17
19
|
const classnames_1 = __importDefault(require("classnames"));
|
|
18
20
|
const react_1 = __importDefault(require("react"));
|
|
21
|
+
const react_i18next_1 = require("react-i18next");
|
|
19
22
|
const react_spring_bottom_sheet_1 = require("react-spring-bottom-sheet");
|
|
23
|
+
const Translation_1 = require("../../../../translations/Translation");
|
|
24
|
+
const BEButton_1 = __importDefault(require("../../BEButton"));
|
|
25
|
+
const BookingWizard_1 = require("../BookingWizard");
|
|
26
|
+
const BookingWizard_module_scss_1 = __importDefault(require("../BookingWizard.module.scss"));
|
|
20
27
|
const BookingWizardContext_1 = require("../BookingWizardContext");
|
|
21
28
|
const BookingWizardBottomSheet = (props) => {
|
|
22
29
|
const { children, className } = props, bottomSheetProps = __rest(props, ["children", "className"]);
|
|
@@ -24,5 +31,25 @@ const BookingWizardBottomSheet = (props) => {
|
|
|
24
31
|
const classes = (0, classnames_1.default)('roomstay-booking-container', bwClassname, className);
|
|
25
32
|
return (react_1.default.createElement(react_spring_bottom_sheet_1.BottomSheet, Object.assign({ className: classes, style: style }, bottomSheetProps), children));
|
|
26
33
|
};
|
|
34
|
+
const BWBottomSheetFooter = ({ onPrev, onNext, hidePrev = false, preLabel, nextLabel, disabledNext = false }) => {
|
|
35
|
+
const { theme } = (0, BookingWizardContext_1.useBookingWizard)();
|
|
36
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
37
|
+
if (theme !== BookingWizard_1.EBookingWizardTheme.Images)
|
|
38
|
+
return null;
|
|
39
|
+
return (react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.footer },
|
|
40
|
+
!hidePrev ? (react_1.default.createElement(BEButton_1.default, { rounded: true, isText: true, primary: true, size: "small", className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.btn, BookingWizard_module_scss_1.default['btn-cancel']), onClick: onPrev }, preLabel || t(Translation_1.Translation.Navigation.Back))) : (react_1.default.createElement("div", null)),
|
|
41
|
+
react_1.default.createElement(BEButton_1.default, { disabled: disabledNext, rounded: true, primary: true, filled: true, size: "small", className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.btn, BookingWizard_module_scss_1.default['btn-next']), onClick: onNext }, nextLabel || t(Translation_1.Translation.Navigation.Next))));
|
|
42
|
+
};
|
|
43
|
+
exports.BWBottomSheetFooter = BWBottomSheetFooter;
|
|
44
|
+
const BWBottomSheetHeader = ({ title, onClose }) => {
|
|
45
|
+
const { isImagesTheme } = (0, BookingWizardContext_1.useBookingWizard)();
|
|
46
|
+
return (react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.header },
|
|
47
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
48
|
+
[BookingWizard_module_scss_1.default.title]: isImagesTheme,
|
|
49
|
+
}) }, title),
|
|
50
|
+
' ',
|
|
51
|
+
react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Close, onClick: onClose })));
|
|
52
|
+
};
|
|
53
|
+
exports.BWBottomSheetHeader = BWBottomSheetHeader;
|
|
27
54
|
exports.default = BookingWizardBottomSheet;
|
|
28
55
|
//# sourceMappingURL=BookingWizardBottomSheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookingWizardBottomSheet.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BookingWizardBottomSheet.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAA8C;AAC9C,4DAAoC;AACpC,kDAAyC;AACzC,iDAA+C;AAC/C,yEAA0E;AAE1E,4DAAyD;AAEzD,8DAAsC;AACtC,oDAAuD;AACvD,6FAAkD;AAClD,kEAAiF;AACjF,MAAM,wBAAwB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,KAA0B,KAAK,EAA1B,gBAAgB,UAAK,KAAK,EAApD,yBAA4C,CAAQ,CAAC;IAE3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,eAAK,CAAC,UAAU,CAAC,2CAAoB,CAAC,CAAC;IAEjF,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,4BAA4B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEjF,OAAO,CACH,8BAAC,uCAAW,kBAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAM,gBAAgB,GAC9D,QAAQ,CACC,CACjB,CAAC;AACN,CAAC,CAAC;AAWK,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,GAAG,KAAK,EAA4B,EAAE,EAAE;IAC7I,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IACrC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,IAAI,KAAK,KAAK,mCAAmB,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACxB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACT,8BAAC,kBAAQ,IAAC,OAAO,QAAC,MAAM,QAAC,OAAO,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACjH,QAAQ,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACpC,CACd,CAAC,CAAC,CAAC,CACA,0CAAW,CACd;QAED,8BAAC,kBAAQ,IAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,QAAC,OAAO,QAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,oBAAU,EAAC,mCAAM,CAAC,GAAG,EAAE,mCAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IACvI,SAAS,IAAI,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CACrC,CACT,CACT,CAAC;AACN,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAA6C,EAAE,EAAE;IACjG,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uCAAgB,GAAE,CAAC;IAC7C,OAAO,CACH,uCAAK,SAAS,EAAE,mCAAM,CAAC,MAAM;QACzB,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC;gBAClB,CAAC,mCAAM,CAAC,KAAK,CAAC,EAAE,aAAa;aAChC,CAAC,IAED,KAAK,CACJ;QAAC,GAAG;QACV,8BAAC,SAAI,IAAC,IAAI,EAAE,aAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAC9C,CACT,CAAC;AACN,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEF,kBAAe,wBAAwB,CAAC","sourcesContent":["import { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { BottomSheet, BottomSheetProps } from 'react-spring-bottom-sheet';\n\nimport { Translation } from '@/translations/Translation';\n\nimport BEButton from '../../BEButton';\nimport { EBookingWizardTheme } from '../BookingWizard';\nimport styles from '../BookingWizard.module.scss';\nimport { BookingWizardContext, useBookingWizard } from '../BookingWizardContext';\nconst BookingWizardBottomSheet: React.FC<BottomSheetProps> = (props) => {\n const { children, className, ...bottomSheetProps } = props;\n\n const { style, className: bwClassname } = React.useContext(BookingWizardContext);\n\n const classes = classNames('roomstay-booking-container', bwClassname, className);\n\n return (\n <BottomSheet className={classes} style={style} {...bottomSheetProps}>\n {children}\n </BottomSheet>\n );\n};\n\ninterface BWBottomSheetFooterProps {\n onPrev?: () => void;\n onNext?: () => void;\n hidePrev?: boolean;\n preLabel?: string; // defaults to \"Back\"\n nextLabel?: string; // defaults to \"Next\"\n disabledNext?: boolean;\n}\n\nexport const BWBottomSheetFooter = ({ onPrev, onNext, hidePrev = false, preLabel, nextLabel, disabledNext = false }: BWBottomSheetFooterProps) => {\n const { theme } = useBookingWizard();\n const { t } = useTranslation();\n if (theme !== EBookingWizardTheme.Images) return null;\n\n return (\n <div className={styles.footer}>\n {!hidePrev ? (\n <BEButton rounded isText primary size=\"small\" className={classNames(styles.btn, styles['btn-cancel'])} onClick={onPrev}>\n {preLabel || t(Translation.Navigation.Back)}\n </BEButton>\n ) : (\n <div></div>\n )}\n\n <BEButton disabled={disabledNext} rounded primary filled size=\"small\" className={classNames(styles.btn, styles['btn-next'])} onClick={onNext}>\n {nextLabel || t(Translation.Navigation.Next)}\n </BEButton>\n </div>\n );\n};\n\nexport const BWBottomSheetHeader = ({ title, onClose }: { title: ReactNode; onClose: () => void }) => {\n const { isImagesTheme } = useBookingWizard();\n return (\n <div className={styles.header}>\n <div\n className={classNames({\n [styles.title]: isImagesTheme,\n })}\n >\n {title}\n </div>{' '}\n <Icon icon={IconType.Close} onClick={onClose} />\n </div>\n );\n};\n\nexport default BookingWizardBottomSheet;\n"]}
|
|
@@ -22,3 +22,22 @@ export interface BookingWizardContentProps {
|
|
|
22
22
|
dateFormat?: string;
|
|
23
23
|
}
|
|
24
24
|
export declare const BookingWizardContent: React.FC<BookingWizardContentProps>;
|
|
25
|
+
export declare const BWPromoCodeSection: ({ inactive, hidden, setPromoCode, promoCode, onChange, valid, hideTooltip, t, isImagesTheme, divider, withLabel, }: BWPromoCodeSectionProps) => JSX.Element | null;
|
|
26
|
+
export declare const BWClearButton: ({ hidden, onClick }: {
|
|
27
|
+
hidden: boolean;
|
|
28
|
+
onClick: any;
|
|
29
|
+
}) => JSX.Element;
|
|
30
|
+
interface BWPromoCodeSectionProps {
|
|
31
|
+
inactive: boolean;
|
|
32
|
+
hidden: boolean;
|
|
33
|
+
setPromoCode: React.Dispatch<React.SetStateAction<string>>;
|
|
34
|
+
promoCode: string;
|
|
35
|
+
onChange: (value?: string) => Promise<void>;
|
|
36
|
+
valid?: boolean;
|
|
37
|
+
hideTooltip?: boolean;
|
|
38
|
+
t: (key: string) => string;
|
|
39
|
+
isImagesTheme: boolean;
|
|
40
|
+
divider: boolean;
|
|
41
|
+
withLabel: boolean;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
@@ -35,9 +35,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.BookingWizardContent = void 0;
|
|
38
|
+
exports.BWClearButton = exports.BWPromoCodeSection = exports.BookingWizardContent = void 0;
|
|
39
39
|
require("react-spring-bottom-sheet/dist/style.css");
|
|
40
40
|
const contexts_1 = require("../../../contexts/index.js");
|
|
41
|
+
const ui_1 = require("@roomstay/ui");
|
|
41
42
|
const classnames_1 = __importDefault(require("classnames"));
|
|
42
43
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
43
44
|
const react_1 = __importStar(require("react"));
|
|
@@ -46,14 +47,15 @@ const AvailabilityAPI_1 = __importDefault(require("../../../api/AvailabilityAPI"
|
|
|
46
47
|
const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
|
|
47
48
|
const Translation_1 = require("../../../translations/Translation");
|
|
48
49
|
const BEButton_1 = __importDefault(require("../BEButton"));
|
|
50
|
+
const BookingWizard_1 = require("./BookingWizard");
|
|
49
51
|
const BookingWizard_module_scss_1 = __importDefault(require("./BookingWizard.module.scss"));
|
|
50
52
|
const BookingWizardContext_1 = require("./BookingWizardContext");
|
|
51
53
|
const BookingWizardDateSelector_1 = require("./BookingWizardDateSelector/BookingWizardDateSelector");
|
|
52
54
|
const BookingWizardGuestSelector_1 = require("./BookingWizardGuestSelector/BookingWizardGuestSelector");
|
|
53
55
|
const BookingWizardHotelSelector_1 = require("./BookingWizardHotelSelector/BookingWizardHotelSelector");
|
|
54
56
|
const BookingWizardPromoCode_1 = require("./BookingWizardPromoCode/BookingWizardPromoCode");
|
|
55
|
-
const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, defaultColors, classname, maxAdults, disableChild, showInfants, disableRoom,
|
|
56
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
57
|
+
const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, defaultColors, classname, maxAdults, disableChild, showInfants, disableRoom, defaultValues, dateFormat, }) => {
|
|
58
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
57
59
|
const bwContext = (0, react_1.useContext)(BookingWizardContext_1.BookingWizardContext);
|
|
58
60
|
const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
59
61
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
@@ -77,6 +79,7 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
77
79
|
}
|
|
78
80
|
}, [selectedProperty]);
|
|
79
81
|
const engineConfig = beContext.engine.getConfig();
|
|
82
|
+
const guestAgeConfig = engineConfig.guestAgeConfig;
|
|
80
83
|
const yearDisplayOption = (0, react_1.useMemo)(() => {
|
|
81
84
|
var _a, _b;
|
|
82
85
|
return (_b = (_a = selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.yearDisplayOption) !== null && _a !== void 0 ? _a : engineConfig.yearDisplayOption) !== null && _b !== void 0 ? _b : '';
|
|
@@ -96,13 +99,15 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
96
99
|
setCheckOutDate(endDate);
|
|
97
100
|
};
|
|
98
101
|
const isValid = () => {
|
|
99
|
-
|
|
102
|
+
const isPropertyHidden = bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].hidden;
|
|
103
|
+
const isGuestSelectHidden = bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Guest].hidden;
|
|
104
|
+
if (!isPropertyHidden && !selectedProperty)
|
|
100
105
|
return false;
|
|
101
106
|
if (!checkInDate)
|
|
102
107
|
return false;
|
|
103
108
|
if (!checkOutDate)
|
|
104
109
|
return false;
|
|
105
|
-
if (adults + children <= 0)
|
|
110
|
+
if (!isGuestSelectHidden && adults + children <= 0)
|
|
106
111
|
return false;
|
|
107
112
|
return true;
|
|
108
113
|
};
|
|
@@ -131,7 +136,7 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
131
136
|
if (!value) {
|
|
132
137
|
setPromoCodeValid(undefined);
|
|
133
138
|
}
|
|
134
|
-
else if (isValid() && selectedProperty && checkInDate && checkOutDate) {
|
|
139
|
+
else if (isValid() && selectedProperty && (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id) !== 'All' && checkInDate && checkOutDate) {
|
|
135
140
|
const result = yield new AvailabilityAPI_1.default().fetchAvailability({
|
|
136
141
|
fromDate: checkInDate,
|
|
137
142
|
toDate: checkOutDate,
|
|
@@ -152,30 +157,111 @@ const BookingWizardContent = ({ properties, selectedProperty: defaultProperty, d
|
|
|
152
157
|
[BookingWizard_module_scss_1.default['--vertical']]: bwContext.layout === 'button',
|
|
153
158
|
[BookingWizard_module_scss_1.default.inline]: bwContext.type === 'inline',
|
|
154
159
|
}, classname) },
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
160
|
+
react_1.default.createElement(BWPropertySelectorSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Property].inactive, withLabel: !bwContext.isImagesThemeMobile, divider: !bwContext.isImagesThemeMobile, containerRef: hotelContainerRef, setContainerRef: setHotelContainerRef, properties: properties, selectedProperty: selectedProperty, setSelectedProperty: setSelectedProperty, classname: classname, t: t }),
|
|
161
|
+
react_1.default.createElement(BookingWizardDateSelector_1.BookingWizardDateSelector, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Date].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Date].inactive, onChange: setDate, defaultStartDate: checkInDate ? (0, dayjs_1.default)(checkInDate) : undefined, defaultEndDate: checkOutDate ? (0, dayjs_1.default)(checkOutDate) : undefined, dateFormat: dateFormat, showYearOnCalendar: showYearOnCalendar, yearDisplayOption: yearDisplayOption, notes: bwContext.isImagesTheme ? (_j = engineConfig === null || engineConfig === void 0 ? void 0 : engineConfig.notes) === null || _j === void 0 ? void 0 : _j.date : undefined }),
|
|
162
|
+
react_1.default.createElement(BWGuestSelectorSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Guest].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Guest].inactive, divider: !bwContext.isImagesThemeMobile, isImagesTheme: bwContext.isImagesTheme, containerRef: guestsContainerRef, setContainerRef: setGuestContainerRef, onChange: setGuest, maxAdults: maxAdults, disableChild: disableChild, showInfants: showInfants, disableRoom: disableRoom, config: guestAgeConfig, notes: bwContext.isImagesTheme ? (_k = engineConfig === null || engineConfig === void 0 ? void 0 : engineConfig.notes) === null || _k === void 0 ? void 0 : _k.guest : undefined, defaultValue: {
|
|
163
|
+
adults: adults,
|
|
164
|
+
children: children,
|
|
165
|
+
room: room,
|
|
166
|
+
infants: infants,
|
|
167
|
+
}, defaultGuestConfig: {
|
|
168
|
+
adults: (_l = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.guests) === null || _l === void 0 ? void 0 : _l.adults,
|
|
169
|
+
children: (_m = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.guests) === null || _m === void 0 ? void 0 : _m.children,
|
|
170
|
+
room: (_o = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.guests) === null || _o === void 0 ? void 0 : _o.room,
|
|
171
|
+
infants: (_p = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.guests) === null || _p === void 0 ? void 0 : _p.infants,
|
|
172
|
+
}, promoCodeConfig: {
|
|
173
|
+
divider: false,
|
|
174
|
+
withLabel: true,
|
|
175
|
+
promoCode,
|
|
176
|
+
setPromoCode,
|
|
177
|
+
onChange: _onPromoCodeChange,
|
|
178
|
+
valid: promoCodeValid,
|
|
179
|
+
hideTooltip: engineConfig.hideTooltips,
|
|
180
|
+
}, submitConfig: {
|
|
181
|
+
onSubmit: _onSubmit,
|
|
182
|
+
disabledNext: !isValid(),
|
|
183
|
+
} }),
|
|
184
|
+
react_1.default.createElement(exports.BWPromoCodeSection, { hidden: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Promo].hidden, inactive: bwContext.stateSections[BookingWizard_1.EBookingWizardSection.Promo].inactive, isImagesTheme: bwContext.isImagesTheme, setPromoCode: setPromoCode, promoCode: promoCode, onChange: _onPromoCodeChange, valid: promoCodeValid, hideTooltip: engineConfig.hideTooltips, t: t, divider: true, withLabel: true }),
|
|
185
|
+
bwContext.layout !== 'horizontal-condensed' && !bwContext.isImagesThemeMobile && react_1.default.createElement(SubmitButtonSection, { button: submitButton })),
|
|
186
|
+
bwContext.layout === 'horizontal-condensed' && !bwContext.isImagesThemeMobile && (react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.content, classname) },
|
|
187
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.action, BookingWizard_module_scss_1.default.centerItems, 'u-marg-top u-marg-top--light@l-') }, submitButton)))));
|
|
179
188
|
};
|
|
180
189
|
exports.BookingWizardContent = BookingWizardContent;
|
|
190
|
+
const BWPropertySelectorSection = ({ inactive, hidden, containerRef, setContainerRef, properties, selectedProperty, setSelectedProperty, classname, t, divider = true, withLabel = true, }) => {
|
|
191
|
+
if (hidden)
|
|
192
|
+
return null;
|
|
193
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
194
|
+
react_1.default.createElement("div", { ref: setContainerRef, className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.item, BookingWizard_module_scss_1.default['item-hotel'], {
|
|
195
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
196
|
+
}) },
|
|
197
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
198
|
+
withLabel && react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.ChooseHotel)),
|
|
199
|
+
react_1.default.createElement(BookingWizardHotelSelector_1.BookingWizardHotelSelector, { followElement: containerRef, onChange: (value) => {
|
|
200
|
+
setSelectedProperty(value || undefined);
|
|
201
|
+
}, properties: properties, selectedProperty: selectedProperty, contentClassName: (0, classnames_1.default)(classname) }))),
|
|
202
|
+
divider ? (react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.divider, {
|
|
203
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
204
|
+
}) })) : null));
|
|
205
|
+
};
|
|
206
|
+
const BWGuestSelectorSection = ({ inactive, hidden, containerRef, setContainerRef, defaultValue: _defaultValue, onChange, maxAdults, disableChild, showInfants, disableRoom, config, notes, defaultGuestConfig, divider, promoCodeConfig, submitConfig, isImagesTheme, }) => {
|
|
207
|
+
if (hidden)
|
|
208
|
+
return null;
|
|
209
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
210
|
+
const [isOverlayOpen, setIsOverlayOpen] = (0, react_1.useState)(false);
|
|
211
|
+
const [defaultValue, setDefaultValue] = (0, react_1.useState)(_defaultValue);
|
|
212
|
+
const onOverlayOpenChange = (isOpen) => {
|
|
213
|
+
setIsOverlayOpen(isOpen);
|
|
214
|
+
};
|
|
215
|
+
const onClearHandler = () => {
|
|
216
|
+
const emptyValues = {
|
|
217
|
+
adults: 0,
|
|
218
|
+
children: 0,
|
|
219
|
+
room: 0,
|
|
220
|
+
infants: 0,
|
|
221
|
+
};
|
|
222
|
+
onChange(Object.assign({}, emptyValues));
|
|
223
|
+
setDefaultValue(Object.assign({}, emptyValues));
|
|
224
|
+
};
|
|
225
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
226
|
+
divider ? (react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.divider, {
|
|
227
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
228
|
+
}) })) : null,
|
|
229
|
+
react_1.default.createElement("div", { ref: setContainerRef, className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.item, {
|
|
230
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
231
|
+
}) },
|
|
232
|
+
react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default['item-with-icon'] },
|
|
233
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-fullwidth'], BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
234
|
+
react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.Guests)),
|
|
235
|
+
react_1.default.createElement(BookingWizardGuestSelector_1.BookingWizardGuestSelector, Object.assign({ defaultValue: defaultValue, onChange: onChange, maxAdults: maxAdults, disableChild: disableChild, showInfants: showInfants, disableRoom: disableRoom, followElement: containerRef }, config, { notes: isImagesTheme ? notes : undefined, onOverlayOpenChange: onOverlayOpenChange, promoCodeConfig: promoCodeConfig, submitConfig: submitConfig }))),
|
|
236
|
+
isImagesTheme && react_1.default.createElement(exports.BWClearButton, { hidden: isOverlayOpen, onClick: onClearHandler })))));
|
|
237
|
+
};
|
|
238
|
+
const BWPromoCodeSection = ({ inactive, hidden, setPromoCode, promoCode, onChange, valid, hideTooltip, t, isImagesTheme, divider = true, withLabel = true, }) => {
|
|
239
|
+
if (hidden)
|
|
240
|
+
return null;
|
|
241
|
+
const onClearHandler = (event) => {
|
|
242
|
+
setPromoCode('');
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
event.stopPropagation();
|
|
245
|
+
};
|
|
246
|
+
const [focused, setFocused] = react_1.default.useState(false);
|
|
247
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
248
|
+
divider ? (react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.divider, {
|
|
249
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
250
|
+
}) })) : null,
|
|
251
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default.item, BookingWizard_module_scss_1.default['item-promo-code-wrapper'], {
|
|
252
|
+
[BookingWizard_module_scss_1.default['inactive']]: inactive,
|
|
253
|
+
}), onFocus: () => setFocused(true), onBlur: () => setFocused(false) },
|
|
254
|
+
react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default['item-with-icon'] },
|
|
255
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizard_module_scss_1.default['item-fullwidth'], BookingWizard_module_scss_1.default['item-ellipsis-wrapper']) },
|
|
256
|
+
withLabel && react_1.default.createElement("label", { className: BookingWizard_module_scss_1.default.label }, t(Translation_1.Translation.Misc.Promocode)),
|
|
257
|
+
react_1.default.createElement(BookingWizardPromoCode_1.BookingWizardPromoCode, { promoCode: promoCode, onChange: onChange, valid: valid, hideTooltip: hideTooltip })),
|
|
258
|
+
isImagesTheme && react_1.default.createElement(exports.BWClearButton, { hidden: focused, onClick: onClearHandler })))));
|
|
259
|
+
};
|
|
260
|
+
exports.BWPromoCodeSection = BWPromoCodeSection;
|
|
261
|
+
const SubmitButtonSection = ({ button }) => react_1.default.createElement("div", { className: BookingWizard_module_scss_1.default.action }, button);
|
|
262
|
+
const BWClearButton = ({ hidden, onClick }) => {
|
|
263
|
+
return hidden ? (react_1.default.createElement("div", { onMouseDown: (e) => e.preventDefault(), className: BookingWizard_module_scss_1.default['clear-button'], onClick: onClick },
|
|
264
|
+
react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Close, name: "Clear" }))) : (react_1.default.createElement(react_1.default.Fragment, null));
|
|
265
|
+
};
|
|
266
|
+
exports.BWClearButton = BWClearButton;
|
|
181
267
|
//# sourceMappingURL=BookingWizardContent.js.map
|