@roomstay/frontend 2.3.39 → 2.3.41

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.
@@ -51,7 +51,7 @@ function StepConfirmationPolicyBlock() {
51
51
  policiesGrouped[0] = { rooms: [{ index: 1, room: rooms[0] }] };
52
52
  }
53
53
  return (react_1.default.createElement("div", { className: "u-marg-bottom" }, Object.values(policiesGrouped).map((group, index) => {
54
- var _a, _b;
54
+ var _a, _b, _c;
55
55
  const firstRoom = group.rooms[0];
56
56
  return (react_1.default.createElement("div", { className: "u-marg-bottom--heavy", key: index },
57
57
  react_1.default.createElement("div", { className: "u-marg-bottom" }, group.rooms.map((roomWithIndex) => {
@@ -66,13 +66,13 @@ function StepConfirmationPolicyBlock() {
66
66
  " - ", (_a = roomWithIndex.room.getRate()) === null || _a === void 0 ? void 0 :
67
67
  _a.name));
68
68
  })),
69
- react_1.default.createElement("div", { className: "u-marg-bottom" },
69
+ react_1.default.createElement("div", { className: "u-marg-bottom" }, ((_a = firstRoom.room.getRate()) === null || _a === void 0 ? void 0 : _a.getGuaranteePolicy()) ? (react_1.default.createElement(react_1.default.Fragment, null,
70
70
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true }, t(Translation_1.Translation.Misc.GuaranteePolicy)),
71
71
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, preformatted: true },
72
- react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_a = firstRoom.room.getRate()) === null || _a === void 0 ? void 0 : _a.getGuaranteePolicy()) || '' } }))),
72
+ react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_b = firstRoom.room.getRate()) === null || _b === void 0 ? void 0 : _b.getGuaranteePolicy()) || '' } })))) : null),
73
73
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true }, t(Translation_1.Translation.Misc.CancellationPolicy)),
74
74
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, preformatted: true },
75
- react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_b = firstRoom.room.getRate()) === null || _b === void 0 ? void 0 : _b.getCancellationPolicy()) || '' } }))));
75
+ react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_c = firstRoom.room.getRate()) === null || _c === void 0 ? void 0 : _c.getCancellationPolicy()) || '' } }))));
76
76
  })));
77
77
  }, [basketContext.currentBasketRows]);
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationPolicyBlock.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationPolicyBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,kEAA2D;AAG3D,SAAwB,2BAA2B;IAC/C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEhD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,eAAe,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAChB,MAAM,eAAe,GAAwE,EAAE,CAAC;QAChG,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,SAAS,EAAE,CAAC;gBAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAC,CAAC;gBAEhF,IAAI,CAAC,KAAK,EAAE;oBACR,KAAK,GAAG,eAAe,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAC/F;gBAED,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;SACN;aAAM;YACH,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAClE;QAED,OAAO,CACH,uCAAK,SAAS,EAAC,eAAe,IACzB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO,CACH,uCAAK,SAAS,EAAC,sBAAsB,EAAC,GAAG,EAAE,KAAK;gBAC5C,uCAAK,SAAS,EAAC,eAAe,IACzB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;;oBAC/B,OAAO,CACH,8BAAC,cAAI,IAAC,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;wBAChD;4BACK,eAAe;;4BAAG,aAAa,CAAC,KAAK,CACjC;wBAAC,GAAG;wBACZ,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;+BAAK,MAAA,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;2BAAE,IAAI,CACtE,CACV,CAAC;gBACN,CAAC,CAAC,CACA;gBACN,uCAAK,SAAS,EAAC,eAAe;oBAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CACjC;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY;wBACpC,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAA,MAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,kBAAkB,EAAE,KAAI,EAAE,EAAE,GAAS,CACrG,CACL;gBACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CACpC;gBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY;oBACpC,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAA,MAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,qBAAqB,EAAE,KAAI,EAAE,EAAE,GAAS,CACxG,CACL,CACT,CAAC;QACN,CAAC,CAAC,CACA,CACT,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC1C,CAAC;AArED,8CAqEC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Text, { TextType } from '@/components/generic/Text';\nimport BasketRow from '@/models/BasketRow';\n\nexport default function StepConfirmationPolicyBlock() {\n const basketContext = useContext(BasketContext);\n\n const { t } = useTranslation();\n\n const roomTranslation = t(Translation.Misc.Room);\n\n return useMemo(() => {\n const policiesGrouped: { [uniq: string]: { rooms: { index: number; room: BasketRow }[] } } = {};\n const rooms = basketContext.getAllValidRows();\n\n let roomIndex = 0;\n\n if (rooms.length > 1) {\n rooms.forEach((room) => {\n roomIndex++;\n\n const rate = room.getRate();\n let entry = policiesGrouped[`${rate?.cancelPolicyCode}-${rate?.guaranteeCode}`];\n\n if (!entry) {\n entry = policiesGrouped[`${rate?.cancelPolicyCode}-${rate?.guaranteeCode}`] = { rooms: [] };\n }\n\n entry.rooms.push({ index: roomIndex, room });\n });\n } else {\n policiesGrouped[0] = { rooms: [{ index: 1, room: rooms[0] }] };\n }\n\n return (\n <div className=\"u-marg-bottom\">\n {Object.values(policiesGrouped).map((group, index) => {\n const firstRoom = group.rooms[0];\n\n return (\n <div className=\"u-marg-bottom--heavy\" key={index}>\n <div className=\"u-marg-bottom\">\n {group.rooms.map((roomWithIndex) => {\n return (\n <Text key={roomWithIndex.index} type={TextType.Small}>\n <strong>\n {roomTranslation} {roomWithIndex.index}\n </strong>{' '}\n {roomWithIndex.room.getRoom().name} - {roomWithIndex.room.getRate()?.name}\n </Text>\n );\n })}\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small} preformatted>\n <span dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getGuaranteePolicy() || '' }}></span>\n </Text>\n </div>\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small} preformatted>\n <span dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getCancellationPolicy() || '' }}></span>\n </Text>\n </div>\n );\n })}\n </div>\n );\n }, [basketContext.currentBasketRows]);\n}\n"]}
1
+ {"version":3,"file":"StepConfirmationPolicyBlock.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationPolicyBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,kEAA2D;AAG3D,SAAwB,2BAA2B;IAC/C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEhD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,eAAe,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAChB,MAAM,eAAe,GAAwE,EAAE,CAAC;QAChG,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;QAE9C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,SAAS,EAAE,CAAC;gBAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAC,CAAC;gBAEhF,IAAI,CAAC,KAAK,EAAE;oBACR,KAAK,GAAG,eAAe,CAAC,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBAC/F;gBAED,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;SACN;aAAM;YACH,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAClE;QAED,OAAO,CACH,uCAAK,SAAS,EAAC,eAAe,IACzB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO,CACH,uCAAK,SAAS,EAAC,sBAAsB,EAAC,GAAG,EAAE,KAAK;gBAC5C,uCAAK,SAAS,EAAC,eAAe,IACzB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;;oBAC/B,OAAO,CACH,8BAAC,cAAI,IAAC,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;wBAChD;4BACK,eAAe;;4BAAG,aAAa,CAAC,KAAK,CACjC;wBAAC,GAAG;wBACZ,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;+BAAK,MAAA,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;2BAAE,IAAI,CACtE,CACV,CAAC;gBACN,CAAC,CAAC,CACA;gBACN,uCAAK,SAAS,EAAC,eAAe,IACzB,CAAA,MAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,kBAAkB,EAAE,EAAC,CAAC,CAAC,CAC9C;oBACI,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CACjC;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY;wBACpC,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAA,MAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,kBAAkB,EAAE,KAAI,EAAE,EAAE,GAAS,CACrG,CACR,CACN,CAAC,CAAC,CAAC,IAAI,CACN;gBACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,UAC3B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CACpC;gBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,YAAY;oBACpC,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAA,MAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,qBAAqB,EAAE,KAAI,EAAE,EAAE,GAAS,CACxG,CACL,CACT,CAAC;QACN,CAAC,CAAC,CACA,CACT,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC1C,CAAC;AAzED,8CAyEC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Text, { TextType } from '@/components/generic/Text';\nimport BasketRow from '@/models/BasketRow';\n\nexport default function StepConfirmationPolicyBlock() {\n const basketContext = useContext(BasketContext);\n\n const { t } = useTranslation();\n\n const roomTranslation = t(Translation.Misc.Room);\n\n return useMemo(() => {\n const policiesGrouped: { [uniq: string]: { rooms: { index: number; room: BasketRow }[] } } = {};\n const rooms = basketContext.getAllValidRows();\n\n let roomIndex = 0;\n\n if (rooms.length > 1) {\n rooms.forEach((room) => {\n roomIndex++;\n\n const rate = room.getRate();\n let entry = policiesGrouped[`${rate?.cancelPolicyCode}-${rate?.guaranteeCode}`];\n\n if (!entry) {\n entry = policiesGrouped[`${rate?.cancelPolicyCode}-${rate?.guaranteeCode}`] = { rooms: [] };\n }\n\n entry.rooms.push({ index: roomIndex, room });\n });\n } else {\n policiesGrouped[0] = { rooms: [{ index: 1, room: rooms[0] }] };\n }\n\n return (\n <div className=\"u-marg-bottom\">\n {Object.values(policiesGrouped).map((group, index) => {\n const firstRoom = group.rooms[0];\n\n return (\n <div className=\"u-marg-bottom--heavy\" key={index}>\n <div className=\"u-marg-bottom\">\n {group.rooms.map((roomWithIndex) => {\n return (\n <Text key={roomWithIndex.index} type={TextType.Small}>\n <strong>\n {roomTranslation} {roomWithIndex.index}\n </strong>{' '}\n {roomWithIndex.room.getRoom().name} - {roomWithIndex.room.getRate()?.name}\n </Text>\n );\n })}\n </div>\n <div className=\"u-marg-bottom\">\n {firstRoom.room.getRate()?.getGuaranteePolicy() ? (\n <>\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small} preformatted>\n <span dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getGuaranteePolicy() || '' }}></span>\n </Text>\n </>\n ) : null}\n </div>\n <Text type={TextType.Small} bold>\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small} preformatted>\n <span dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getCancellationPolicy() || '' }}></span>\n </Text>\n </div>\n );\n })}\n </div>\n );\n }, [basketContext.currentBasketRows]);\n}\n"]}
@@ -63,12 +63,15 @@ function RoomModal(props) {
63
63
  react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
64
64
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey, type: Text_1.TextType.Small },
65
65
  react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: props.room.getShortDescription(false) || '' } }))),
