@roomstay/frontend 2.6.79 → 2.6.81
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/177.bundle.js +1 -1
- package/dist/288.bundle.js +1 -1
- package/dist/375.bundle.js +1 -0
- package/dist/430.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +3 -1
- package/dist/src/api/AvailabilityAPI.js +97 -81
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/api/BookingAPI.d.ts +2 -0
- package/dist/src/api/BookingAPI.js +2 -0
- package/dist/src/api/BookingAPI.js.map +1 -1
- package/dist/src/api/ReservationAPI.d.ts +2 -3
- package/dist/src/api/ReservationAPI.js +2 -1
- package/dist/src/api/ReservationAPI.js.map +1 -1
- package/dist/src/api/TrueRewardsAPI.d.ts +4 -0
- package/dist/src/api/TrueRewardsAPI.js +37 -0
- package/dist/src/api/TrueRewardsAPI.js.map +1 -0
- package/dist/src/components/generic/BEButton.d.ts +1 -0
- package/dist/src/components/generic/BEButton.js +2 -1
- package/dist/src/components/generic/BEButton.js.map +1 -1
- package/dist/src/components/generic/Event/EventCard.js +16 -8
- package/dist/src/components/generic/Event/EventCard.js.map +1 -1
- package/dist/src/components/generic/Event/EventCarousel.js +3 -1
- package/dist/src/components/generic/Event/EventCarousel.js.map +1 -1
- package/dist/src/components/generic/PromoCodeInput.d.ts +2 -0
- package/dist/src/components/generic/PromoCodeInput.js +2 -4
- package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +9 -2
- package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
- package/dist/src/components/members/InlineSignUpSection.d.ts +1 -1
- package/dist/src/components/members/InlineSignUpSection.js.map +1 -1
- package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +1 -1
- package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +2 -2
- package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
- package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +1 -1
- package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js.map +1 -1
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.d.ts +2 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js +56 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js.map +1 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.d.ts +1 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js +80 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js.map +1 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.d.ts +6 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js +122 -0
- package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js.map +1 -0
- package/dist/src/components/steps/date/PeoplePicker.js +2 -2
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelSearchParameters.js +5 -13
- package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js +2 -1
- package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +3 -13
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +5 -15
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.js +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +3 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +55 -20
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +2 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +19 -6
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +3 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +10 -21
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/events/actions/PlacedBookingEvent.d.ts +1 -1
- package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -1
- package/dist/src/events/views/CommittedBookingEvent.d.ts +1 -1
- package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
- package/dist/src/events/views/RolledBackBookingEvent.d.ts +1 -1
- package/dist/src/events/views/RolledBackBookingEvent.js.map +1 -1
- package/dist/src/handlers/payment/TrueRewardsPaymentHandler.d.ts +2 -0
- package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js +47 -0
- package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js.map +1 -0
- package/dist/src/hooks/ConfirmationQuery.d.ts +1 -0
- package/dist/src/hooks/ConfirmationQuery.js +2 -1
- package/dist/src/hooks/ConfirmationQuery.js.map +1 -1
- package/dist/src/mockApi/ReservationAPI.d.ts +1 -1
- package/dist/src/mockApi/ReservationAPI.js.map +1 -1
- package/dist/src/models/Addon/Addon.d.ts +0 -24
- package/dist/src/models/Addon/Addon.js.map +1 -1
- package/dist/src/models/BasketAddonRow.js +3 -5
- package/dist/src/models/BasketAddonRow.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +60 -4
- package/dist/src/models/BasketRow.js +78 -9
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Fee.d.ts +1 -9
- package/dist/src/models/Fee.js.map +1 -1
- package/dist/src/models/Room/RoomRateNight.d.ts +1 -1
- package/dist/src/models/Room/RoomRateNight.js.map +1 -1
- package/dist/src/models/RoomstaySession.d.ts +1 -2
- package/dist/src/models/RoomstaySession.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +2 -2
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.d.ts +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRowModal.d.ts +1 -1
- package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +2 -2
- package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +20 -0
- package/dist/src/translations/Translation.js +20 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +20 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Analytics/Analytics.d.ts +1 -1
- package/dist/src/util/Analytics/Analytics.js.map +1 -1
- package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +2 -2
- package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
- package/dist/src/util/Analytics/UniversalAnalytics.d.ts +1 -1
- package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
- package/dist/src/util/DataLayer.d.ts +1 -1
- package/dist/src/util/DataLayer.js.map +1 -1
- package/dist/src/util/DerbysoftPixel.d.ts +1 -1
- package/dist/src/util/DerbysoftPixel.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/659.bundle.js +0 -1
- package/dist/src/models/Api/ReservationsDTO.d.ts +0 -80
- package/dist/src/models/Api/ReservationsDTO.js +0 -3
- package/dist/src/models/Api/ReservationsDTO.js.map +0 -1
- package/dist/src/util/TotalCalculator.d.ts +0 -24
- package/dist/src/util/TotalCalculator.js +0 -157
- package/dist/src/util/TotalCalculator.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const BaseAPI_1 = __importDefault(require("./BaseAPI"));
|
|
16
|
+
class TrueRewardsAPI extends BaseAPI_1.default {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.fetchBalance = (cardReference, hotelId) => __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const response = yield fetch(`${this.getApiPath()}true-rewards/${hotelId}/balance?cardReference=${cardReference}`, {
|
|
21
|
+
headers: { 'Content-Type': 'application/json' },
|
|
22
|
+
});
|
|
23
|
+
if (response.status === 400) {
|
|
24
|
+
// Invalid card
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const data = yield response.json();
|
|
28
|
+
if (response.status === 200) {
|
|
29
|
+
return data.balance;
|
|
30
|
+
}
|
|
31
|
+
console.error('True Rewards failed to fetch card balance', data);
|
|
32
|
+
throw new Error(`Failed to fetch balance: ${response.status} ${response.statusText}`);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.default = TrueRewardsAPI;
|
|
37
|
+
//# sourceMappingURL=TrueRewardsAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueRewardsAPI.js","sourceRoot":"/","sources":["src/api/TrueRewardsAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAEpC,MAAqB,cAAe,SAAQ,iBAAO;IAAnD;;QACW,iBAAY,GAAG,CAAO,aAAqB,EAAE,OAAe,EAA0B,EAAE;YAC3F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,OAAO,0BAA0B,aAAa,EAAE,EAAE;gBAC/G,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,eAAe;gBACf,OAAO,IAAI,CAAC;aACf;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,OAAO,IAAI,CAAC,OAAO,CAAC;aACvB;YAED,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AApBD,iCAoBC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\n\nexport default class TrueRewardsAPI extends BaseAPI {\n public fetchBalance = async (cardReference: string, hotelId: string): Promise<number | null> => {\n const response = await fetch(`${this.getApiPath()}true-rewards/${hotelId}/balance?cardReference=${cardReference}`, {\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.status === 400) {\n // Invalid card\n return null;\n }\n\n const data = await response.json();\n\n if (response.status === 200) {\n return data.balance;\n }\n\n console.error('True Rewards failed to fetch card balance', data);\n throw new Error(`Failed to fetch balance: ${response.status} ${response.statusText}`);\n };\n}\n"]}
|
|
@@ -23,6 +23,7 @@ export interface BEButtonProps extends PropsWithChildren<any> {
|
|
|
23
23
|
stopIconAnimation?: boolean;
|
|
24
24
|
htmlType?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];
|
|
25
25
|
onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
26
|
+
iconSize?: string;
|
|
26
27
|
[x: string]: React.ReactNode;
|
|
27
28
|
}
|
|
28
29
|
export default function BEButton(props: BEButtonProps): JSX.Element;
|
|
@@ -31,6 +31,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
31
31
|
const Icon_1 = __importStar(require("./Icon/Icon"));
|
|
32
32
|
const Color_1 = require("../../util/Color");
|
|
33
33
|
function BEButton(props) {
|
|
34
|
+
var _a;
|
|
34
35
|
const defaultProps = Object.assign({ size: 'normal', disabled: false, iconPosition: 'left', htmlType: 'button' }, props);
|
|
35
36
|
const classes = (0, classnames_1.default)({
|
|
36
37
|
'--wide': defaultProps.wide,
|
|
@@ -50,7 +51,7 @@ function BEButton(props) {
|
|
|
50
51
|
}, props.className);
|
|
51
52
|
let icon = '';
|
|
52
53
|
if (defaultProps.icon) {
|
|
53
|
-
icon = react_1.default.createElement(Icon_1.default, { icon: defaultProps.icon, size:
|
|
54
|
+
icon = react_1.default.createElement(Icon_1.default, { icon: defaultProps.icon, size: (_a = defaultProps.iconSize) !== null && _a !== void 0 ? _a : '1em' });
|
|
54
55
|
}
|
|
55
56
|
const extraProperties = {};
|
|
56
57
|
const styles = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BEButton.js","sourceRoot":"/","sources":["src/components/generic/BEButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,kDAA2E;AAE3E,uEAAgE;AAChE,wCAAqC;
|
|
1
|
+
{"version":3,"file":"BEButton.js","sourceRoot":"/","sources":["src/components/generic/BEButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { CSSProperties, PropsWithChildren, ReactNode } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\n\nexport interface BEButtonProps extends PropsWithChildren<any> {\n icon?: IconType;\n iconPosition?: 'left' | 'right';\n rounded?: boolean;\n size?: 'large' | 'normal' | 'small' | 'tiny';\n outline?: boolean;\n className?: string;\n name?: string;\n wide?: boolean;\n filled?: boolean;\n isText?: boolean;\n isLoading?: boolean;\n textColor?: Color;\n disabled?: boolean;\n primary?: boolean;\n primaryActive?: boolean;\n success?: boolean;\n danger?: boolean;\n mobileWidth?: boolean;\n stopIconAnimation?: boolean; // Rename this it's bad\n htmlType?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];\n onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n iconSize?: string;\n\n [x: string]: React.ReactNode;\n}\n\nexport default function BEButton(props: BEButtonProps) {\n const defaultProps: BEButtonProps = {\n size: 'normal',\n disabled: false,\n iconPosition: 'left',\n htmlType: 'button',\n ...props,\n };\n\n const classes = classNames(\n {\n '--wide': defaultProps.wide,\n '--primary': defaultProps.primary,\n '--primary-active': defaultProps.primaryActive,\n '--rounded': defaultProps.rounded,\n '--filled': defaultProps.filled && !defaultProps.backgroundColor,\n '--success': defaultProps.filled,\n '--danger': defaultProps.danger,\n '--loading': defaultProps.isLoading,\n '--fill@m-': defaultProps.mobileWidth,\n '--no-icon-animate': defaultProps.stopIconAnimation,\n '--icon-right': defaultProps.iconPosition === 'right',\n [`--${defaultProps.size}`]: defaultProps.size,\n '--text': defaultProps.isText,\n '--outline': defaultProps.outline,\n },\n props.className\n );\n\n let icon: ReactNode = '';\n if (defaultProps.icon) {\n icon = <Icon icon={defaultProps.icon} size={defaultProps.iconSize ?? '1em'} />;\n }\n\n const extraProperties: JSX.IntrinsicElements['button'] = {};\n const styles: CSSProperties = {};\n\n if (props.disabled || props.isLoading) {\n extraProperties.disabled = true;\n }\n\n if (props.textColor) {\n styles.color = props.textColor;\n }\n\n if (props.onClick) {\n extraProperties.onClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (!props.isLoading) {\n props.onClick?.(e);\n }\n };\n }\n\n if (props.name) {\n extraProperties.name = props.name;\n }\n let bgColor = {};\n if (defaultProps.backgroundColor) {\n bgColor = { backgroundColor: defaultProps.backgroundColor, borderColor: defaultProps.backgroundColor };\n }\n return (\n <button className={classes} {...extraProperties} style={{ ...styles, ...bgColor }} type={defaultProps.htmlType}>\n {defaultProps.isLoading && (\n <span className=\"c-spin\">\n <Icon icon={IconType.Spinner} color={props.primary ? Color.White : Color.Accent} />\n </span>\n )}\n <span>\n {defaultProps.iconPosition === 'left' && icon}\n {props.children}\n {defaultProps.iconPosition === 'right' && icon}\n </span>\n </button>\n );\n}\n"]}
|
|
@@ -29,20 +29,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
const classnames_1 = __importDefault(require("classnames"));
|
|
30
30
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
+
const react_i18next_1 = require("react-i18next");
|
|
32
33
|
const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
|
|
33
34
|
const Icon_1 = __importStar(require("../Icon/Icon"));
|
|
34
35
|
const RatioImage_1 = __importDefault(require("../RatioImage/RatioImage"));
|
|
35
36
|
const Text_1 = __importStar(require("../Text"));
|
|
37
|
+
const Translation_1 = require("../../../translations/Translation");
|
|
36
38
|
const Color_1 = require("../../../util/Color");
|
|
37
39
|
const TextAlignment_1 = require("../../../util/TextAlignment");
|
|
38
40
|
const EventCard_module_scss_1 = __importDefault(require("./EventCard.module.scss"));
|
|
39
41
|
const EventCard = ({ event, ratio }) => {
|
|
40
42
|
var _a, _b, _c, _d, _e, _f;
|
|
43
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
41
44
|
const [collapsed, setCollapsed] = (0, react_1.useState)(true);
|
|
42
|
-
const
|
|
45
|
+
const onClickToggleCollapse = (buttonEvent) => {
|
|
43
46
|
setCollapsed(!collapsed);
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
buttonEvent.preventDefault();
|
|
48
|
+
buttonEvent.stopPropagation();
|
|
49
|
+
};
|
|
50
|
+
const onClickMoreLink = (buttonEvent) => {
|
|
51
|
+
window.open(event.url, '_blank', 'noreferrer');
|
|
52
|
+
buttonEvent.preventDefault();
|
|
53
|
+
buttonEvent.stopPropagation();
|
|
46
54
|
};
|
|
47
55
|
const displayEventTime = () => {
|
|
48
56
|
const startDate = event.startDate ? (0, dayjs_1.default)(event.startDate) : undefined;
|
|
@@ -66,22 +74,22 @@ const EventCard = ({ event, ratio }) => {
|
|
|
66
74
|
react_1.default.createElement("div", { className: EventCard_module_scss_1.default.categoryMask },
|
|
67
75
|
react_1.default.createElement(Text_1.default, { align: TextAlignment_1.TextAlign.Right, color: Color_1.Color.White, bold: true }, (_c = (_b = event.tags) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.display_name)),
|
|
68
76
|
react_1.default.createElement("div", { className: EventCard_module_scss_1.default.content },
|
|
69
|
-
react_1.default.createElement("div", { className: (0, classnames_1.default)(EventCard_module_scss_1.default.header
|
|
77
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(EventCard_module_scss_1.default.header) },
|
|
70
78
|
react_1.default.createElement("div", null,
|
|
71
79
|
react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)({
|
|
72
80
|
'u-text-overflow-ellipsis-1': collapsed,
|
|
73
81
|
'u-text-overflow-ellipsis-2': !collapsed,
|
|
74
82
|
}), bold: true, color: Color_1.Color.Navy }, event.name),
|
|
75
83
|
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true }, event.eventTimeDescription ? event.eventTimeDescription : displayEventTime())),
|
|
76
|
-
react_1.default.createElement("
|
|
77
|
-
react_1.default.createElement(Icon_1.default, { color: Color_1.Color.Accent, icon: collapsed ? Icon_1.IconType.ArrowUp3 : Icon_1.IconType.ArrowDown3, size: "18px" }))),
|
|
84
|
+
react_1.default.createElement("button", { className: (0, classnames_1.default)(EventCard_module_scss_1.default.collapButton, 'u-cursor-pointer', '--no-icon-animate'), onClick: onClickToggleCollapse },
|
|
85
|
+
react_1.default.createElement(Icon_1.default, { className: (0, classnames_1.default)(EventCard_module_scss_1.default.buttonIcon), color: Color_1.Color.Accent, icon: collapsed ? Icon_1.IconType.ArrowUp3 : Icon_1.IconType.ArrowDown3, size: "18px" }))),
|
|
78
86
|
react_1.default.createElement(AutoAutoHeight_1.default, { open: !collapsed },
|
|
79
87
|
react_1.default.createElement("div", { className: "u-pad-top--light" },
|
|
80
88
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Accent }, [(_d = event === null || event === void 0 ? void 0 : event.address) === null || _d === void 0 ? void 0 : _d.line1, (_e = event === null || event === void 0 ? void 0 : event.address) === null || _e === void 0 ? void 0 : _e.line2, (_f = event === null || event === void 0 ? void 0 : event.address) === null || _f === void 0 ? void 0 : _f.city].filter((item) => !!item).join(', ')),
|
|
81
89
|
react_1.default.createElement(Text_1.default, { className: "u-text-overflow-ellipsis-3", color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small }, event.summary)),
|
|
82
|
-
event.url && (react_1.default.createElement("
|
|
90
|
+
event.url && (react_1.default.createElement("button", { className: (0, classnames_1.default)(EventCard_module_scss_1.default.linkButton, '--no-icon-animate'), onClick: onClickMoreLink },
|
|
83
91
|
react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(EventCard_module_scss_1.default.footer, 'u-flex', 'u-flex-gap--light', 'u-flex-align-center'), type: Text_1.TextType.Label, color: Color_1.Color.Accent },
|
|
84
|
-
react_1.default.createElement("div", null,
|
|
92
|
+
react_1.default.createElement("div", null, t(Translation_1.Translation.Misc.MoreInfo)),
|
|
85
93
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight }))))))));
|
|
86
94
|
};
|
|
87
95
|
exports.default = EventCard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCard.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAAoC;AACpC,kDAA0B;AAC1B,+CAA4C;
|
|
1
|
+
{"version":3,"file":"EventCard.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport classNames from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { FC, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport RatioImage from '@/components/generic/RatioImage/RatioImage';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nimport styles from './EventCard.module.scss';\n\nexport interface EventCardInterface {\n ratio: number;\n event: IRoomstayEvent;\n}\n\nconst EventCard: FC<EventCardInterface> = ({ event, ratio }) => {\n const { t } = useTranslation();\n const [collapsed, setCollapsed] = useState<boolean>(true);\n\n const onClickToggleCollapse = (buttonEvent: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setCollapsed(!collapsed);\n buttonEvent.preventDefault();\n buttonEvent.stopPropagation();\n };\n\n const onClickMoreLink = (buttonEvent: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n window.open(event.url, '_blank', 'noreferrer');\n buttonEvent.preventDefault();\n buttonEvent.stopPropagation();\n };\n\n const displayEventTime = () => {\n const startDate = event.startDate ? dayjs(event.startDate) : undefined;\n const endDate = event.endDate ? dayjs(event.endDate) : undefined;\n if ([startDate, endDate].some((date) => !date)) {\n return `${startDate ? startDate.format(`ddd, MMM D, h:mmA`) : 'Now'}${endDate ? ` - ${endDate.format(`ddd, MMM D, h:mmA`)}` : ''}`;\n } else {\n if (startDate!.isSame(endDate, 'date')) {\n return `${startDate!.format(`ddd, MMM D, h:mmA`)} - ${endDate!.format(`h:mmA`)}`;\n } else return `${startDate!.format(`ddd, MMM D, h:mmA`)} - ${endDate!.format(`ddd, MMM D, h:mmA`)}`;\n }\n };\n\n return (\n <div className={styles.root}>\n <RatioImage\n src={`${event?.image?.url}`}\n ratio={ratio}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'top center',\n }}\n />\n <div className={styles.categoryMask}>\n <Text align={TextAlign.Right} color={Color.White} bold>\n {event.tags?.[0]?.display_name}\n </Text>\n </div>\n <div className={styles.content}>\n <div className={classNames(styles.header)}>\n <div>\n <Text\n className={classNames({\n 'u-text-overflow-ellipsis-1': collapsed,\n 'u-text-overflow-ellipsis-2': !collapsed,\n })}\n bold\n color={Color.Navy}\n >\n {event.name}\n </Text>\n <Text color={Color.Accent} bold>\n {event.eventTimeDescription ? event.eventTimeDescription : displayEventTime()}\n </Text>\n </div>\n <button className={classNames(styles.collapButton, 'u-cursor-pointer', '--no-icon-animate')} onClick={onClickToggleCollapse}>\n <Icon className={classNames(styles.buttonIcon)} color={Color.Accent} icon={collapsed ? IconType.ArrowUp3 : IconType.ArrowDown3} size=\"18px\" />\n </button>\n </div>\n <AutoAutoHeight open={!collapsed}>\n <div className=\"u-pad-top--light\">\n <Text type={TextType.Small} color={Color.Accent}>\n {[event?.address?.line1, event?.address?.line2, event?.address?.city].filter((item) => !!item).join(', ')}\n </Text>\n <Text className=\"u-text-overflow-ellipsis-3\" color={Color.DarkGrey} type={TextType.Small}>\n {event.summary}\n </Text>\n </div>\n\n {event.url && (\n <button className={classNames(styles.linkButton, '--no-icon-animate')} onClick={onClickMoreLink}>\n <Text className={classNames(styles.footer, 'u-flex', 'u-flex-gap--light', 'u-flex-align-center')} type={TextType.Label} color={Color.Accent}>\n <div>{t(Translation.Misc.MoreInfo)}</div>\n <Icon icon={IconType.ArrowRight} />\n </Text>\n </button>\n )}\n </AutoAutoHeight>\n </div>\n </div>\n );\n};\n\nexport default EventCard;\n"]}
|
|
@@ -63,7 +63,9 @@ const EventCarousel = ({ small = false, data = [], defaultExpanded = false }) =>
|
|
|
63
63
|
react_1.default.createElement("div", { className: "u-pad-top--medium" },
|
|
64
64
|
react_1.default.createElement("div", { className: EventCarousel_module_scss_1.default.swiperContainer },
|
|
65
65
|
react_1.default.createElement("div", { className: "container" },
|
|
66
|
-
react_1.default.createElement(react_2.Swiper, { navigation: !small, modules: [swiper_1.Navigation], spaceBetween: small ? 20 : 30, slidesPerView: small ? 1.2 : 'auto'
|
|
66
|
+
react_1.default.createElement(react_2.Swiper, { navigation: !small, modules: [swiper_1.Navigation], spaceBetween: small ? 20 : 30, slidesPerView: small ? 1.2 : 'auto',
|
|
67
|
+
// Prevent Swiper Slide move on click event
|
|
68
|
+
noSwipingSelector: "button" }, data.map((event, index) => (react_1.default.createElement(react_2.SwiperSlide, { style: {
|
|
67
69
|
width: small ? undefined : 524,
|
|
68
70
|
}, key: index },
|
|
69
71
|
react_1.default.createElement(EventCard_1.default, { ratio: small ? 380 / 345 : 380 / 524, event: event })))))))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventCarousel.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCarousel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4DAAoC;AACpC,+CAAwE;AACxE,mCAAoC;AACpC,wCAAmD;AAEnD,iFAAyD;AACzD,qFAA6D;AAC7D,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAC3D,wCAAqC;AAErC,4FAAiD;AAQjD,MAAM,aAAa,GAA2B,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,eAAe,GAAG,KAAK,EAAE,EAAE,EAAE;IACpG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAU,eAAe,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAA,eAAO,EAC5B,GAAG,EAAE,CAAC,CAAC;QACH,KAAK,EAAE,aAAK,CAAC,MAAM;QACnB,SAAS,EAAE,IAAA,oBAAU,EAAC;YAClB,CAAC,mCAAM,CAAC,iBAAiB,CAAC,EAAE,KAAK;SACpC,CAAC;KACL,CAAC,EACF,CAAC,KAAK,CAAC,CACV,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,eAAO,EACzB,GAAG,EAAE,CACD,KAAK;QACD,CAAC,iCACQ,gBAAgB,KACnB,IAAI,EAAE,eAAQ,CAAC,IAAI,EACnB,IAAI,EAAE,IAAI,IAEhB,CAAC,iCACQ,gBAAgB,KACnB,IAAI,EAAE,OAAO,GAChB,EACX,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,GAAiC,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAI,CAAC,CAAC,CAAC,kBAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpI,OAAO,CACH,uCAAK,SAAS,EAAC,wBAAwB;QACnC,uCAAK,SAAS,EAAC,WAAW;YACtB,uCACI,SAAS,EAAE,mCAAM,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBAED,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,qBAAqB,EAAE;wBAC1F,2BAA2B,EAAE,CAAC,KAAK;wBACnC,8BAA8B,EAAE,KAAK;qBACxC,CAAC;oBAEF,8BAAC,cAAc,oBAAK,UAAU,mCAAgD;oBAC9E,8BAAC,cAAI,IAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,eAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAI,CACrH,CACJ,CACJ;QACN,8BAAC,wBAAc,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;YAC/C,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,uCAAK,SAAS,EAAE,mCAAM,CAAC,eAAe;oBAClC,uCAAK,SAAS,EAAC,WAAW;wBACtB,8BAAC,cAAM,
|
|
1
|
+
{"version":3,"file":"EventCarousel.js","sourceRoot":"/","sources":["src/components/generic/Event/EventCarousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IRoomstayEvent } from '@roomstay/core';\nimport classNames from 'classnames';\nimport React, { FC, PropsWithChildren, useMemo, useState } from 'react';\nimport { Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport EventCard from '@/components/generic/Event/EventCard';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\nimport styles from './EventCarousel.module.scss';\n\nexport interface EventCarouselProps {\n small?: boolean;\n data?: IRoomstayEvent[];\n defaultExpanded?: boolean;\n}\n\nconst EventCarousel: FC<EventCarouselProps> = ({ small = false, data = [], defaultExpanded = false }) => {\n const [expanded, setExpanded] = useState<boolean>(defaultExpanded);\n const commonTitleProps = useMemo(\n () => ({\n color: Color.Accent,\n className: classNames({\n [styles.titleWidthLimited]: small,\n }),\n }),\n [small]\n );\n const headlineProps = useMemo(\n () =>\n small\n ? {\n ...commonTitleProps,\n type: TextType.Body,\n bold: true,\n }\n : {\n ...commonTitleProps,\n size: 'large',\n },\n [small]\n );\n\n const [TitleComponent, titleProps]: [FC, PropsWithChildren<any>] = useMemo(() => [small ? Text : Headline, headlineProps], [small]);\n\n return (\n <div className=\"u-w-fluid u-pad-bottom\">\n <div className=\"container\">\n <div\n className={styles.headline}\n onClick={() => {\n setExpanded(!expanded);\n }}\n >\n <div\n className={classNames('u-flex u-w-100', 'u-flex-nowrap', 'u-flex-gap', 'u-flex-align-center', {\n 'u-flex-justify-flex-start': !small,\n 'u-flex-justify-space-between': small,\n })}\n >\n <TitleComponent {...titleProps}>We recommend during your stay</TitleComponent>\n <Icon icon={!expanded ? IconType.ArrowDown3 : IconType.ArrowUp3} color={Color.Accent} size={small ? '18px' : '32px'} />\n </div>\n </div>\n </div>\n <AutoAutoHeight open={expanded} startOpen={expanded}>\n <div className=\"u-pad-top--medium\">\n <div className={styles.swiperContainer}>\n <div className=\"container\">\n <Swiper\n navigation={!small}\n modules={[Navigation]}\n spaceBetween={small ? 20 : 30}\n slidesPerView={small ? 1.2 : 'auto'}\n // Prevent Swiper Slide move on click event\n noSwipingSelector=\"button\"\n >\n {data.map((event, index) => (\n <SwiperSlide\n style={{\n width: small ? undefined : 524,\n }}\n key={index}\n >\n <EventCard ratio={small ? 380 / 345 : 380 / 524} event={event} />\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n </div>\n </div>\n </AutoAutoHeight>\n </div>\n );\n};\n\nexport default EventCarousel;\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import BasketRow from '../../models/BasketRow';
|
|
1
2
|
interface PromoCodeInputProps {
|
|
2
3
|
value: string;
|
|
3
4
|
onChange: (code: string) => void;
|
|
@@ -6,6 +7,7 @@ interface PromoCodeInputProps {
|
|
|
6
7
|
className?: string;
|
|
7
8
|
variant?: 'outlined' | 'text';
|
|
8
9
|
hideValidText?: boolean;
|
|
10
|
+
row: BasketRow;
|
|
9
11
|
}
|
|
10
12
|
export default function PromoCodeInput(props: PromoCodeInputProps): JSX.Element;
|
|
11
13
|
export {};
|
|
@@ -119,7 +119,7 @@ function PromoCodeInput(props) {
|
|
|
119
119
|
};
|
|
120
120
|
return (react_1.default.createElement("div", { ref: firstUpdate, className: props.className },
|
|
121
121
|
react_1.default.createElement("div", { className: "u-pos-rel" },
|
|
122
|
-
props.variant === 'text' ? (react_1.default.createElement("input", { className: (0, classnames_1.default)(BookingWizardPromoCode_module_scss_1.default.container, { [BookingWizardPromoCode_module_scss_1.default['--error']]: promoCodeStatus === 'error', [BookingWizardPromoCode_module_scss_1.default['--success']]: promoCodeStatus === 'success' }), type: "text", value: (props.direct ? props.value : promoCode).toUpperCase()
|
|
122
|
+
props.variant === 'text' ? (react_1.default.createElement("input", { className: (0, classnames_1.default)(BookingWizardPromoCode_module_scss_1.default.container, { [BookingWizardPromoCode_module_scss_1.default['--error']]: promoCodeStatus === 'error', [BookingWizardPromoCode_module_scss_1.default['--success']]: promoCodeStatus === 'success' }), type: "text", value: (props.direct ? props.value : promoCode).toUpperCase(), placeholder: t(Translation_1.Translation.Step.Date.PromoCodePlaceHolder), onChange: setPromoCodeOnChange, onKeyPress: handleKeyPress })) : (react_1.default.createElement(TextBox_1.default, { value: (props.direct ? props.value : promoCode).toUpperCase(), placeholder: t(Translation_1.Translation.Step.Date.PromoCode), wide: true, validationStatus: promoCodeStatus, onChange: setPromoCodeOnChange, onKeyPress: handleKeyPress })),
|
|
123
123
|
showPromoRemove && (react_1.default.createElement(Tooltip_1.default, { title: "Remove Promo code" },
|
|
124
124
|
react_1.default.createElement("div", { className: "people-picker--promo-icon", onClick: clearPromoCode },
|
|
125
125
|
react_1.default.createElement(Icon_1.default, { size: "24px", icon: Icon_1.IconType.Close, color: Color_1.Color.Grey })))),
|
|
@@ -135,9 +135,7 @@ function PromoCodeInput(props) {
|
|
|
135
135
|
value: props.value,
|
|
136
136
|
})))),
|
|
137
137
|
props.valid === false && (react_1.default.createElement("div", { className: "u-marg-top" },
|
|
138
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Alert },
|
|
139
|
-
value: props.value,
|
|
140
|
-
}))))))));
|
|
138
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Alert }, props.row.getPromoCodeWarningMessage())))))));
|
|
141
139
|
}
|
|
142
140
|
exports.default = PromoCodeInput;
|
|
143
141
|
//# sourceMappingURL=PromoCodeInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport styles from '@/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { Color } from '@/util/Color';\n\nimport TextBox from './TextBox';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n variant?: 'outlined' | 'text';\n\n hideValidText?: boolean;\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [valueChangedBeforeSubmit, setValueChangedBeforeSubmit] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n setValueChangedBeforeSubmit(true);\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter' && valueChangedBeforeSubmit) {\n setValueChangedBeforeSubmit(false);\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n {props.variant === 'text' ? (\n <input\n className={classNames(styles.container, { [styles['--error']]: promoCodeStatus === 'error', [styles['--success']]: promoCodeStatus === 'success' })}\n type=\"text\"\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCodePlaceHolder)}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n ) : (\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n )}\n\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {!props.hideValidText && (\n <>\n {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {t(Translation.Step.Date.PromoCodeValidation.Invalid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport styles from '@/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\n\nimport TextBox from './TextBox';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n variant?: 'outlined' | 'text';\n\n hideValidText?: boolean;\n row: BasketRow;\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [valueChangedBeforeSubmit, setValueChangedBeforeSubmit] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n setValueChangedBeforeSubmit(true);\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter' && valueChangedBeforeSubmit) {\n setValueChangedBeforeSubmit(false);\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n {props.variant === 'text' ? (\n <input\n className={classNames(styles.container, { [styles['--error']]: promoCodeStatus === 'error', [styles['--success']]: promoCodeStatus === 'success' })}\n type=\"text\"\n value={(props.direct ? props.value : promoCode).toUpperCase()}\n placeholder={t(Translation.Step.Date.PromoCodePlaceHolder)}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n ) : (\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase()}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n )}\n\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {!props.hideValidText && (\n <>\n {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {props.row.getPromoCodeWarningMessage()}\n </Text>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -49,7 +49,7 @@ const Option = ({ option: optionProp, value: valueProp, onChange, renderChildren
|
|
|
49
49
|
const [ref, setRef] = (0, react_1.useState)(null);
|
|
50
50
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
51
51
|
const option = isGroup && valueProp ? options.find(({ value }) => value === valueProp) || optionProp : optionProp;
|
|
52
|
-
const radioButton = (react_1.default.createElement(RadioButton_1.RadioButton, { headerRef: setRef, className: RadioButtonGroup_module_scss_1.default.item,
|
|
52
|
+
const radioButton = (react_1.default.createElement(RadioButton_1.RadioButton, { headerRef: setRef, className: RadioButtonGroup_module_scss_1.default.item, key: option === null || option === void 0 ? void 0 : option.value, checked: !(option === null || option === void 0 ? void 0 : option.disabled) && (option === null || option === void 0 ? void 0 : option.value) === valueProp, onChange: () => {
|
|
53
53
|
if (option === null || option === void 0 ? void 0 : option.disabled)
|
|
54
54
|
return;
|
|
55
55
|
if (isGroup)
|
|
@@ -57,13 +57,20 @@ const Option = ({ option: optionProp, value: valueProp, onChange, renderChildren
|
|
|
57
57
|
else if ((option === null || option === void 0 ? void 0 : option.value) && (option === null || option === void 0 ? void 0 : option.value) !== valueProp)
|
|
58
58
|
onChange === null || onChange === void 0 ? void 0 : onChange(option.value, optionProp.value);
|
|
59
59
|
}, label: option === null || option === void 0 ? void 0 : option.label, disabled: option === null || option === void 0 ? void 0 : option.disabled, renderContent: option === null || option === void 0 ? void 0 : option.renderContent }));
|
|
60
|
+
const isSelected = !isGroup && (option === null || option === void 0 ? void 0 : option.value) === valueProp;
|
|
61
|
+
const isExpanded = isGroup && open;
|
|
62
|
+
const dropDownIndicatorStyle = !(option === null || option === void 0 ? void 0 : option.renderContent) && !isGroup
|
|
63
|
+
? { transform: 'translateX(1px) translateY(-2px) rotate(270deg)' }
|
|
64
|
+
: isSelected || isExpanded
|
|
65
|
+
? { transform: 'scaleY(-1) translateY(2px)' }
|
|
66
|
+
: undefined;
|
|
60
67
|
if ((option === null || option === void 0 ? void 0 : option.disabled) && (option === null || option === void 0 ? void 0 : option.disabledReason)) {
|
|
61
68
|
return (react_1.default.createElement(Tooltip_1.default, { key: option === null || option === void 0 ? void 0 : option.value, wrapperClasses: RadioButtonGroup_module_scss_1.default.wrapper, title: option === null || option === void 0 ? void 0 : option.disabledReason }, radioButton));
|
|
62
69
|
}
|
|
63
70
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
64
71
|
react_1.default.createElement("div", { key: option === null || option === void 0 ? void 0 : option.value, className: RadioButtonGroup_module_scss_1.default.wrapper },
|
|
65
72
|
radioButton,
|
|
66
|
-
!isSubOption && (react_1.default.createElement("div", { className: RadioButtonGroup_module_scss_1.default.childrenIndicator, style:
|
|
73
|
+
!isSubOption && (react_1.default.createElement("div", { className: RadioButtonGroup_module_scss_1.default.childrenIndicator, style: dropDownIndicatorStyle },
|
|
67
74
|
react_1.default.createElement(Icon_1.default, { size: "24px", icon: Icon_1.IconType.Dropdown })))),
|
|
68
75
|
options && (react_1.default.createElement(Overlay_1.Overlay, { onClose: () => setOpen(false), className: RadioButtonGroup_module_scss_1.default.overlay, hideStyles: true, containerClassName: "u-w-100", open: open, followElement: ref || undefined, offset: [0, 0], placement: "bottom-start" },
|
|
69
76
|
react_1.default.createElement(RadioButtonGroup, { options: options.map((option) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioButtonGroup.js","sourceRoot":"/","sources":["src/components/generic/RadioButtonGroup/RadioButtonGroup.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiE;AAEjE,uEAAgE;AAChE,kEAA+D;AAC/D,mFAAgF;AAChF,mFAA2D;AAE3D,kGAAoD;AAoBpD,MAAM,MAAM,GAAG,CAAiC,EAC5C,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,EAChB,QAAQ,EACR,qBAAqB,EACrB,WAAW,GAOd,EAAe,EAAE;IACd,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CAAC;IAClC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAwB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACjD,MAAM,MAAM,GAA2C,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1J,MAAM,WAAW,GAAG,CAChB,8BAAC,yBAAW,IACR,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,sCAAM,CAAC,IAAI,EACtB,
|
|
1
|
+
{"version":3,"file":"RadioButtonGroup.js","sourceRoot":"/","sources":["src/components/generic/RadioButtonGroup/RadioButtonGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactElement, ReactNode, useState } from 'react';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport { RadioButton } from '@/components/generic/RadioButtonGroup/RadioButton';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\n\nimport styles from './RadioButtonGroup.module.scss';\n\nexport interface IRadioButtonOption<TValue extends string = string> {\n value: TValue;\n label?: ReactNode;\n disabled?: boolean;\n /** Enabled a tooltip that gives more info on why the field is disabled */\n disabledReason?: string;\n renderContent?: () => ReactNode;\n options?: IRadioButtonOption<TValue>[];\n}\n\nexport interface IRadioButtonGroupProps<TValue extends string = string> {\n options?: IRadioButtonOption<TValue>[];\n value?: TValue;\n onChange?: (value: TValue, optionValue?: TValue) => void;\n renderChildrenContent?: boolean;\n isSubGroup?: boolean;\n}\n\nconst Option = <TValue extends string = string>({\n option: optionProp,\n value: valueProp,\n onChange,\n renderChildrenContent,\n isSubOption,\n}: {\n option: IRadioButtonOption<TValue>;\n value?: TValue;\n onChange?: (value: TValue, optionValue?: TValue) => void;\n renderChildrenContent?: boolean;\n isSubOption?: boolean;\n}): JSX.Element => {\n const options = optionProp.options;\n const isGroup = !!options?.length;\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n const [open, setOpen] = useState<boolean>(false);\n const option: IRadioButtonOption<TValue> | undefined = isGroup && valueProp ? options.find(({ value }) => value === valueProp) || optionProp : optionProp;\n const radioButton = (\n <RadioButton\n headerRef={setRef}\n className={styles.item}\n key={option?.value}\n checked={!option?.disabled && option?.value === valueProp}\n onChange={() => {\n if (option?.disabled) return;\n if (isGroup) setOpen(!open);\n else if (option?.value && option?.value !== valueProp) onChange?.(option.value, optionProp.value);\n }}\n label={option?.label}\n disabled={option?.disabled}\n renderContent={option?.renderContent}\n />\n );\n\n const isSelected = !isGroup && option?.value === valueProp;\n const isExpanded = isGroup && open;\n const dropDownIndicatorStyle: React.CSSProperties | undefined =\n !option?.renderContent && !isGroup\n ? { transform: 'translateX(1px) translateY(-2px) rotate(270deg)' }\n : isSelected || isExpanded\n ? { transform: 'scaleY(-1) translateY(2px)' }\n : undefined;\n\n if (option?.disabled && option?.disabledReason) {\n return (\n <Tooltip key={option?.value} wrapperClasses={styles.wrapper} title={option?.disabledReason}>\n {radioButton}\n </Tooltip>\n );\n }\n\n return (\n <>\n <div key={option?.value} className={styles.wrapper}>\n {radioButton}\n {!isSubOption && (\n <div className={styles.childrenIndicator} style={dropDownIndicatorStyle}>\n <Icon size=\"24px\" icon={IconType.Dropdown} />\n </div>\n )}\n </div>\n {options && (\n <Overlay\n onClose={() => setOpen(false)}\n className={styles.overlay}\n hideStyles\n containerClassName=\"u-w-100\"\n open={open}\n followElement={ref || undefined}\n offset={[0, 0]}\n placement=\"bottom-start\"\n >\n <RadioButtonGroup\n options={options.map((option) => {\n const { renderContent, ...rest } = option;\n if (!renderChildrenContent) return rest;\n return option;\n })}\n onChange={(subValue) => {\n onChange?.(optionProp.value, subValue);\n setOpen(false);\n }}\n value={valueProp}\n isSubGroup\n />\n </Overlay>\n )}\n </>\n );\n};\n\nconst RadioButtonGroup = <TValue extends string = string>({\n options = [],\n value: valueProp,\n onChange,\n renderChildrenContent,\n isSubGroup,\n}: IRadioButtonGroupProps<TValue>): ReactElement | null => {\n return (\n <div className={styles.root}>\n {options.map((rawOption) => (\n <Option key={rawOption.value} option={rawOption} value={valueProp} onChange={onChange} renderChildrenContent={renderChildrenContent} isSubOption={isSubGroup} />\n ))}\n </div>\n );\n};\n\nexport default RadioButtonGroup;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineSignUpSection.js","sourceRoot":"/","sources":["src/components/members/InlineSignUpSection.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkG;
|
|
1
|
+
{"version":3,"file":"InlineSignUpSection.js","sourceRoot":"/","sources":["src/components/members/InlineSignUpSection.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkG;AAElG,+CAAoD;AACpD,iDAA+C;AAC/C,0DAAuD;AAEvD,iFAAyD;AACzD,kEAAmC;AACnC,6EAAqD;AACrD,6EAAqD;AACrD,kEAA2D;AAC3D,mFAAgF;AAChF,mEAAgE;AAChE,mEAAgE;AAChE,kGAA0E;AAC1E,wCAAqC;AAErC,IAAK,cAKJ;AALD,WAAK,cAAc;IACf,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mDAAiC,CAAA;AACrC,CAAC,EALI,cAAc,KAAd,cAAc,QAKlB;AAOM,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACnE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnF,IAAI,CAAC,6BAAmB,CAAC,QAAQ,EAAE,IAAI,cAAc,EAAE;QACnD,OAAO,IAAI,CAAC;KACf;IAED,2HAA2H;IAC3H,MAAM,oBAAoB,GAAG,GAAG,CAAC,YAAY,KAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAA,CAAC;IACpE,IAAI,CAAC,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,SAAS,CAAA,IAAI,CAAC,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,QAAQ,CAAA,IAAI,CAAC,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,KAAK,CAAA,EAAE;QACrG,OAAO,IAAI,CAAC;KACf;IAED,MAAM,mBAAmB,GAAG,GAAS,EAAE;QACnC,IAAI;YACA,MAAM,oBAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC9G;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;SACvD;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QACzB,MAAM,mBAAmB,EAAE,CAAC;IAChC,CAAC,CAAA,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,YAAY,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,YAAY,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,YAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5C,YAAY,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACH,uCAAK,SAAS,EAAC,8BAA8B;QACzC,8BAAC,wBAAc,IAAC,IAAI,EAAE,SAAS,KAAK,cAAc,CAAC,OAAO,EAAE,SAAS;YACjE,uCAAK,SAAS,EAAC,gBAAgB;gBAC3B,uCAAK,SAAS,EAAC,eAAe;oBAC1B,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,IACnC,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAChC,CACT;gBACN,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,IAC3C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAC7C,CACL;gBACN,uCAAK,SAAS,EAAC,6CAA6C;oBACxD,8BAAC,kBAAQ,IAAC,OAAO,QAAC,MAAM,QAAC,MAAM,QAAC,OAAO,EAAE,oBAAoB,IACxD,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CACjC,CACT,CACJ,CACO;QACjB,8BAAC,wBAAc,IAAC,IAAI,EAAE,SAAS,KAAK,cAAc,CAAC,MAAM;YACrD,uCAAK,SAAS,EAAC,iCAAiC;gBAC5C,8BAAC,uBAAU,IACP,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,UAAU,EACpB,aAAa,EAAE;wBACX,KAAK,EAAE,oBAAoB,CAAC,KAAK;wBACjC,SAAS,EAAE,oBAAoB,CAAC,SAAS;wBACzC,QAAQ,EAAE,oBAAoB,CAAC,QAAQ;qBAC1C,GACH,CACA,CACO;QACjB,8BAAC,wBAAc,IAAC,IAAI,EAAE,SAAS,KAAK,cAAc,CAAC,MAAM;YACrD,uCAAK,SAAS,EAAC,iCAAiC;gBAC5C,8BAAC,uBAAU,IAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,GAAI,CACzE,CACO;QACjB,8BAAC,wBAAc,IAAC,IAAI,EAAE,SAAS,KAAK,cAAc,CAAC,cAAc;YAC7D,uCAAK,SAAS,EAAC,iCAAiC;gBAC5C,8BAAC,uCAAkB,IAAC,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,GAAI,CACzE,CACO,CACf,CACT,CAAC;AACN,CAAC,CAAC;AA5FW,QAAA,mBAAmB,uBA4F9B","sourcesContent":["import { AuthenticationContext, CompanyContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { ReservationDTO } from '@roomstay/core';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ForgotPasswordForm } from '@/components/User/Forms/ForgotPasswordForm';\nimport { SignInForm } from '@/components/User/Forms/SignInForm';\nimport { SignUpForm } from '@/components/User/Forms/SignUpForm';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { Color } from '@/util/Color';\n\nenum EViewingScreen {\n Initial = 'Initial',\n SignUp = 'SignUp',\n SignIn = 'SignIn',\n ForgotPassword = 'ForgotPassword',\n}\n\ninterface InlineSignUpSectionProps {\n reservation: ReservationDTO;\n hotelId: string;\n}\n\nexport const InlineSignUpSection = (props: InlineSignUpSectionProps) => {\n const { reservation, hotelId } = props;\n const { t } = useTranslation();\n const { reset: cognitoReset } = useContext(AuthenticationContext);\n const ccx = useContext(CompanyContext);\n const { roomstayMember } = useContext(RoomstayMemberContext);\n\n const [viewState, setViewState] = useState<EViewingScreen>(EViewingScreen.Initial);\n\n if (!MemberPortalFeature.isActive() || roomstayMember) {\n return null;\n }\n\n // If the user registered an internal account during signup, use those details, otherwise, use details from the reservation\n const userDetailsForSignUp = ccx.signedInUser || reservation?.guest;\n if (!userDetailsForSignUp?.firstName || !userDetailsForSignUp?.lastName || !userDetailsForSignUp?.email) {\n return null;\n }\n\n const linkBookingToMember = async () => {\n try {\n await API.Reservation.linkBookingToMember(hotelId, reservation.reservationNumber, reservation.guest.email);\n } catch (error) {\n console.error('Failed to link reservation:', error);\n }\n };\n\n const onSuccess = async () => {\n await linkBookingToMember();\n };\n\n const onCreateAccountClick = () => {\n setViewState(EViewingScreen.SignUp);\n cognitoReset();\n };\n\n const showSignIn = () => {\n setViewState(EViewingScreen.SignIn);\n cognitoReset();\n };\n\n const showForgotPassword = () => {\n setViewState(EViewingScreen.ForgotPassword);\n cognitoReset();\n };\n\n return (\n <div className=\"u-marg-bottom--massive w-100\">\n <AutoAutoHeight open={viewState === EViewingScreen.Initial} startOpen>\n <div className=\"u-align-center\">\n <div className=\"u-marg-bottom\">\n <Headline size=\"large\" color={Color.Navy}>\n {t(Translation.Navigation.SignUp.Title)}\n </Headline>\n </div>\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Body} color={Color.DarkGrey}>\n {t(Translation.Navigation.SignIn.GetLowerPrices)}\n </Text>\n </div>\n <div className=\"u-marg-bottom d-flex justify-content-center\">\n <BEButton primary filled center onClick={onCreateAccountClick}>\n {t(Translation.Navigation.SignIn.SignUp)}\n </BEButton>\n </div>\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={viewState === EViewingScreen.SignUp}>\n <div className=\"u-fill-white u-pad--heavy w-100\">\n <SignUpForm\n onDone={onSuccess}\n onSignIn={showSignIn}\n defaultValues={{\n email: userDetailsForSignUp.email,\n firstName: userDetailsForSignUp.firstName,\n lastName: userDetailsForSignUp.lastName,\n }}\n />\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={viewState === EViewingScreen.SignIn}>\n <div className=\"u-fill-white u-pad--heavy w-100\">\n <SignInForm onForgotPassword={showForgotPassword} onSignedIn={onSuccess} />\n </div>\n </AutoAutoHeight>\n <AutoAutoHeight open={viewState === EViewingScreen.ForgotPassword}>\n <div className=\"u-fill-white u-pad--heavy w-100\">\n <ForgotPasswordForm onCancelled={showSignIn} onPasswordReset={onSuccess} />\n </div>\n </AutoAutoHeight>\n </div>\n );\n};\n"]}
|
|
@@ -27,6 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.CommonAddonSummary = void 0;
|
|
30
|
+
const core_1 = require("@roomstay/core");
|
|
30
31
|
const react_1 = __importDefault(require("react"));
|
|
31
32
|
const react_i18next_1 = require("react-i18next");
|
|
32
33
|
const Translation_1 = require("translations/Translation");
|
|
@@ -34,7 +35,6 @@ const Currency_1 = __importDefault(require("../../../generic/Currency"));
|
|
|
34
35
|
const HtmlContentViewer_1 = require("../../../generic/HtmlContentViewer");
|
|
35
36
|
const Text_1 = __importStar(require("../../../generic/Text"));
|
|
36
37
|
const Color_1 = require("../../../../util/Color");
|
|
37
|
-
const TotalCalculator_1 = require("../../../../util/TotalCalculator");
|
|
38
38
|
const CommonAddonSummary = (props) => {
|
|
39
39
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
40
40
|
const { addons } = props;
|
|
@@ -42,7 +42,7 @@ const CommonAddonSummary = (props) => {
|
|
|
42
42
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
43
43
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Grey }, t(Translation_1.Translation.Step.Thanks.AddOnItems))),
|
|
44
44
|
addons.map((addon, index) => {
|
|
45
|
-
const { price, adultPrice, childPrice, displayPrice } =
|
|
45
|
+
const { price, adultPrice, childPrice, displayPrice } = core_1.TotalCalculator.calculateReservationAddonTotal(addon);
|
|
46
46
|
return (react_1.default.createElement("div", { className: "u-marg-bottom", key: index },
|
|
47
47
|
react_1.default.createElement("div", { className: "u-marg-bottom--light" },
|
|
48
48
|
react_1.default.createElement(Text_1.default, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonAddonSummary.js","sourceRoot":"/","sources":["src/components/steps/common/CommonAddonSummary/CommonAddonSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,8EAA2E;AAC3E,kEAA2D;
|
|
1
|
+
{"version":3,"file":"CommonAddonSummary.js","sourceRoot":"/","sources":["src/components/steps/common/CommonAddonSummary/CommonAddonSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAsE;AACtE,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,8EAA2E;AAC3E,kEAA2D;AAC3D,wCAAqC;AAM9B,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACjE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CACxB;QACI,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,IACxC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CACnC,CACL;QACL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,sBAAe,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAE9G,OAAO,CACH,uCAAK,SAAS,EAAC,eAAe,EAAC,GAAG,EAAE,KAAK;gBACrC,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,8BAAC,cAAI;wBACD,8CAAS,KAAK,CAAC,IAAI,CAAU,CAC1B,CACL;gBACN,uCAAK,SAAS,EAAC,2BAA2B;oBACtC,uCAAK,SAAS,EAAC,EAAE;wBACZ,CAAC,CAAC,KAAK,IAAI,CACR,uCAAK,SAAS,EAAC,6EAA6E;4BACxF,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,SAAS,EAAC,UAAU,IAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAQ;4BAC/E,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCACtB,8BAAC,qCAAiB,IAAC,OAAO,EAAE,KAAK,CAAC,WAAW,GAAI,CAC9C,CACL,CACT;wBACA,CAAC,CAAC,UAAU,IAAI,CACb,uCAAK,SAAS,EAAC,+CAA+C;4BAC1D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCAAG,KAAK,CAAC,aAAa;0CAAe,CAC7D,CACT;wBACA,CAAC,CAAC,UAAU,IAAI,CACb,uCAAK,SAAS,EAAC,+CAA+C;4BAC1D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;gCAAG,KAAK,CAAC,aAAa;4CAAiB,CAC/D,CACT,CACC;oBACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ;wBAC7C,8BAAC,kBAAQ,QAAE,YAAY,CAAY,CAChC,CACL,CACJ,CACT,CAAC;QACN,CAAC,CAAC,CACH,CACN,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AAnDW,QAAA,kBAAkB,sBAmD7B","sourcesContent":["import { ReservationAddonDTO, TotalCalculator } from '@roomstay/core';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Currency from '@/components/generic/Currency';\nimport { HtmlContentViewer } from '@/components/generic/HtmlContentViewer';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\ntype CommonAddonSummaryProps = {\n addons: ReservationAddonDTO[];\n};\n\nexport const CommonAddonSummary = (props: CommonAddonSummaryProps) => {\n const { t } = useTranslation();\n const { addons } = props;\n\n return addons.length >= 1 ? (\n <>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.Grey}>\n {t(Translation.Step.Thanks.AddOnItems)}\n </Text>\n </div>\n {addons.map((addon, index) => {\n const { price, adultPrice, childPrice, displayPrice } = TotalCalculator.calculateReservationAddonTotal(addon);\n\n return (\n <div className=\"u-marg-bottom\" key={index}>\n <div className=\"u-marg-bottom--light\">\n <Text>\n <strong>{addon.name}</strong>\n </Text>\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"\">\n {!!price && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex align-items-center u-flex-gap\">\n <Text type={TextType.Small} className=\"u-nowrap\">{`${addon.quantity} x`}</Text>\n <Text type={TextType.Small}>\n <HtmlContentViewer content={addon.description} />\n </Text>\n </div>\n )}\n {!!adultPrice && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{addon.adultQuantity} Adults</Text>\n </div>\n )}\n {!!childPrice && (\n <div className=\"u-marg-top--light u-marg-bottom--light u-flex\">\n <Text type={TextType.Small}>{addon.childQuantity} Children</Text>\n </div>\n )}\n </div>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <Currency>{displayPrice}</Currency>\n </Text>\n </div>\n </div>\n );\n })}\n </>\n ) : null;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemisedFeesSummary.js","sourceRoot":"/","sources":["src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ItemisedFeesSummary.js","sourceRoot":"/","sources":["src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAE1B,6EAAqD;AACrD,kEAA2D;AAC3D,wCAAqC;AACrC,wDAAiD;AAM1C,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAAE,EAAE;IAClE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,uCAAK,SAAS,EAAC,sBAAsB,IAChC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACf,uCAAK,SAAS,EAAC,sBAAsB,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI;QAC/C,8BAAC,cAAI,IAAC,IAAI,QAAC,KAAK,EAAE,yBAAS,CAAC,KAAK,IAC5B,GAAG,CAAC,IAAI,CACN;QACN,GAAG,CAAC,WAAW,IAAI,CAChB,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAS,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,4BAA4B,IAC5G,GAAG,CAAC,WAAW,CACb,CACV;QACD,8BAAC,cAAI,IAAC,IAAI,QAAC,KAAK,EAAE,yBAAS,CAAC,KAAK;YAC7B,8BAAC,kBAAQ,QAAE,GAAG,CAAC,MAAM,CAAY,CAC9B,CACL,CACT,CAAC,CACA,CACT,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AAtBW,QAAA,mBAAmB,uBAsB9B","sourcesContent":["import { SimpleItemisedFee } from '@roomstay/core';\nimport React from 'react';\n\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\ntype ItemisedFeeSummaryProps = {\n fees: SimpleItemisedFee[];\n};\n\nexport const ItemisedFeesSummary = (props: ItemisedFeeSummaryProps) => {\n const { fees } = props;\n\n return fees.length > 0 ? (\n <div className=\"u-marg-bottom--heavy\">\n {fees.map((fee) => (\n <div className=\"u-marg-bottom--light\" key={fee.name}>\n <Text bold align={TextAlign.Right}>\n {fee.name}\n </Text>\n {fee.description && (\n <Text type={TextType.Small} align={TextAlign.Right} color={Color.DarkGrey} className=\"u-marg-top-bottom--lighter\">\n {fee.description}\n </Text>\n )}\n <Text bold align={TextAlign.Right}>\n <Currency>{fee.amount}</Currency>\n </Text>\n </div>\n ))}\n </div>\n ) : null;\n};\n"]}
|