@roomstay/frontend 2.5.2-2 → 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/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/537.bundle.js +1 -0
- package/dist/572.bundle.js +1 -1
- package/dist/736.bundle.js +1 -0
- package/dist/903.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +5 -4
- package/dist/src/api/AvailabilityAPI.js +16 -10
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/ReservationAPI.js +2 -0
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +16 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +3 -2
- package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +3 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +34 -9
- package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
- package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js +15 -6
- package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.d.ts +2 -0
- package/dist/src/components/generic/PromoCodeInput.js +13 -10
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.js +4 -2
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +3 -2
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +5 -2
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePicker.js +7 -2
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -0
- package/dist/src/components/steps/date/PeoplePickerRow.js +27 -18
- package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
- package/dist/src/components/steps/date/StepOneStatusPeople.js +7 -0
- package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +2 -1
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelSearchParameters.js +20 -3
- package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js +4 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
- package/dist/src/components/steps/room/StepRoomErrorForm.js +1 -0
- package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +1 -0
- package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +3 -3
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +9 -35
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +44 -23
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.d.ts +9 -0
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +30 -0
- package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -0
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +19 -3
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +8 -2
- package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummary.js +2 -0
- package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +6 -3
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +3 -0
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.d.ts +1 -0
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +4 -1
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +1 -0
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +3 -0
- package/dist/src/models/BasketRow.js +8 -1
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +11 -0
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Promotion/IPromotion.type.d.ts +2 -0
- package/dist/src/models/Promotion/IPromotion.type.js.map +1 -1
- package/dist/src/models/RoomstaySession.d.ts +1 -0
- package/dist/src/models/RoomstaySession.js.map +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +1 -1
- package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
- package/dist/src/providers/PromotionProvider.js +7 -1
- package/dist/src/providers/PromotionProvider.js.map +1 -1
- package/dist/src/providers/SessionProvider.js +2 -0
- package/dist/src/providers/SessionProvider.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +5 -0
- package/dist/src/translations/Translation.js +5 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +8 -3
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/DefaultValueManager.d.ts +2 -1
- package/dist/src/util/DefaultValueManager.js +1 -0
- package/dist/src/util/DefaultValueManager.js.map +1 -1
- package/dist/src/util/StringHelper.js +5 -3
- package/dist/src/util/StringHelper.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/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/115.bundle.js +0 -1
- package/dist/975.bundle.js +0 -1
|
@@ -26,22 +26,17 @@ 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.
|
|
29
|
+
exports.UserSearchSummaryPromocodeInput = 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");
|
|
33
|
-
const BEButton_1 = __importDefault(require("../../../generic/BEButton"));
|
|
34
|
-
const Icon_1 = __importStar(require("../../../generic/Icon/Icon"));
|
|
35
|
-
const Overlay_1 = require("../../../generic/Overlay/Overlay");
|
|
36
33
|
const PromoCodeInput_1 = __importDefault(require("../../../generic/PromoCodeInput"));
|
|
37
|
-
const Text_1 = __importStar(require("../../../generic/Text"));
|
|
38
34
|
const Tooltip_1 = __importDefault(require("../../../generic/Tooltip/Tooltip"));
|
|
39
35
|
const Translation_1 = require("../../../../translations/Translation");
|
|
40
36
|
const Color_1 = require("../../../../util/Color");
|
|
41
|
-
const
|
|
42
|
-
const
|
|
37
|
+
const UserSearchSummaryRow_module_scss_1 = __importDefault(require("./UserSearchSummaryRow.module.scss"));
|
|
38
|
+
const UserSearchSummaryPromocodeInput = ({ row, disabled = false, onChange, promocodeTextColor = Color_1.Color.Navy, useUpdatedDesign = false, }) => {
|
|
43
39
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
44
|
-
const [isPromoModalOpen, setIsPromoModalOpen] = (0, react_1.useState)(false);
|
|
45
40
|
let promoCodeTooltip = '';
|
|
46
41
|
if (row.getPromoCodeStatus() === 'new') {
|
|
47
42
|
promoCodeTooltip = row.getPromoCode() ? t(Translation_1.Translation.Step.Date.PromoCodeTooltip.Checking) : t(Translation_1.Translation.Step.Date.PromoCodeTooltip.NoValue);
|
|
@@ -55,38 +50,17 @@ const UserSearchSummaryPromocdeInput = ({ row, disabled = false, onChange, promo
|
|
|
55
50
|
}
|
|
56
51
|
}
|
|
57
52
|
const thisElement = (0, react_1.useRef)(null);
|
|
58
|
-
const openPromoModalOnClick = () => {
|
|
59
|
-
if (disabled) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
setIsPromoModalOpen(true);
|
|
63
|
-
};
|
|
64
|
-
const setPromoCodeOnClose = () => {
|
|
65
|
-
setIsPromoModalOpen(false);
|
|
66
|
-
};
|
|
67
|
-
const cancelPromoPopupOnClick = () => {
|
|
68
|
-
DataLayer_1.default.instance.sendInteraction('Cancel Promo Popup', DataLayer_1.InteractionType.BUTTON, DataLayer_1.InteractionStep.ROOMS);
|
|
69
|
-
setIsPromoModalOpen(false);
|
|
70
|
-
};
|
|
71
53
|
const _onChangePromoCode = (code) => {
|
|
72
54
|
onChange(code);
|
|
73
|
-
if (code) {
|
|
74
|
-
setIsPromoModalOpen(false);
|
|
75
|
-
}
|
|
76
55
|
};
|
|
77
56
|
promocodeTextColor = row.getPromoCode() ? row.getPromoCodeColour() : promocodeTextColor;
|
|
78
57
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
79
58
|
react_1.default.createElement(Tooltip_1.default, { title: promoCodeTooltip, wrapperClasses: "u-w-100@xl- d-flex", disabled: disabled },
|
|
80
|
-
react_1.default.createElement("div", { className: (0, classnames_1.default)('
|
|
81
|
-
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- room-builder-progress--promo" },
|
|
82
|
-
react_1.default.createElement(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
react_1.default.createElement("div", { className: "u-pad--heavy" },
|
|
86
|
-
react_1.default.createElement("div", null,
|
|
87
|
-
react_1.default.createElement(PromoCodeInput_1.default, { value: row === null || row === void 0 ? void 0 : row.getPromoCode(), onChange: _onChangePromoCode, valid: (row === null || row === void 0 ? void 0 : row.getPromoCodeStatus()) !== 'new' ? (row === null || row === void 0 ? void 0 : row.getPromoCodeStatus()) === 'valid' : undefined })),
|
|
88
|
-
react_1.default.createElement("div", { className: "u-flex justify-content-end align-items-center u-marg-top" },
|
|
89
|
-
react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", onClick: cancelPromoPopupOnClick }, t(Translation_1.Translation.Misc.Cancel)))))));
|
|
59
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('u-cursor-pointer', { '--updated': useUpdatedDesign }), ref: thisElement, style: { width: '100%' } },
|
|
60
|
+
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- room-builder-progress--promo", style: { width: '100%' } },
|
|
61
|
+
react_1.default.createElement("div", { style: { width: '100%' } },
|
|
62
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-label'] }, t(Translation_1.Translation.Step.Date.PromoCode)),
|
|
63
|
+
react_1.default.createElement(PromoCodeInput_1.default, { value: row === null || row === void 0 ? void 0 : row.getPromoCode(), onChange: _onChangePromoCode, valid: (row === null || row === void 0 ? void 0 : row.getPromoCodeStatus()) !== 'new' ? (row === null || row === void 0 ? void 0 : row.getPromoCodeStatus()) === 'valid' : undefined, variant: "text", hideValidText: true })))))));
|
|
90
64
|
};
|
|
91
|
-
exports.
|
|
65
|
+
exports.UserSearchSummaryPromocodeInput = UserSearchSummaryPromocodeInput;
|
|
92
66
|
//# sourceMappingURL=UserSearchSummaryPromocodeInput.js.map
|
package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSearchSummaryPromocodeInput.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2C;AAC3C,+
|
|
1
|
+
{"version":3,"file":"UserSearchSummaryPromocodeInput.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA2C;AAC3C,+CAAsC;AACtC,iDAA+C;AAE/C,yFAAiE;AACjE,mFAA2D;AAE3D,4DAAyD;AACzD,wCAAqC;AAErC,0GAAwD;AAWjD,MAAM,+BAA+B,GAAG,CAAC,EAC5C,GAAG,EACH,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,kBAAkB,GAAG,aAAK,CAAC,IAAI,EAC/B,gBAAgB,GAAG,KAAK,GACW,EAAE,EAAE;IACvC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAE1B,IAAI,GAAG,CAAC,kBAAkB,EAAE,KAAK,KAAK,EAAE;QACpC,gBAAgB,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAClJ;SAAM;QACH,IAAI,GAAG,CAAC,kBAAkB,EAAE,KAAK,OAAO,EAAE;YACtC,gBAAgB,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACtE;aAAM;YACH,gBAAgB,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SACxE;KACJ;IAED,MAAM,WAAW,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;QACxC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,kBAAkB,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAExF,OAAO,CACH;QACI,8BAAC,iBAAO,IAAC,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAC,oBAAoB,EAAC,QAAQ,EAAE,QAAQ;YACpF,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACjH,uCAAK,SAAS,EAAC,2FAA2F,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC/H,uCAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;wBACzB,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAO;wBACpG,8BAAC,wBAAc,IACX,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,EAC1B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,kBAAkB,EAAE,MAAK,KAAK,CAAC,CAAC,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,kBAAkB,EAAE,MAAK,OAAO,CAAC,CAAC,CAAC,SAAS,EAC9F,OAAO,EAAC,MAAM,EACd,aAAa,SACf,CACA,CACJ,CACJ,CACA,CACX,CACN,CAAC;AACN,CAAC,CAAC;AAhDW,QAAA,+BAA+B,mCAgD1C","sourcesContent":["import { default as cx } from 'classnames';\nimport React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport styles from './UserSearchSummaryRow.module.scss';\n\ntype UserSearchSummaryPromocodeInputProps = {\n row: BasketRow;\n onChange: (code: string) => void;\n\n disabled?: boolean;\n promocodeTextColor?: Color;\n useUpdatedDesign?: boolean;\n};\n\nexport const UserSearchSummaryPromocodeInput = ({\n row,\n disabled = false,\n onChange,\n promocodeTextColor = Color.Navy,\n useUpdatedDesign = false,\n}: UserSearchSummaryPromocodeInputProps) => {\n const { t } = useTranslation();\n let promoCodeTooltip = '';\n\n if (row.getPromoCodeStatus() === 'new') {\n promoCodeTooltip = row.getPromoCode() ? t(Translation.Step.Date.PromoCodeTooltip.Checking) : t(Translation.Step.Date.PromoCodeTooltip.NoValue);\n } else {\n if (row.getPromoCodeStatus() === 'valid') {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Valid);\n } else {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Invalid);\n }\n }\n\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const _onChangePromoCode = (code: string) => {\n onChange(code);\n };\n\n promocodeTextColor = row.getPromoCode() ? row.getPromoCodeColour() : promocodeTextColor;\n\n return (\n <>\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\" disabled={disabled}>\n <div className={cx('u-cursor-pointer', { '--updated': useUpdatedDesign })} ref={thisElement} style={{ width: '100%' }}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- room-builder-progress--promo\" style={{ width: '100%' }}>\n <div style={{ width: '100%' }}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Step.Date.PromoCode)}</div>\n <PromoCodeInput\n value={row?.getPromoCode()}\n onChange={_onChangePromoCode}\n valid={row?.getPromoCodeStatus() !== 'new' ? row?.getPromoCodeStatus() === 'valid' : undefined}\n variant=\"text\"\n hideValidText\n />\n </div>\n </div>\n </div>\n </Tooltip>\n </>\n );\n};\n"]}
|
|
@@ -43,14 +43,16 @@ const Color_1 = require("../../../../util/Color");
|
|
|
43
43
|
const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
|
|
44
44
|
const ScreenSize_1 = __importDefault(require("../../../../util/ScreenSize"));
|
|
45
45
|
const StringHelper_1 = __importDefault(require("../../../../util/StringHelper"));
|
|
46
|
-
const
|
|
47
|
-
const
|
|
46
|
+
const BookingWizard_1 = require("../../../generic/BookingWizard/BookingWizard");
|
|
47
|
+
const BookingWizardContext_1 = require("../../../generic/BookingWizard/BookingWizardContext");
|
|
48
|
+
const BookingWizardGuestSelector_1 = require("../../../generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector");
|
|
48
49
|
const UserSearchSummaryPromocodeInput_1 = require("./UserSearchSummaryPromocodeInput");
|
|
49
50
|
const UserSearchSummaryRow_module_scss_1 = __importDefault(require("./UserSearchSummaryRow.module.scss"));
|
|
50
51
|
const UserSearchSummaryRow = ({ row, index }) => {
|
|
52
|
+
var _a;
|
|
51
53
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
52
54
|
const removeButtonRef = (0, react_1.useRef)();
|
|
53
|
-
const { isAccent2ColorDark } = (0, hooks_1.useCurrentHotel)();
|
|
55
|
+
const { isAccent2ColorDark, hotel } = (0, hooks_1.useCurrentHotel)();
|
|
54
56
|
const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
55
57
|
const { isHidingPromoField } = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
56
58
|
const engineContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
@@ -62,7 +64,7 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
62
64
|
DataLayer_1.default.instance.sendInteraction('Remove Room', DataLayer_1.InteractionType.BUTTON, DataLayer_1.InteractionStep.ROOMS);
|
|
63
65
|
removeBasketRow(row);
|
|
64
66
|
};
|
|
65
|
-
const updatePeopleValues = ({ adults, children, updatedPromoCode }) => {
|
|
67
|
+
const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }) => {
|
|
66
68
|
if (adults && adults !== row.getAdults()) {
|
|
67
69
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
68
70
|
row.setAdults(adults);
|
|
@@ -71,6 +73,10 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
71
73
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
72
74
|
row.setChildren(children);
|
|
73
75
|
}
|
|
76
|
+
if ((infants || infants === 0) && infants !== row.getInfants()) {
|
|
77
|
+
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
78
|
+
row.setInfants(infants);
|
|
79
|
+
}
|
|
74
80
|
if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {
|
|
75
81
|
DataLayer_1.default.instance.sendInteraction('Promo Code', DataLayer_1.InteractionType.FORM_FIELD, DataLayer_1.InteractionStep.ROOMS);
|
|
76
82
|
row.setPromoCode(updatedPromoCode);
|
|
@@ -93,11 +99,12 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
93
99
|
}
|
|
94
100
|
updateBasketRow(row);
|
|
95
101
|
};
|
|
96
|
-
const
|
|
97
|
-
updatePeopleValues({
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
const setGuest = (guests) => {
|
|
103
|
+
updatePeopleValues({
|
|
104
|
+
adults: guests.adults,
|
|
105
|
+
children: guests.children,
|
|
106
|
+
infants: guests.infants,
|
|
107
|
+
});
|
|
101
108
|
};
|
|
102
109
|
const changePromoCode = (val) => {
|
|
103
110
|
updatePromoCode(val);
|
|
@@ -118,6 +125,11 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
118
125
|
const removeButton = (react_1.default.createElement(Tooltip_1.default, { title: canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.', followElement: removeButtonRef === null || removeButtonRef === void 0 ? void 0 : removeButtonRef.current, wrapperClasses: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove-tooltip'] },
|
|
119
126
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove'], onClick: removeRoomOnClick, ref: removeButtonRef },
|
|
120
127
|
react_1.default.createElement(BEButton_1.default, { textColor: textColor, isText: true, icon: Icon_1.IconType.Close, iconPosition: "right", stopIconAnimation: true, disabled: !canRemove, onClick: removeRoomOnClick }))));
|
|
128
|
+
const bookingWizardContext = {
|
|
129
|
+
layout: 'booking-summary',
|
|
130
|
+
theme: BookingWizard_1.EBookingWizardTheme.Default,
|
|
131
|
+
type: sizeMediumDown ? 'top-sheet' : 'popup',
|
|
132
|
+
};
|
|
121
133
|
if (isValid && !isSelectedRow) {
|
|
122
134
|
return (react_1.default.createElement("div", { className: `${UserSearchSummaryRow_module_scss_1.default['user-completed-summary-row']} u-flex w-100` },
|
|
123
135
|
react_1.default.createElement("div", { className: "u-flex justify-content-start" },
|
|
@@ -129,7 +141,10 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
129
141
|
react_1.default.createElement("span", { className: "u-marg-left--light@xl" },
|
|
130
142
|
StringHelper_1.default.pluralWithDictAndCount(row.getAdults(), Translation_1.Translation.Step.Date.Adult, t),
|
|
131
143
|
",\u00A0",
|
|
132
|
-
StringHelper_1.default.pluralWithDictAndCount(row.getChildren(), Translation_1.Translation.Step.Date.Child, t)
|
|
144
|
+
StringHelper_1.default.pluralWithDictAndCount(row.getChildren(), Translation_1.Translation.Step.Date.Child, t),
|
|
145
|
+
((_a = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _a === void 0 ? void 0 : _a.supportInfants) ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
146
|
+
",\u00A0",
|
|
147
|
+
StringHelper_1.default.pluralWithDictAndCount(row.getInfants(), Translation_1.Translation.Step.Date.Infant, t))) : null))),
|
|
133
148
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Caption, color: Color_1.Color.DarkGrey },
|
|
134
149
|
react_1.default.createElement("strong", null, row.getStayDateRange('ddd, MMM D, YYYY', ' -')))),
|
|
135
150
|
row.isPromoCodeValid() && (react_1.default.createElement("div", { className: "u-marg-left d-flex align-items-center" },
|
|
@@ -148,29 +163,35 @@ const UserSearchSummaryRow = ({ row, index }) => {
|
|
|
148
163
|
}) },
|
|
149
164
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--inner'] },
|
|
150
165
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
151
|
-
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'], color: textColor }, "Dates:"),
|
|
152
166
|
react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row.getStartDate(), endDate: row.getEndDate(), selectedDateChanged: updateDateValues, isAboveNav: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
153
167
|
react_1.default.createElement(Tooltip_1.default, { disabled: !isSelectedRow, title: t(Translation_1.Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere) },
|
|
154
168
|
react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer" },
|
|
155
|
-
react_1.default.createElement(
|
|
156
|
-
|
|
157
|
-
|
|
169
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-date-range'] },
|
|
170
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-date-range--item'] },
|
|
171
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-label'] }, t(Translation_1.Translation.Misc.CheckIn)),
|
|
172
|
+
react_1.default.createElement(Text_1.default, { color: shouldTextBeWhite ? Color_1.Color.White : Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getArrivalDate())),
|
|
173
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-date-range--icon'] },
|
|
174
|
+
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, color: shouldTextBeWhite ? Color_1.Color.White : undefined })),
|
|
175
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-date-range--item'] },
|
|
176
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-label'] }, t(Translation_1.Translation.Misc.CheckOut)),
|
|
177
|
+
react_1.default.createElement(Text_1.default, { color: shouldTextBeWhite ? Color_1.Color.White : Color_1.Color.Accent, bold: true, className: "u-nowrap" }, row.getDepartureDate()))))))),
|
|
158
178
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__divider'] }),
|
|
159
179
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
160
|
-
react_1.default.createElement(Text_1.default, { inline: true, bold: true, className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group-label'], color: textColor }, "Who:"),
|
|
161
|
-
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
162
|
-
react_1.default.createElement(NumberOfAdultsPicker_1.default, { row: row, onChange: updateNumberOfAdultsOnChange, labelColor: textColor })),
|
|
163
180
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
164
|
-
react_1.default.createElement(
|
|
181
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-item'] },
|
|
182
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-card-label'] }, t(Translation_1.Translation.Misc.Who)),
|
|
183
|
+
react_1.default.createElement(BookingWizardContext_1.BookingWizardContext.Provider, { value: bookingWizardContext },
|
|
184
|
+
react_1.default.createElement(BookingWizardGuestSelector_1.BookingWizardGuestSelector, { defaultValue: {
|
|
185
|
+
adults: row.getAdults(),
|
|
186
|
+
children: row.getChildren(),
|
|
187
|
+
infants: row.getInfants(),
|
|
188
|
+
}, onChange: setGuest, disableChild: engineContext.engine.getConfig().disableChild, disableRoom: true }))))),
|
|
165
189
|
!isHidingPromoField && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
166
190
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__divider'] }),
|
|
167
191
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__group'] },
|
|
168
192
|
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__input'] },
|
|
169
|
-
react_1.default.createElement(UserSearchSummaryPromocodeInput_1.
|
|
170
|
-
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--buttons'] }, isSelectedRow && isValid ? (react_1.default.createElement(
|
|
171
|
-
react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", onClick: onClickCancelRoomChanges, textColor: textColor }, t(Translation_1.Translation.Misc.Cancel)))) : (removeButton)),
|
|
172
|
-
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--mobile-select-label'] },
|
|
173
|
-
react_1.default.createElement(Text_1.default, { type: sizeMediumDown ? Text_1.TextType.Small : Text_1.TextType.Body, color: textColor, bold: true }, "Select room for"))));
|
|
193
|
+
react_1.default.createElement(UserSearchSummaryPromocodeInput_1.UserSearchSummaryPromocodeInput, { row: row, onChange: changePromoCode, disabled: !isSelectedRow, promocodeTextColor: textColor, useUpdatedDesign: true })))))),
|
|
194
|
+
react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row--buttons'] }, isSelectedRow && isValid ? (react_1.default.createElement(BEButton_1.default, { isText: true, size: "tiny", onClick: onClickCancelRoomChanges, textColor: textColor }, t(Translation_1.Translation.Misc.Cancel))) : (removeButton))));
|
|
174
195
|
};
|
|
175
196
|
exports.UserSearchSummaryRow = UserSearchSummaryRow;
|
|
176
197
|
//# sourceMappingURL=UserSearchSummaryRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { default as cx } from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport NumberOfAdultsPicker from '../roomBuilderProgress/NumberOfAdultsPicker';\nimport NumberOfChildrenPicker from '../roomBuilderProgress/NumberOfChildrenPicker';\nimport { UserSearchSummaryPromocdeInput } from './UserSearchSummaryPromocodeInput';\nimport styles from './UserSearchSummaryRow.module.scss';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { isAccent2ColorDark } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n const { isHidingPromoField } = useContext(CompanyContext);\n\n const engineContext = useContext(BookingEngineContext);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const updatePeopleValues = ({ adults, children, updatedPromoCode }: { adults?: number; children?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n const sizeMediumDown = engineContext.screenSize <= ScreenSize.Medium;\n\n const shouldTextBeWhite = (isValid ? isAccent2ColorDark : false) && isSelectedRow;\n\n const textColor = shouldTextBeWhite ? Color.White : undefined;\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton textColor={textColor} isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n [styles['--has-dark-bg']]: shouldTextBeWhite,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']} color={textColor}>\n Dates:\n </Text>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} color={shouldTextBeWhite ? Color.White : undefined} />\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <Text inline bold className={styles['user-search-summary-row__group-label']} color={textColor}>\n Who:\n </Text>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} labelColor={textColor} />\n </div>\n <div className={styles['user-search-summary-row__input']}>\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} labelColor={textColor} />\n </div>\n </div>\n {!isHidingPromoField && (\n <>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <div className={styles['user-search-summary-row__input']}>\n <UserSearchSummaryPromocdeInput row={row} onChange={changePromoCode} disabled={!isSelectedRow} promocodeTextColor={textColor} useUpdatedDesign />\n </div>\n </div>\n </>\n )}\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid ? (\n <>\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges} textColor={textColor}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </>\n ) : (\n removeButton\n )}\n </div>\n <div className={styles['user-search-summary-row--mobile-select-label']}>\n <Text type={sizeMediumDown ? TextType.Small : TextType.Body} color={textColor} bold>\n Select room for\n </Text>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAyF;AACzF,2CAAkD;AAClD,4DAA2C;AAE3C,+CAA2D;AAC3D,iDAA+C;AAE/C,6EAAqD;AACrD,sGAA8E;AAC9E,uEAAgE;AAChE,kEAA2D;AAC3D,kEAA2D;AAC3D,mFAA2D;AAE3D,4DAAyD;AACzD,wCAAqC;AACrC,8DAA+E;AAC/E,mEAA2C;AAC3C,uEAA+C;AAE/C,gFAAmF;AACnF,8FAA6I;AAC7I,qIAAkI;AAClI,uFAAoF;AACpF,0GAAwD;AAOjD,MAAM,oBAAoB,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAA6B,EAAE,EAAE;;IAC9E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,eAAe,GAAG,IAAA,cAAM,GAAO,CAAC;IACtC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAExD,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAC9H,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC/B,OAAO,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,KAAK,EAAE,OAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,CAAA,CAAC;IACvD,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACjG,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAuF,EAAE,EAAE;QAChK,IAAI,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,EAAE;YACtC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE;YAChE,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE;YAC5D,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC3B;QAED,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,EAAE,CAAC,IAAI,gBAAgB,KAAK,GAAG,CAAC,YAAY,EAAE,EAAE;YAC1F,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,UAAU,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YACpG,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;SACtC;QAED,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE;QACrC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,UAAU,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAEpG,IAAI,iBAAiB,EAAE;YACnB,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACrC,eAAe,CAAC,iBAAiB,CAAC,CAAC;SACtC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,SAAsB,EAAE,OAAoB,EAAE,EAAE;QACtE,IAAI,SAAS,EAAE;YACX,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SAC/B;QAED,IAAI,OAAO,EAAE;YACT,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC3B;QAED,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAwC,EAAE,EAAE;QAC1D,kBAAkB,CAAC;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAE,EAAE;QACjC,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,GAAG,EAAE;QAClC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,2BAAe,CAAC,IAAI,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACvG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,GAAG,EAAE;QACzB,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,2BAAe,CAAC,IAAI,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAC7F,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,CAAC;IAE3E,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC;IAErE,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC;IAElF,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,MAAM,YAAY,GAAG,CACjB,8BAAC,iBAAO,IACJ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,2DAA2D,EACnG,aAAa,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,EACvC,cAAc,EAAE,0CAAM,CAAC,yCAAyC,CAAC;QAEjE,uCAAK,SAAS,EAAE,0CAAM,CAAC,iCAAiC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe;YACvG,8BAAC,kBAAQ,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY,EAAC,OAAO,EAAC,iBAAiB,QAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAI,CACtJ,CACA,CACb,CAAC;IAEF,MAAM,oBAAoB,GAA6B;QACnD,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,mCAAmB,CAAC,OAAO;QAClC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;KAC/C,CAAC;IAEF,IAAI,OAAO,IAAI,CAAC,aAAa,EAAE;QAC3B,OAAO,CACH,uCAAK,SAAS,EAAE,GAAG,0CAAM,CAAC,4BAA4B,CAAC,eAAe;YAClE,uCAAK,SAAS,EAAC,8BAA8B;gBACzC,uCAAK,SAAS,EAAC,oBAAoB;oBAC/B;wBACI,8BAAC,cAAI,IAAC,MAAM,EAAE,iBAAiB;4BAC3B,8CAAS,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAU,CAClC;wBACP,8BAAC,cAAI,IAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,eAAQ,CAAC,KAAK;4BACrF,wCAAM,SAAS,EAAC,uBAAuB;gCAClC,sBAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;;gCAEpF,sBAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gCACtF,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,0CAAE,cAAc,EAAC,CAAC,CAAC,CACzC;;oCAEK,sBAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CACxF,CACN,CAAC,CAAC,CAAC,IAAI,CACL,CACJ,CACJ;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;wBAC/C,8CAAS,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAU,CAC9D,CACL;gBACL,GAAG,CAAC,gBAAgB,EAAE,IAAI,CACvB,uCAAK,SAAS,EAAC,uCAAuC;oBAClD,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IAC7C,GAAG,CAAC,YAAY,EAAE,CAChB,CACL,CACT,CACC;YACN,uCAAK,SAAS,EAAC,2BAA2B;gBACtC,uCAAK,SAAS,EAAC,uDAAuD;oBAClE,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;wBACjD,uCAAK,SAAS,EAAC,2BAA2B;4BACtC,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,eAAe,IAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAChC,CACT,CACA,CACR;gBACL,YAAY,CACX,CACJ,CACT,CAAC;KACL;IAED,OAAO,CACH,uCACI,SAAS,EAAE,IAAA,oBAAE,EAAC,0CAAM,CAAC,yBAAyB,CAAC,EAAE;YAC7C,CAAC,0CAAM,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa;YACrC,CAAC,0CAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO;YAC5B,CAAC,0CAAM,CAAC,eAAe,CAAC,CAAC,EAAE,iBAAiB;SAC/C,CAAC;QAEF,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;YACpD,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;gBACpD,8BAAC,4BAAkB,IACf,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,EAC7B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,EACzB,mBAAmB,EAAE,gBAAgB,EACrC,UAAU,QACV,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;oBAEnD,8BAAC,iBAAO,IAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC;wBAC3G,uCAAK,SAAS,EAAC,+EAA+E;4BAC1F,uCAAK,SAAS,EAAE,0CAAM,CAAC,qCAAqC,CAAC;gCACzD,uCAAK,SAAS,EAAE,0CAAM,CAAC,2CAA2C,CAAC;oCAC/D,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAO;oCAC7F,8BAAC,cAAI,IAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAK,CAAC,MAAM,EAAE,IAAI,QAAC,SAAS,EAAC,UAAU,IACjF,GAAG,CAAC,cAAc,EAAE,CAClB,CACL;gCACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,2CAA2C,CAAC;oCAC/D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAI,CACtF;gCACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,2CAA2C,CAAC;oCAC/D,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAO;oCAC9F,8BAAC,cAAI,IAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAK,CAAC,MAAM,EAAE,IAAI,QAAC,SAAS,EAAC,UAAU,IACjF,GAAG,CAAC,gBAAgB,EAAE,CACpB,CACL,CACJ,CACJ,CACA,CACO,CACnB;YACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,kCAAkC,CAAC,GAAI;YAC9D,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;gBACpD,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;oBACpD,uCAAK,SAAS,EAAE,0CAAM,CAAC,+BAA+B,CAAC;wBACnD,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAO;wBACzF,8BAAC,2CAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,oBAAoB;4BACtD,8BAAC,uDAA0B,IACvB,YAAY,EAAE;oCACV,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE;oCACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;oCAC3B,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE;iCAC5B,EACD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,EAC3D,WAAW,SACb,CAC0B,CAC9B,CACJ,CACJ;YACL,CAAC,kBAAkB,IAAI,CACpB;gBACI,uCAAK,SAAS,EAAE,0CAAM,CAAC,kCAAkC,CAAC,GAAI;gBAC9D,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;oBACpD,uCAAK,SAAS,EAAE,0CAAM,CAAC,gCAAgC,CAAC;wBACpD,8BAAC,iEAA+B,IAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,SAAG,CAChJ,CACJ,CACP,CACN,CACC;QAEN,uCAAK,SAAS,EAAE,0CAAM,CAAC,kCAAkC,CAAC,IACrD,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,CACxB,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,IAC/E,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CACpB,CACd,CAAC,CAAC,CAAC,CACA,YAAY,CACf,CACC,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAvPW,QAAA,oBAAoB,wBAuP/B","sourcesContent":["import { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { default as cx } from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { EBookingWizardTheme } from '../../../generic/BookingWizard/BookingWizard';\nimport { BookingWizardContext, BookingWizardContextType, BookingWizardOnBooking } from '../../../generic/BookingWizard/BookingWizardContext';\nimport { BookingWizardGuestSelector } from '../../../generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector';\nimport { UserSearchSummaryPromocodeInput } from './UserSearchSummaryPromocodeInput';\nimport styles from './UserSearchSummaryRow.module.scss';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { isAccent2ColorDark, hotel } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n const { isHidingPromoField } = useContext(CompanyContext);\n\n const engineContext = useContext(BookingEngineContext);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }: { adults?: number; children?: number; infants?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n updatePeopleValues({\n adults: guests.adults,\n children: guests.children,\n infants: guests.infants,\n });\n };\n\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n const sizeMediumDown = engineContext.screenSize <= ScreenSize.Medium;\n\n const shouldTextBeWhite = (isValid ? isAccent2ColorDark : false) && isSelectedRow;\n\n const textColor = shouldTextBeWhite ? Color.White : undefined;\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton textColor={textColor} isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n const bookingWizardContext: BookingWizardContextType = {\n layout: 'booking-summary',\n theme: EBookingWizardTheme.Default,\n type: sizeMediumDown ? 'top-sheet' : 'popup',\n };\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n , \n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n [styles['--has-dark-bg']]: shouldTextBeWhite,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <div className={styles['user-search-summary-card-date-range']}>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckIn)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className={styles['user-search-summary-card-date-range--icon']}>\n <Icon icon={IconType.ArrowRight2} color={shouldTextBeWhite ? Color.White : undefined} />\n </div>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckOut)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </div>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <div className={styles['user-search-summary-row__input']}>\n <div className={styles['user-search-summary-card-item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.Who)}</div>\n <BookingWizardContext.Provider value={bookingWizardContext}>\n <BookingWizardGuestSelector\n defaultValue={{\n adults: row.getAdults(),\n children: row.getChildren(),\n infants: row.getInfants(),\n }}\n onChange={setGuest}\n disableChild={engineContext.engine.getConfig().disableChild}\n disableRoom\n />\n </BookingWizardContext.Provider>\n </div>\n </div>\n </div>\n {!isHidingPromoField && (\n <>\n <div className={styles['user-search-summary-row__divider']} />\n <div className={styles['user-search-summary-row__group']}>\n <div className={styles['user-search-summary-row__input']}>\n <UserSearchSummaryPromocodeInput row={row} onChange={changePromoCode} disabled={!isSelectedRow} promocodeTextColor={textColor} useUpdatedDesign />\n </div>\n </div>\n </>\n )}\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid ? (\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges} textColor={textColor}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n ) : (\n removeButton\n )}\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import BasketRow from '../../../../models/BasketRow';
|
|
2
|
+
import { Color } from '../../../../util/Color';
|
|
3
|
+
interface NumberOfInfantsPickerProps {
|
|
4
|
+
row: BasketRow;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
labelColor?: Color;
|
|
7
|
+
}
|
|
8
|
+
export default function NumberOfInfantsPicker(props: NumberOfInfantsPickerProps): JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const hooks_1 = require("../../../../hooks/index.js");
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const react_i18next_1 = require("react-i18next");
|
|
9
|
+
const Translation_1 = require("translations/Translation");
|
|
10
|
+
const Select_1 = require("../../../generic/Select/Select");
|
|
11
|
+
const StringHelper_1 = __importDefault(require("../../../../util/StringHelper"));
|
|
12
|
+
function NumberOfInfantsPicker(props) {
|
|
13
|
+
var _a, _b, _c;
|
|
14
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
15
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
16
|
+
const selectedValue = (_b = (_a = props.row) === null || _a === void 0 ? void 0 : _a.getInfants()) !== null && _b !== void 0 ? _b : 1;
|
|
17
|
+
let maxOccupancy = Math.max((hotel === null || hotel === void 0 ? void 0 : hotel.maxOccupancy) + 1 - ((_c = props.row) === null || _c === void 0 ? void 0 : _c.getAdults()));
|
|
18
|
+
// Just in Case
|
|
19
|
+
if (maxOccupancy < 1 || isNaN(maxOccupancy)) {
|
|
20
|
+
maxOccupancy = 1;
|
|
21
|
+
}
|
|
22
|
+
return (react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxOccupancy)].map((v, value) => {
|
|
23
|
+
return {
|
|
24
|
+
text: StringHelper_1.default.pluralWithDictAndCount(value, Translation_1.Translation.Step.Date.Infant, t),
|
|
25
|
+
value: value.toString(),
|
|
26
|
+
};
|
|
27
|
+
}), value: selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.toString(), onChange: props.onChange, keyName: "value", labelName: "text", inputLabelColor: props.labelColor }));
|
|
28
|
+
}
|
|
29
|
+
exports.default = NumberOfInfantsPicker;
|
|
30
|
+
//# sourceMappingURL=NumberOfInfantsPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberOfInfantsPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.tsx"],"names":[],"mappings":";;;;;AAAA,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,+DAAkF;AAGlF,uEAA+C;AAS/C,SAAwB,qBAAqB,CAAC,KAAiC;;IAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,UAAU,EAAE,mCAAI,CAAC,CAAC;IACnD,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAuB,IAAG,CAAC,IAAG,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,CAAA,CAAC,CAAC;IAC1F,eAAe;IACf,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;QACzC,YAAY,GAAG,CAAC,CAAC;KACpB;IAED,OAAO,CACH,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YAC5D,OAAO;gBACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC1B,CAAC;QACN,CAAC,CAAC,EACF,KAAK,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,EAChB,eAAe,EAAE,KAAK,CAAC,UAAU,GACnC,CACL,CAAC;AACN,CAAC;AA5BD,wCA4BC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\n\ninterface NumberOfInfantsPickerProps {\n row: BasketRow;\n onChange: (value: string) => void;\n\n labelColor?: Color;\n}\n\nexport default function NumberOfInfantsPicker(props: NumberOfInfantsPickerProps) {\n const { hotel } = useCurrentHotel();\n\n const { t } = useTranslation();\n\n const selectedValue = props.row?.getInfants() ?? 1;\n let maxOccupancy = Math.max((hotel?.maxOccupancy as number) + 1 - props.row?.getAdults());\n // Just in Case\n if (maxOccupancy < 1 || isNaN(maxOccupancy)) {\n maxOccupancy = 1;\n }\n\n return (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy)].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Infant, t),\n value: value.toString(),\n };\n })}\n value={selectedValue?.toString()}\n onChange={props.onChange}\n keyName=\"value\"\n labelName=\"text\"\n inputLabelColor={props.labelColor}\n />\n );\n}\n"]}
|
|
@@ -45,11 +45,14 @@ const Color_1 = require("../../../../util/Color");
|
|
|
45
45
|
const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
|
|
46
46
|
const ScreenSize_1 = __importDefault(require("../../../../util/ScreenSize"));
|
|
47
47
|
const StringHelper_1 = __importDefault(require("../../../../util/StringHelper"));
|
|
48
|
+
const hooks_1 = require("../../../../hooks");
|
|
49
|
+
const NumberOfInfantsPicker_1 = __importDefault(require("./NumberOfInfantsPicker"));
|
|
48
50
|
function RoomBuilderProgressRow(props) {
|
|
49
|
-
var _a, _b, _c;
|
|
51
|
+
var _a, _b, _c, _d;
|
|
50
52
|
const context = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
51
53
|
const engineContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
52
54
|
const { isHidingPromoField } = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
55
|
+
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
53
56
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
54
57
|
const [isEditing, setIsEditing] = (0, react_1.useState)(false);
|
|
55
58
|
const { row } = props;
|
|
@@ -65,7 +68,7 @@ function RoomBuilderProgressRow(props) {
|
|
|
65
68
|
setIsEditing(false);
|
|
66
69
|
}
|
|
67
70
|
}, [context.selectBasketRow]);
|
|
68
|
-
const updatePeopleValues = ({ adults, children, updatedPromoCode }) => {
|
|
71
|
+
const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }) => {
|
|
69
72
|
if (adults && adults !== row.getAdults()) {
|
|
70
73
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
71
74
|
row.setAdults(adults);
|
|
@@ -74,6 +77,10 @@ function RoomBuilderProgressRow(props) {
|
|
|
74
77
|
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
75
78
|
row.setChildren(children);
|
|
76
79
|
}
|
|
80
|
+
if ((infants || infants === 0) && infants !== row.getInfants()) {
|
|
81
|
+
DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.ROOMS);
|
|
82
|
+
row.setInfants(infants);
|
|
83
|
+
}
|
|
77
84
|
if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {
|
|
78
85
|
DataLayer_1.default.instance.sendInteraction('Promo Code', DataLayer_1.InteractionType.FORM_FIELD, DataLayer_1.InteractionStep.ROOMS);
|
|
79
86
|
row.setPromoCode(updatedPromoCode);
|
|
@@ -156,6 +163,9 @@ function RoomBuilderProgressRow(props) {
|
|
|
156
163
|
const updateNumberOfChildrenOnChange = (value) => {
|
|
157
164
|
updatePeopleValues({ children: +value });
|
|
158
165
|
};
|
|
166
|
+
const updateNumberOfInfantsOnChange = (value) => {
|
|
167
|
+
updatePeopleValues({ infants: +value });
|
|
168
|
+
};
|
|
159
169
|
return (react_1.default.createElement("div", { className: classes }, isCurrent || !row.isValid() ? (react_1.default.createElement("div", { className: "u-flex w-100" },
|
|
160
170
|
react_1.default.createElement("div", { className: "u-flex flex-wrap flex-xl-nowrap flex-row u-w-100@xl- align-items-center" },
|
|
161
171
|
react_1.default.createElement("div", null, row.isValid() ? (react_1.default.createElement(Text_1.default, null,
|
|
@@ -176,6 +186,9 @@ function RoomBuilderProgressRow(props) {
|
|
|
176
186
|
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateChildren), wrapperClasses: "u-w-100@xl- d-flex" },
|
|
177
187
|
react_1.default.createElement("div", { className: "room-builder-progress--value u-flex-justify-center u-flex" },
|
|
178
188
|
react_1.default.createElement(NumberOfChildrenPicker_1.default, { row: row, onChange: updateNumberOfChildrenOnChange }))),
|
|
189
|
+
react_1.default.createElement(Tooltip_1.default, { title: t(Translation_1.Translation.Step.Date.UpdateInfants), wrapperClasses: "u-w-100@xl- d-flex" },
|
|
190
|
+
react_1.default.createElement("div", { className: "room-builder-progress--value u-flex-justify-center u-flex" },
|
|
191
|
+
react_1.default.createElement(NumberOfInfantsPicker_1.default, { row: row, onChange: updateNumberOfInfantsOnChange }))),
|
|
179
192
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
180
193
|
react_1.default.createElement("div", { className: "room-builder-progress--value" },
|
|
181
194
|
react_1.default.createElement(FloatingDatePicker_1.default, { startDate: row.getStartDate(), selectedDateChanged: updateDateValues, className: "u-w-100@xl- d-flex align-items-center justify-content-center", isAboveNav: true },
|
|
@@ -214,7 +227,10 @@ function RoomBuilderProgressRow(props) {
|
|
|
214
227
|
react_1.default.createElement("span", { className: "u-marg-left--light@xl" },
|
|
215
228
|
StringHelper_1.default.pluralWithDictAndCount(row.getAdults(), Translation_1.Translation.Step.Date.Adult, t),
|
|
216
229
|
",\u00A0",
|
|
217
|
-
StringHelper_1.default.pluralWithDictAndCount(row.getChildren(), Translation_1.Translation.Step.Date.Child, t)
|
|
230
|
+
StringHelper_1.default.pluralWithDictAndCount(row.getChildren(), Translation_1.Translation.Step.Date.Child, t),
|
|
231
|
+
((_d = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _d === void 0 ? void 0 : _d.supportInfants) ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
232
|
+
",\u00A0",
|
|
233
|
+
StringHelper_1.default.pluralWithDictAndCount(row.getInfants(), Translation_1.Translation.Step.Date.Infant, t))) : null))),
|
|
218
234
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Caption, color: Color_1.Color.DarkGrey },
|
|
219
235
|
react_1.default.createElement("strong", null, row.getStayDateRange('ddd, MMM D, YYYY', ' -')))),
|
|
220
236
|
row.isPromoCodeValid() && !isHidingPromoField && (react_1.default.createElement("div", { className: "u-marg-left d-flex align-items-center" },
|