66
- !(hotel === null || hotel === void 0 ? void 0 : hotel.perksHideOnRoomDetail) && (react_1.default.createElement("div", { className: "u-marg-bottom--heavy" }, !!perks && (react_1.default.createElement("div", { className: "row" }, perks.map((perk, index) => {
67
- return (react_1.default.createElement("div", { key: index, className: "u-marg-bottom col-6 col-md-4 u-flex align-items-center justify-content-start" },
68
- react_1.default.createElement("div", { className: "room-perk-icon --has-bg" }, perk.iconElement ? perk.iconElement : react_1.default.createElement(Icon_1.default, { icon: perk.icon })),
69
- react_1.default.createElement("div", { className: "u-marg-left--light" },
70
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, perk.name))));
71
- }))))),
66
+ !(hotel === null || hotel === void 0 ? void 0 : hotel.perksHideOnRoomDetail) && perks && (react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
67
+ react_1.default.createElement("div", { className: "row" }, perks.map((perk, index) => {
68
+ return (react_1.default.createElement("div", { key: index, className: "u-marg-bottom col-6 col-md-4 u-flex align-items-center justify-content-start" },
69
+ react_1.default.createElement("div", { className: "room-perk-icon --has-bg" }, perk.iconElement ? perk.iconElement : react_1.default.createElement(Icon_1.default, { icon: perk.icon })),
70
+ react_1.default.createElement("div", { className: "u-marg-left--light" },
71
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, perk.name))));
72
+ })),
73
+ (hotel === null || hotel === void 0 ? void 0 : hotel.perksShowDisclaimer) && (react_1.default.createElement("div", { className: "row u-marg-top--lighter" },
74
+ react_1.default.createElement("small", { className: "col-12" }, t(Translation_1.Translation.Misc.PerksDisclaimer)))))),
72
75
  !!(amenities === null || amenities === void 0 ? void 0 : amenities.length) && (react_1.default.createElement(react_1.default.Fragment, null,
73
76
  react_1.default.createElement("div", { className: "u-marg-bottom" },
74
77
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, type: Text_1.TextType.Small },
@@ -1 +1 @@
1
- {"version":3,"file":"RoomModal.js","sourceRoot":"/","sources":["src/components/steps/room/RoomModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { Hotel } from 'models/Client/Hotel/Hotel';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { RoomDetailsBedsBlock } from '@/components/steps/room/roomDetails/RoomDetailsBedsBlock';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Color } from '@/util/Color';\n\ninterface RoomModalProps {\n room: Room;\n\n rates: RoomRate[];\n featuredRates: RoomRate[];\n\n open: boolean;\n onClose?: () => void;\n}\n\nexport default function RoomModal(props: RoomModalProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const { perks, rooms } = hotel as Hotel;\n\n const extraRoomData = rooms?.[props.room.code as string];\n\n // Explode otherwise original data gets overwritten.\n const amenities = extraRoomData?.amenities ? [...extraRoomData.amenities] : [];\n\n if (extraRoomData?.features?.length) {\n extraRoomData.features.forEach((feature) => {\n amenities.push(feature);\n });\n }\n\n return (\n <SimpleModal title={props.room.name + ' ' + t(Translation.Step.Room.RoomInfo.Information)} open={props.open} size={SimpleModalSize.Small} onClose={props.onClose}>\n <div>\n <div style={{ height: '350px' }}>\n <ImageGallerySlider images={props.room.getImages()} />\n </div>\n\n <div className=\"u-marg-heavy u-marg@m-\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold size=\"large\">\n {props.room.name}\n </Headline>\n </div>\n <RoomDetailsBedsBlock room={props.room} />\n <div className=\"u-marg-bottom--heavy\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: props.room.getShortDescription(false) || '' }} />\n </Text>\n </div>\n {!hotel?.perksHideOnRoomDetail && (\n <div className=\"u-marg-bottom--heavy\">\n {!!perks && (\n <div className=\"row\">\n {perks.map((perk, index) => {\n return (\n <div key={index} className=\"u-marg-bottom col-6 col-md-4 u-flex align-items-center justify-content-start\">\n <div className=\"room-perk-icon --has-bg\">{perk.iconElement ? perk.iconElement : <Icon icon={perk.icon as IconType} />}</div>\n\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{perk.name}</Text>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n )}\n {!!amenities?.length && (\n <>\n <div className=\"u-marg-bottom\">\n <Text color={Color.Accent} type={TextType.Small}>\n <strong>{t(Translation.Step.Room.RoomInfo.RoomAmenities)}</strong>\n </Text>\n </div>\n <div className=\"row\">\n {amenities.map((amenity) => {\n return (\n <div key={amenity.description} className=\"col-sm-6 u-marg-bottom--light u-flex justify-content-start\">\n <Icon icon={IconType.Check} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" noPadding size=\"16px\" />\n <div className=\"u-marg-left--light u-flex\">\n <Text type={TextType.Small} inline>\n {amenity.description}\n </Text>\n </div>\n </div>\n );\n })}\n </div>\n </>\n )}\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Small} color={Color.Graphite}>\n <span dangerouslySetInnerHTML={{ __html: props.room.getLongDescription() || '' }} />\n </Text>\n </div>\n </div>\n <RoomRates featuredRates={props.featuredRates} rates={props.rates} roomCode={props.room.code as string} />\n </div>\n </SimpleModal>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomModal.js","sourceRoot":"/","sources":["src/components/steps/room/RoomModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { Hotel } from 'models/Client/Hotel/Hotel';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Text, { TextType } from '@/components/generic/Text';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { RoomDetailsBedsBlock } from '@/components/steps/room/roomDetails/RoomDetailsBedsBlock';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { Color } from '@/util/Color';\n\ninterface RoomModalProps {\n room: Room;\n\n rates: RoomRate[];\n featuredRates: RoomRate[];\n\n open: boolean;\n onClose?: () => void;\n}\n\nexport default function RoomModal(props: RoomModalProps) {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const { perks, rooms } = hotel as Hotel;\n\n const extraRoomData = rooms?.[props.room.code as string];\n\n // Explode otherwise original data gets overwritten.\n const amenities = extraRoomData?.amenities ? [...extraRoomData.amenities] : [];\n\n if (extraRoomData?.features?.length) {\n extraRoomData.features.forEach((feature) => {\n amenities.push(feature);\n });\n }\n\n return (\n <SimpleModal title={props.room.name + ' ' + t(Translation.Step.Room.RoomInfo.Information)} open={props.open} size={SimpleModalSize.Small} onClose={props.onClose}>\n <div>\n <div style={{ height: '350px' }}>\n <ImageGallerySlider images={props.room.getImages()} />\n </div>\n\n <div className=\"u-marg-heavy u-marg@m-\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold size=\"large\">\n {props.room.name}\n </Headline>\n </div>\n <RoomDetailsBedsBlock room={props.room} />\n <div className=\"u-marg-bottom--heavy\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: props.room.getShortDescription(false) || '' }} />\n </Text>\n </div>\n {!hotel?.perksHideOnRoomDetail && perks && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"row\">\n {perks.map((perk, index) => {\n return (\n <div key={index} className=\"u-marg-bottom col-6 col-md-4 u-flex align-items-center justify-content-start\">\n <div className=\"room-perk-icon --has-bg\">{perk.iconElement ? perk.iconElement : <Icon icon={perk.icon as IconType} />}</div>\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small}>{perk.name}</Text>\n </div>\n </div>\n );\n })}\n </div>\n {hotel?.perksShowDisclaimer && (\n <div className=\"row u-marg-top--lighter\">\n <small className=\"col-12\">{t(Translation.Misc.PerksDisclaimer)}</small>\n </div>\n )}\n </div>\n )}\n {!!amenities?.length && (\n <>\n <div className=\"u-marg-bottom\">\n <Text color={Color.Accent} type={TextType.Small}>\n <strong>{t(Translation.Step.Room.RoomInfo.RoomAmenities)}</strong>\n </Text>\n </div>\n <div className=\"row\">\n {amenities.map((amenity) => {\n return (\n <div key={amenity.description} className=\"col-sm-6 u-marg-bottom--light u-flex justify-content-start\">\n <Icon icon={IconType.Check} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" noPadding size=\"16px\" />\n <div className=\"u-marg-left--light u-flex\">\n <Text type={TextType.Small} inline>\n {amenity.description}\n </Text>\n </div>\n </div>\n );\n })}\n </div>\n </>\n )}\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <Text type={TextType.Small} color={Color.Graphite}>\n <span dangerouslySetInnerHTML={{ __html: props.room.getLongDescription() || '' }} />\n </Text>\n </div>\n </div>\n <RoomRates featuredRates={props.featuredRates} rates={props.rates} roomCode={props.room.code as string} />\n </div>\n </SimpleModal>\n );\n}\n"]}
@@ -77,13 +77,20 @@ function BESummary(props) {
77
77
  const addressLine1 = [(_a = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _a === void 0 ? void 0 : _a.line1, (_b = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _b === void 0 ? void 0 : _b.city];
78
78
  const addressLine2 = [(_c = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _c === void 0 ? void 0 : _c.postalCode, (_d = hotel === null || hotel === void 0 ? void 0 : hotel.address) === null || _d === void 0 ? void 0 : _d.state];
79
79
  const { sortedComponents } = (0, hooks_1.useElementSort)(exports.BESummaryLayoutOrder);
80
- const getAddressString = (val) => {
81
- const line = val.filter((it) => !!it && it !== '0').join(', ');
80
+ const toString = (val) => val.filter((it) => !!it && it !== '0').join(', ');
81
+ const renderLine = (line) => {
82
82
  if (line) {
83
83
  return react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, line);
84
84
  }
85
85
  return null;
86
86
  };
87
+ const combineAddress = (rawLine1, rawLine2) => {
88
+ const line1 = toString(rawLine1);
89
+ const line2 = toString(rawLine2);
90
+ if (line1 && line1.length > 40)
91
+ return renderLine([line1, line2].filter(Boolean).join(', '));
92
+ return [renderLine(line1), renderLine(line2)];
93
+ };
87
94
  const showBasketItems = selectedBasketRows && selectedBasketRows.length;
88
95
  return (react_1.default.createElement("div", { className: "booking-engine-summary" },
89
96
  react_1.default.createElement("div", { className: "u-marg-bottom" },
@@ -112,8 +119,7 @@ function BESummary(props) {
112
119
  react_1.default.createElement("div", { className: "u-marg-top" },
113
120
  react_1.default.createElement("div", { className: "u-marg-bottom" },
114
121
  react_1.default.createElement(Text_1.default, { bold: true }, hotel === null || hotel === void 0 ? void 0 : hotel.name)),
115
- getAddressString(addressLine1),
116
- getAddressString(addressLine2),
122
+ combineAddress(addressLine1, addressLine2),
117
123
  (overridesContext === null || overridesContext === void 0 ? void 0 : overridesContext.phoneNumberInSummary) && (hotel === null || hotel === void 0 ? void 0 : hotel.phone) && react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, hotel === null || hotel === void 0 ? void 0 : hotel.phone)))),
118
124
  sortedComponents,
119
125
  ccx.currentCurrency !== (hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency) && (react_1.default.createElement(Alert_1.default, { iconAlignCenter: true, icon: Icon_1.IconType.Money, type: Alert_1.AlertType.LightGray },
@@ -1 +1 @@
1
- {"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\">\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const getAddressString = (val: string[]) => {\n const line = val.filter((it) => !!it && it !== '0').join(', ');\n\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n\n return null;\n };\n\n const showBasketItems = selectedBasketRows && selectedBasketRows.length;\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {getAddressString(addressLine1 as string[])}\n {getAddressString(addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\n </Text>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"BESummary.js","sourceRoot":"/","sources":["src/components/summary/BESummary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, CompanyContext, HotelOverridesContext } from '@frontend/contexts';\nimport { OrderableReactList, useCurrentHotel, useElementSort } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport React, { FC, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport HotelLocationMap from '@/components/generic/map/HotelLocationMap';\nimport Text, { TextType } from '@/components/generic/Text';\nimport BESummaryAddonRow from '@/components/summary/BESummaryAddonRow';\nimport { BESummaryPerkBlock } from '@/components/summary/BESummaryPerkBlock';\nimport BESummaryRoomRow from '@/components/summary/BESummaryRoomRow';\nimport TransportDistanceFromHotelBlock from '@/components/summary/TransportDistanceFromHotelBlock';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport { TextAlign } from '@/util/TextAlignment';\n\nexport interface BESummaryProps {\n showImages?: boolean;\n}\n\nconst TransportDistanceFromHotelBlockContainer: FC = () => {\n const overridesContext = useContext(HotelOverridesContext);\n\n return (\n <div\n className={classNames('u-flex u-flex-column u-marg-top', {\n 'u-flex-justify-around': Object.entries(overridesContext?.transportDistances ?? {}).filter(([key, value]) => !!value).length <= 2,\n })}\n >\n <TransportDistanceFromHotelBlock vertical />\n </div>\n );\n};\n\nexport const BESummaryLayoutOrder: OrderableReactList = {\n TransportDistanceBlock: {\n component: <TransportDistanceFromHotelBlockContainer />,\n priority: 5,\n },\n PerksBlock: {\n component: (\n <div className=\"u-marg-bottom--light u-marg-top--heavy\">\n <BESummaryPerkBlock size=\"desktop\" />\n </div>\n ),\n priority: 10,\n },\n};\n\nexport function BESummary(props: BESummaryProps) {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const overridesContext = useContext(HotelOverridesContext);\n\n const { hotel } = useCurrentHotel();\n\n const selectedBasketRows = basketContext.getAllValidRows();\n\n const addons = basketContext.basketAddonRows;\n\n const { t } = useTranslation();\n\n const addressLine1 = [hotel?.address?.line1, hotel?.address?.city];\n const addressLine2 = [hotel?.address?.postalCode, hotel?.address?.state];\n\n const { sortedComponents } = useElementSort(BESummaryLayoutOrder);\n\n const toString = (val: string[]) => val.filter((it) => !!it && it !== '0').join(', ');\n\n const renderLine = (line?: string) => {\n if (line) {\n return <Text type={TextType.Small}>{line}</Text>;\n }\n return null;\n };\n\n const combineAddress = (rawLine1: string[], rawLine2: string[]) => {\n const line1 = toString(rawLine1);\n const line2 = toString(rawLine2);\n if (line1 && line1.length > 40) return renderLine([line1, line2].filter(Boolean).join(', '));\n return [renderLine(line1), renderLine(line2)];\n };\n\n const showBasketItems = selectedBasketRows && selectedBasketRows.length;\n\n return (\n <div className=\"booking-engine-summary\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Misc.Summary)}</Headline>\n </div>\n\n {showBasketItems ? (\n <>\n {selectedBasketRows.map((row: BasketRow, index: number) => {\n if (!row.isValid()) return;\n\n return <BESummaryRoomRow key={row.getID()} row={row} index={index} showImages={!!props.showImages} />;\n })}\n {addons.length > 0 && (\n <>\n <LineBreak noMargins darker />\n\n <div className=\"u-marg-top\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n <strong>Add-on Items</strong>\n </Text>\n </div>\n\n {addons.map((row: BasketAddonRow) => {\n const onRemoveClickHandler = () => {\n return basketContext.removeBasketAddonRow(row);\n };\n return <BESummaryAddonRow row={row} key={row.getID()} onRemoveClick={onRemoveClickHandler} />;\n })}\n </>\n )}\n </>\n ) : (\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small}>{t(Translation.Step.General.YourCartIsEmpty)}</Text>\n </div>\n <div style={{ height: '150px', position: 'relative' }}>\n <HotelLocationMap />\n </div>\n <div className=\"u-marg-top\">\n <div className=\"u-marg-bottom\">\n <Text bold>{hotel?.name}</Text>\n </div>\n {combineAddress(addressLine1 as string[], addressLine2 as string[])}\n {overridesContext?.phoneNumberInSummary && hotel?.phone && <Text type={TextType.Small}>{hotel?.phone}</Text>}\n </div>\n </div>\n )}\n {sortedComponents}\n\n {ccx.currentCurrency !== hotel?.defaultCurrency && (\n <Alert iconAlignCenter icon={IconType.Money} type={AlertType.LightGray}>\n <Text type={TextType.Small}>{t(Translation.Step.General.AlternateCurrencyInformation)}</Text>\n </Alert>\n )}\n\n <LineBreak darker />\n\n <div className=\"u-marg-top--light\">\n <Text type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Misc.Total)}\n </Text>\n <Headline bold size=\"large\" align={TextAlign.Right}>\n <Currency>{basketContext.getTotalPrice()}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} align={TextAlign.Right}>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}\n </Text>\n </div>\n </div>\n );\n}\n"]}
@@ -96,6 +96,7 @@ export interface ClientHotelConfig {
96
96
  * Hide perks on room detail modal
97
97
  */
98
98
  perksHideOnRoomDetail?: boolean;
99
+ perksShowDisclaimer?: boolean;
99
100
  /** @deprecated Use the vgs.vaultNames.standard property now */
100
101
  vgsVaultName?: string;
101
102
  vgs?: {
@@ -1 +1 @@
1
- {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAgBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport { EBookingPaymentMethod, IHotelColorScheme } from '@roomstay/core';\nimport type { ReactChild } from 'react';\n\nimport type { MemberOnlyModalInputs } from '@/components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { Language } from '@/providers/LanguageProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks: HotelPerk[];\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
1
+ {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAgBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport { EBookingPaymentMethod, IHotelColorScheme } from '@roomstay/core';\nimport type { ReactChild } from 'react';\n\nimport type { MemberOnlyModalInputs } from '@/components/steps/room/MemberSignInModal/MemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { Language } from '@/providers/LanguageProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlySignupInputs?: MemberOnlyModalInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks: HotelPerk[];\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
@@ -270,10 +270,10 @@ const AccountReservationSinglePage = () => {
270
270
  itinerary.roomName,
271
271
  " - ",
272
272
  itinerary.rateName)),
273
- react_1.default.createElement("div", { className: "u-marg-bottom" },
273
+ react_1.default.createElement("div", { className: "u-marg-bottom" }, itinerary.guaranteePolicyLongDescription ? (react_1.default.createElement(react_1.default.Fragment, null,
274
274
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Misc.GuaranteePolicy)),
275
275
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
276
- react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: itinerary.guaranteePolicyLongDescription || '' } }))),
276
+ react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: itinerary.guaranteePolicyLongDescription || '' } })))) : null),
277
277
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Misc.CancellationPolicy)),
278
278
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
279
279
  react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: itinerary.cancellationPolicyLongDescription || '' } })))))))),
@@ -1 +1 @@
1
- {"version":3,"file":"AccountReservationSinglePage.js","sourceRoot":"/","sources":["src/pages/account/Reservations/AccountReservationSinglePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, IRoomstayMemberBookingItemWithRefAndHotelDetails, RoomstayMemberContext } from '@frontend/contexts';\nimport { calculateTotalForMemberBooking, IBookingStatus, IRoomstayMemberBooking } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { Fragment, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { Card } from '@/components/generic/Card/Card/Card';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport IconText from '@/components/generic/IconText/IconText';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Pill, { PillType, PillVariant } from '@/components/generic/Pill';\nimport PrintOnly from '@/components/generic/print/PrintOnly';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ReservationAction } from '@/components/reservation/ReservationItem';\nimport ReservationList from '@/components/reservation/ReservationList';\nimport { useCurrentHotel } from '@/hooks';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\nconst getRoomNamesString = (itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[]) => {\n const roomNames: { [name: string]: number } = {};\n\n for (const itinerary of itineraries) {\n roomNames[itinerary.roomName] = (roomNames[itinerary.roomName] ?? 0) + 1;\n }\n\n return Object.keys(roomNames)\n .map((name) => {\n const numOfRooms = roomNames[name];\n if (numOfRooms <= 1) return `${name}`;\n })\n .join(' + ');\n};\n\ntype CancelReservationModalProps = {\n items: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n\n visible: boolean;\n onClose: () => void;\n};\n\nconst CancelReservationModal = (props: CancelReservationModalProps) => {\n const { items, booking, visible, onClose } = props;\n const { fetchRoomstayMember } = useContext(RoomstayMemberContext);\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onCancelClick = () => {\n const cancellations = [];\n\n setIsLoading(true);\n for (const item of items) {\n cancellations.push(API.Reservation.cancelReservation(item.id, item.profile.email as string, booking.hotelId));\n }\n\n Promise.all(cancellations).then(() => {\n fetchRoomstayMember?.().then(() => {\n setIsLoading(false);\n onClose();\n });\n });\n };\n\n const footers = (\n <div className=\"d-flex u-pad align-items-center justify-content-center\">\n <div className=\"u-marg-right\">\n <BEButton isText onClick={onClose}>\n {t(Translation.Misc.Abort)}\n </BEButton>\n </div>\n <BEButton filled primary onClick={onCancelClick} isLoading={isLoading}>\n {t(Translation.Misc.YesImSure)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n title={t(Translation.Misc.CancellingReservation)}\n open={visible}\n size={SimpleModalSize.ExtraSmall}\n desktopFooter={footers}\n mobileFooter={footers}\n onClose={onClose}\n >\n <div className=\"u-pad\">\n <Text>{t(Translation.Misc.ThisWillCancel)}</Text>\n {/*TODO: Update wording to include all reservations*/}\n </div>\n </SimpleModal>\n );\n};\n\ntype CodeNumberInformationType = {\n itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n};\n\nconst CodeNumberInformation = (props: CodeNumberInformationType) => {\n const { itineraries, booking } = props;\n const { t } = useTranslation();\n\n const [cancelled, confirmed] = useMemo(() => {\n const cancelled = [];\n const confirmed = [];\n\n for (const item of itineraries) {\n if (item.status === IBookingStatus.Cancelled) {\n cancelled.push(item);\n } else {\n confirmed.push(item);\n }\n }\n\n return [cancelled, confirmed];\n }, itineraries);\n\n return (\n <Card className=\"w-100\" title={t(Translation.Reservation.CodeNumberInformation)}>\n {[\n { label: 'Cancelled', value: cancelled, type: PillType.Danger },\n { label: 'Confirmed', value: confirmed, type: PillType.Success },\n ].map((item, index) => {\n if (item.value.length > 0) {\n return (\n <Fragment key={index}>\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {item.label}\n </Text>\n {item.value.map((row, rowIndex) => {\n return (\n <Fragment key={rowIndex}>\n <Text className=\"u-marg-right\" inline type={TextType.Small}>\n <Pill type={item.type}>#{row.id}</Pill>\n </Text>\n </Fragment>\n );\n })}\n <br />\n </Fragment>\n );\n }\n })}\n <div className=\"u-marg-top\">\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {t(Translation.UserPortal.ReservationSingleScreen.Itinerary)}\n </Text>\n <Pill variant={PillVariant.Outlined} type={PillType.Grey}>\n #{booking.itineraryId}\n </Pill>\n </div>\n </Card>\n );\n};\n\nconst displayTime = (timeString: string) => dayjs().set('hours', +timeString.slice(0, 2)).set('minute', +timeString.slice(2)).format('h:mm A');\n\nexport const AccountReservationSinglePage = () => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const beContext = useContext(BookingEngineContext);\n const { getHotel } = useContext(CompanyContext);\n const ccx = useContext(CompanyContext);\n\n const { getItinerary } = useMember();\n const [showingCancellationFor, setShowingCancellationFor] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[] | null>(null);\n\n const [bookingHotel, setBookingHotel] = useState<Hotel>();\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const params = useParams<{ resId: string }>();\n\n const [booking, itineraries]: [IRoomstayMemberBooking, IRoomstayMemberBookingItemWithRefAndHotelDetails[]] = useMemo(() => {\n const itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[] = [];\n\n const booking = getItinerary(params.resId);\n\n if (booking?.itinerary) {\n for (const itinerary of Object.values(booking.itinerary)) {\n itineraries.push({ ...itinerary, bookingId: booking.itineraryId, hotel: booking.hotel, hotelId: booking.hotelId });\n }\n }\n\n return [booking as IRoomstayMemberBooking, itineraries];\n }, [params, getItinerary]);\n\n useEffect(() => {\n if (booking && booking.hotelId) {\n getHotel(booking.hotelId).then((hotel) => {\n setBookingHotel(hotel);\n });\n }\n }, [booking, getHotel]);\n\n const allCancelled = useMemo(() => itineraries.every((row) => row.status === IBookingStatus.Cancelled), [itineraries]);\n\n const allCancellable = useMemo(() => itineraries.every((row) => row.isCancellable), [itineraries]);\n\n if (!booking) {\n return <>{t(Translation.Misc.Loading)}</>;\n }\n\n const { line1, line2, postalCode, country } = bookingHotel?.address ?? {};\n\n const onActionClick = (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => {\n switch (action) {\n case ReservationAction.Cancel:\n setShowingCancellationFor([item]);\n break;\n }\n };\n\n const onCloseCancellationModal = () => {\n setShowingCancellationFor(null);\n };\n\n const onPrintClicked = () => {\n window.print();\n };\n\n const hotelImageElement =\n hotel?.logo && typeof hotel.logo !== 'string' ? hotel.logo : <img src={typeof hotel?.logo === 'string' ? hotel.logo : ccx.logo} alt=\"Hotel Logo\" className=\"u-block\" />;\n\n return (\n <div id={`reservation-body-${booking.itineraryId}`}>\n {!!booking?.hotel?.colors && <style>{`#reservation-body-${booking.itineraryId} {${getAccentOverrideStyleContent(booking.hotel.colors)}}`}</style>}\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom--light u-print-none\">\n <Link to={AccountRoutes.Reservations.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourReservations)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-flex-align-stretch@m- u-flex u-flex-align-flex-end u-marg-bottom u-pad-top@m u-flex-direction-column@m- u-print-none\">\n <div>\n <Text className=\"u-marg-bottom--light\">{StringHelper.pluralWithCount(itineraries.length, 'Room', t)}</Text>\n <Headline size=\"extra-large\" className=\"u-marg-bottom--light\">\n {getRoomNamesString(itineraries)}\n </Headline>\n <Text type={TextType.Body}>\n {bookingHotel?.name} • {[line1, line2, postalCode, country].filter((value) => !!value).join(' ')}\n </Text>\n </div>\n <div className=\"u-flex u-flex-gap u-flex-direction-column@m- u-flex-gap--light@m- u-marg-top--heavy@m-\">\n <BEButton wide={isMobile} rounded={isMobile} textColor={Color.Navy} isText={!isMobile} icon={IconType.Share} iconPosition=\"left\">\n {t(Translation.Reservation.Share)}\n </BEButton>\n <BEButton\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Navy}\n className=\"\"\n isText={!isMobile}\n icon={IconType.Print}\n iconPosition=\"left\"\n onClick={onPrintClicked}\n >\n {t(Translation.Reservation.Print)}\n </BEButton>\n {!allCancelled && (\n <>\n {ModifyBookingFeature.isActive() ? (\n <BEButton wide={isMobile} mobileWidth rounded={isMobile} textColor={Color.Navy} isText={!isMobile} disabled={!allCancellable}>\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.ModifyReservation), t)}\n </BEButton>\n ) : null}\n <BEButton\n danger\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Alert}\n isText={!isMobile}\n onClick={() => setShowingCancellationFor(itineraries)}\n disabled={!allCancellable}\n >\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.CancelReservation), t)}\n </BEButton>\n </>\n )}\n </div>\n </div>\n\n <span className=\"u-print-none\">\n <LineBreak smallMargins fullBleed />\n </span>\n\n <PrintOnly>\n <div className=\"c-header d-inline-block\">\n <div className=\"c-header__logo u-flex u-flex-align-center\">{hotelImageElement}</div>\n </div>\n </PrintOnly>\n\n <div className=\"u-marg-bottom--massive u-marg-bottom--none@m- u-print-marg-none u-marg-top--heavy\">\n <ReservationList\n actions={[ReservationAction.Cancel, ReservationAction.Modify, ReservationAction.BookAgain]}\n reservationItems={itineraries}\n onActionClick={onActionClick}\n showCancelledNotifications\n />\n </div>\n <LineBreak noMargins={isMobile} />\n <div className=\"u-flex u-marg-top--heavy@m-\">\n <Headline size=\"large\" bold>\n {t(Translation.Reservation.Total)}\n </Headline>\n <div className=\"u-flex align-items-end flex-column\">\n <Headline lineThrough size=\"large\" bold>\n <Currency>{calculateTotalForMemberBooking(booking)}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Reservation.PriceNote)}\n </Text>\n </div>\n </div>\n\n <div className=\"row u-marg-top--massive@m u-marg-top--heavy@m-\">\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Navigation.Menu.PaymentInformation)}>\n <IconText icon={IconType.Person}>{itineraries?.[0]?.profile?.firstName + ' ' + itineraries?.[0]?.profile?.lastName}</IconText>\n <IconText icon={IconType.Email}>{itineraries?.[0]?.profile?.email}</IconText>\n <IconText icon={IconType.CreditCard} TextProps={{ type: TextType.Small }}>\n •••• •••• •••• 1111 <span style={{ color: Color.DarkGrey }}>(Visa)</span>\n </IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Reservation.HotelInformation)}>\n <IconText icon={IconType.Map}>\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </IconText>\n <IconText icon={IconType.Phone}>{bookingHotel?.phone}</IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <CodeNumberInformation itineraries={itineraries} booking={booking} />\n </div>\n </div>\n <div className=\"u-marg-top--massive@m u-marg-top@m- u-background--snow u-w-fluid u-pad-top--massive@m u-pad-top--heavy@m- u-pad-bottom--heavy @m- u-pad-bottom--massive@m\">\n <div className=\"container\">\n <Text bold> {t(Translation.Reservation.Policies)}</Text>\n <div className=\"u-marg-top--medium\">\n <div className=\"u-w-100 row\">\n <div className=\"u-flex u-flex-direction-column@m- u-flex-gap--medium@m- col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckIn)}</strong>\n <br />\n {t(Translation.Reservation.After)} {displayTime(booking.hotel.checkInTime)}\n </Text>\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckOut)}</strong>\n <br />\n {t(Translation.Reservation.Before)} {displayTime(booking.hotel.checkOutTime)}\n </Text>\n </div>\n </div>\n </div>\n <div className=\"u-marg-bottom\">\n {itineraries.map((itinerary, index) => (\n <div key={index} className=\"u-marg-top--heavy\">\n <div className=\"u-marg-bottom\">\n <Text key={index} type={TextType.Small}>\n <strong>\n {t(Translation.Misc.Room)} {index + 1}\n </strong>\n &nbsp;\n {itinerary.roomName} - {itinerary.rateName}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.guaranteePolicyLongDescription || '' }}></span>\n </Text>\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.cancellationPolicyLongDescription || '' }}></span>\n </Text>\n </div>\n ))}\n </div>\n </div>\n </div>\n <CancelReservationModal\n onClose={onCloseCancellationModal}\n items={showingCancellationFor as IRoomstayMemberBookingItemWithRefAndHotelDetails[]}\n booking={booking}\n visible={!!showingCancellationFor}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"AccountReservationSinglePage.js","sourceRoot":"/","sources":["src/pages/account/Reservations/AccountReservationSinglePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, IRoomstayMemberBookingItemWithRefAndHotelDetails, RoomstayMemberContext } from '@frontend/contexts';\nimport { calculateTotalForMemberBooking, IBookingStatus, IRoomstayMemberBooking } from '@roomstay/core';\nimport dayjs from 'dayjs';\nimport React, { Fragment, useContext, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { Card } from '@/components/generic/Card/Card/Card';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport IconText from '@/components/generic/IconText/IconText';\nimport LineBreak from '@/components/generic/LineBreak';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport Pill, { PillType, PillVariant } from '@/components/generic/Pill';\nimport PrintOnly from '@/components/generic/print/PrintOnly';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ReservationAction } from '@/components/reservation/ReservationItem';\nimport ReservationList from '@/components/reservation/ReservationList';\nimport { useCurrentHotel } from '@/hooks';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport ModifyBookingFeature from '@/providers/feature/ModifyBookingFeature';\nimport { Color, getAccentOverrideStyleContent } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { AccountRoutes } from '../AccountRoutes';\n\nconst getRoomNamesString = (itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[]) => {\n const roomNames: { [name: string]: number } = {};\n\n for (const itinerary of itineraries) {\n roomNames[itinerary.roomName] = (roomNames[itinerary.roomName] ?? 0) + 1;\n }\n\n return Object.keys(roomNames)\n .map((name) => {\n const numOfRooms = roomNames[name];\n if (numOfRooms <= 1) return `${name}`;\n })\n .join(' + ');\n};\n\ntype CancelReservationModalProps = {\n items: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n\n visible: boolean;\n onClose: () => void;\n};\n\nconst CancelReservationModal = (props: CancelReservationModalProps) => {\n const { items, booking, visible, onClose } = props;\n const { fetchRoomstayMember } = useContext(RoomstayMemberContext);\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onCancelClick = () => {\n const cancellations = [];\n\n setIsLoading(true);\n for (const item of items) {\n cancellations.push(API.Reservation.cancelReservation(item.id, item.profile.email as string, booking.hotelId));\n }\n\n Promise.all(cancellations).then(() => {\n fetchRoomstayMember?.().then(() => {\n setIsLoading(false);\n onClose();\n });\n });\n };\n\n const footers = (\n <div className=\"d-flex u-pad align-items-center justify-content-center\">\n <div className=\"u-marg-right\">\n <BEButton isText onClick={onClose}>\n {t(Translation.Misc.Abort)}\n </BEButton>\n </div>\n <BEButton filled primary onClick={onCancelClick} isLoading={isLoading}>\n {t(Translation.Misc.YesImSure)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n title={t(Translation.Misc.CancellingReservation)}\n open={visible}\n size={SimpleModalSize.ExtraSmall}\n desktopFooter={footers}\n mobileFooter={footers}\n onClose={onClose}\n >\n <div className=\"u-pad\">\n <Text>{t(Translation.Misc.ThisWillCancel)}</Text>\n {/*TODO: Update wording to include all reservations*/}\n </div>\n </SimpleModal>\n );\n};\n\ntype CodeNumberInformationType = {\n itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[];\n booking: IRoomstayMemberBooking;\n};\n\nconst CodeNumberInformation = (props: CodeNumberInformationType) => {\n const { itineraries, booking } = props;\n const { t } = useTranslation();\n\n const [cancelled, confirmed] = useMemo(() => {\n const cancelled = [];\n const confirmed = [];\n\n for (const item of itineraries) {\n if (item.status === IBookingStatus.Cancelled) {\n cancelled.push(item);\n } else {\n confirmed.push(item);\n }\n }\n\n return [cancelled, confirmed];\n }, itineraries);\n\n return (\n <Card className=\"w-100\" title={t(Translation.Reservation.CodeNumberInformation)}>\n {[\n { label: 'Cancelled', value: cancelled, type: PillType.Danger },\n { label: 'Confirmed', value: confirmed, type: PillType.Success },\n ].map((item, index) => {\n if (item.value.length > 0) {\n return (\n <Fragment key={index}>\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {item.label}\n </Text>\n {item.value.map((row, rowIndex) => {\n return (\n <Fragment key={rowIndex}>\n <Text className=\"u-marg-right\" inline type={TextType.Small}>\n <Pill type={item.type}>#{row.id}</Pill>\n </Text>\n </Fragment>\n );\n })}\n <br />\n </Fragment>\n );\n }\n })}\n <div className=\"u-marg-top\">\n <Text className=\"u-marg-right--light\" inline type={TextType.Small}>\n {t(Translation.UserPortal.ReservationSingleScreen.Itinerary)}\n </Text>\n <Pill variant={PillVariant.Outlined} type={PillType.Grey}>\n #{booking.itineraryId}\n </Pill>\n </div>\n </Card>\n );\n};\n\nconst displayTime = (timeString: string) => dayjs().set('hours', +timeString.slice(0, 2)).set('minute', +timeString.slice(2)).format('h:mm A');\n\nexport const AccountReservationSinglePage = () => {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n const beContext = useContext(BookingEngineContext);\n const { getHotel } = useContext(CompanyContext);\n const ccx = useContext(CompanyContext);\n\n const { getItinerary } = useMember();\n const [showingCancellationFor, setShowingCancellationFor] = useState<IRoomstayMemberBookingItemWithRefAndHotelDetails[] | null>(null);\n\n const [bookingHotel, setBookingHotel] = useState<Hotel>();\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const params = useParams<{ resId: string }>();\n\n const [booking, itineraries]: [IRoomstayMemberBooking, IRoomstayMemberBookingItemWithRefAndHotelDetails[]] = useMemo(() => {\n const itineraries: IRoomstayMemberBookingItemWithRefAndHotelDetails[] = [];\n\n const booking = getItinerary(params.resId);\n\n if (booking?.itinerary) {\n for (const itinerary of Object.values(booking.itinerary)) {\n itineraries.push({ ...itinerary, bookingId: booking.itineraryId, hotel: booking.hotel, hotelId: booking.hotelId });\n }\n }\n\n return [booking as IRoomstayMemberBooking, itineraries];\n }, [params, getItinerary]);\n\n useEffect(() => {\n if (booking && booking.hotelId) {\n getHotel(booking.hotelId).then((hotel) => {\n setBookingHotel(hotel);\n });\n }\n }, [booking, getHotel]);\n\n const allCancelled = useMemo(() => itineraries.every((row) => row.status === IBookingStatus.Cancelled), [itineraries]);\n\n const allCancellable = useMemo(() => itineraries.every((row) => row.isCancellable), [itineraries]);\n\n if (!booking) {\n return <>{t(Translation.Misc.Loading)}</>;\n }\n\n const { line1, line2, postalCode, country } = bookingHotel?.address ?? {};\n\n const onActionClick = (action: ReservationAction, item: IRoomstayMemberBookingItemWithRefAndHotelDetails) => {\n switch (action) {\n case ReservationAction.Cancel:\n setShowingCancellationFor([item]);\n break;\n }\n };\n\n const onCloseCancellationModal = () => {\n setShowingCancellationFor(null);\n };\n\n const onPrintClicked = () => {\n window.print();\n };\n\n const hotelImageElement =\n hotel?.logo && typeof hotel.logo !== 'string' ? hotel.logo : <img src={typeof hotel?.logo === 'string' ? hotel.logo : ccx.logo} alt=\"Hotel Logo\" className=\"u-block\" />;\n\n return (\n <div id={`reservation-body-${booking.itineraryId}`}>\n {!!booking?.hotel?.colors && <style>{`#reservation-body-${booking.itineraryId} {${getAccentOverrideStyleContent(booking.hotel.colors)}}`}</style>}\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom--light u-print-none\">\n <Link to={AccountRoutes.Reservations.path}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.Reservation.BackToYourReservations)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-flex-align-stretch@m- u-flex u-flex-align-flex-end u-marg-bottom u-pad-top@m u-flex-direction-column@m- u-print-none\">\n <div>\n <Text className=\"u-marg-bottom--light\">{StringHelper.pluralWithCount(itineraries.length, 'Room', t)}</Text>\n <Headline size=\"extra-large\" className=\"u-marg-bottom--light\">\n {getRoomNamesString(itineraries)}\n </Headline>\n <Text type={TextType.Body}>\n {bookingHotel?.name} • {[line1, line2, postalCode, country].filter((value) => !!value).join(' ')}\n </Text>\n </div>\n <div className=\"u-flex u-flex-gap u-flex-direction-column@m- u-flex-gap--light@m- u-marg-top--heavy@m-\">\n <BEButton wide={isMobile} rounded={isMobile} textColor={Color.Navy} isText={!isMobile} icon={IconType.Share} iconPosition=\"left\">\n {t(Translation.Reservation.Share)}\n </BEButton>\n <BEButton\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Navy}\n className=\"\"\n isText={!isMobile}\n icon={IconType.Print}\n iconPosition=\"left\"\n onClick={onPrintClicked}\n >\n {t(Translation.Reservation.Print)}\n </BEButton>\n {!allCancelled && (\n <>\n {ModifyBookingFeature.isActive() ? (\n <BEButton wide={isMobile} mobileWidth rounded={isMobile} textColor={Color.Navy} isText={!isMobile} disabled={!allCancellable}>\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.ModifyReservation), t)}\n </BEButton>\n ) : null}\n <BEButton\n danger\n wide={isMobile}\n mobileWidth\n rounded={isMobile}\n textColor={Color.Alert}\n isText={!isMobile}\n onClick={() => setShowingCancellationFor(itineraries)}\n disabled={!allCancellable}\n >\n {StringHelper.plural(itineraries.length, t(Translation.Reservation.CancelReservation), t)}\n </BEButton>\n </>\n )}\n </div>\n </div>\n\n <span className=\"u-print-none\">\n <LineBreak smallMargins fullBleed />\n </span>\n\n <PrintOnly>\n <div className=\"c-header d-inline-block\">\n <div className=\"c-header__logo u-flex u-flex-align-center\">{hotelImageElement}</div>\n </div>\n </PrintOnly>\n\n <div className=\"u-marg-bottom--massive u-marg-bottom--none@m- u-print-marg-none u-marg-top--heavy\">\n <ReservationList\n actions={[ReservationAction.Cancel, ReservationAction.Modify, ReservationAction.BookAgain]}\n reservationItems={itineraries}\n onActionClick={onActionClick}\n showCancelledNotifications\n />\n </div>\n <LineBreak noMargins={isMobile} />\n <div className=\"u-flex u-marg-top--heavy@m-\">\n <Headline size=\"large\" bold>\n {t(Translation.Reservation.Total)}\n </Headline>\n <div className=\"u-flex align-items-end flex-column\">\n <Headline lineThrough size=\"large\" bold>\n <Currency>{calculateTotalForMemberBooking(booking)}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Reservation.PriceNote)}\n </Text>\n </div>\n </div>\n\n <div className=\"row u-marg-top--massive@m u-marg-top--heavy@m-\">\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Navigation.Menu.PaymentInformation)}>\n <IconText icon={IconType.Person}>{itineraries?.[0]?.profile?.firstName + ' ' + itineraries?.[0]?.profile?.lastName}</IconText>\n <IconText icon={IconType.Email}>{itineraries?.[0]?.profile?.email}</IconText>\n <IconText icon={IconType.CreditCard} TextProps={{ type: TextType.Small }}>\n •••• •••• •••• 1111 <span style={{ color: Color.DarkGrey }}>(Visa)</span>\n </IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <Card className=\"w-100\" title={t(Translation.Reservation.HotelInformation)}>\n <IconText icon={IconType.Map}>\n {line1}\n <br />\n {line2} {postalCode}, {country}\n </IconText>\n <IconText icon={IconType.Phone}>{bookingHotel?.phone}</IconText>\n </Card>\n </div>\n <div className=\"col-md-4 u-flex u-print-col-md-4\">\n <CodeNumberInformation itineraries={itineraries} booking={booking} />\n </div>\n </div>\n <div className=\"u-marg-top--massive@m u-marg-top@m- u-background--snow u-w-fluid u-pad-top--massive@m u-pad-top--heavy@m- u-pad-bottom--heavy @m- u-pad-bottom--massive@m\">\n <div className=\"container\">\n <Text bold> {t(Translation.Reservation.Policies)}</Text>\n <div className=\"u-marg-top--medium\">\n <div className=\"u-w-100 row\">\n <div className=\"u-flex u-flex-direction-column@m- u-flex-gap--medium@m- col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckIn)}</strong>\n <br />\n {t(Translation.Reservation.After)} {displayTime(booking.hotel.checkInTime)}\n </Text>\n <Text type={TextType.Small}>\n <strong>{t(Translation.Reservation.CheckOut)}</strong>\n <br />\n {t(Translation.Reservation.Before)} {displayTime(booking.hotel.checkOutTime)}\n </Text>\n </div>\n </div>\n </div>\n <div className=\"u-marg-bottom\">\n {itineraries.map((itinerary, index) => (\n <div key={index} className=\"u-marg-top--heavy\">\n <div className=\"u-marg-bottom\">\n <Text key={index} type={TextType.Small}>\n <strong>\n {t(Translation.Misc.Room)} {index + 1}\n </strong>\n &nbsp;\n {itinerary.roomName} - {itinerary.rateName}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n {itinerary.guaranteePolicyLongDescription ? (\n <>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.guaranteePolicyLongDescription || '' }}></span>\n </Text>\n </>\n ) : null}\n </div>\n <Text type={TextType.Small} bold className=\"u-marg-bottom--light\">\n {t(Translation.Misc.CancellationPolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: itinerary.cancellationPolicyLongDescription || '' }}></span>\n </Text>\n </div>\n ))}\n </div>\n </div>\n </div>\n <CancelReservationModal\n onClose={onCloseCancellationModal}\n items={showingCancellationFor as IRoomstayMemberBookingItemWithRefAndHotelDetails[]}\n booking={booking}\n visible={!!showingCancellationFor}\n />\n </div>\n );\n};\n"]}
@@ -489,6 +489,7 @@ export declare const Translation: {
489
489
  Yes: string;
490
490
  To: string;
491
491
  ApplyNow: string;
492
+ PerksDisclaimer: string;
492
493
  };
493
494
  FindReservation: {
494
495
  FindYourReservation: string;
@@ -492,6 +492,7 @@ exports.Translation = {
492
492
  Yes: 'Misc.Yes',
493
493
  To: 'Misc.To',
494
494
  ApplyNow: 'Misc.ApplyNow',
495
+ PerksDisclaimer: 'Misc.PerksDisclaimer',
495
496
  },
496
497
  FindReservation: {
497
498
  FindYourReservation: 'FindReservation.FindYourReservation',