@roomstay/frontend 2.6.3 → 2.6.4
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/457.bundle.js +1 -1
- package/dist/468.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/Card/IconNavCard/IconNavCard.d.ts +2 -1
- package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js.map +1 -1
- package/dist/src/components/generic/loader/LargeLoader.js +8 -7
- package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +7 -7
- package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePickerRow.js +21 -3
- package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +2 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/pages/account/AccountHome/AccountHomePage.js +5 -5
- package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
- package/dist/src/stories/IconNavCard.stories.d.ts +3 -2
- package/dist/src/translations/Translation.d.ts +5 -0
- package/dist/src/translations/Translation.js +5 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +6 -1
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { IconType } from '../../Icon/Icon';
|
|
2
3
|
import { Color } from '../../../../util/Color';
|
|
3
4
|
type IconNavCardProps = {
|
|
4
5
|
icon: IconType;
|
|
5
6
|
title: string;
|
|
6
|
-
description?:
|
|
7
|
+
description?: ReactNode;
|
|
7
8
|
link?: {
|
|
8
9
|
text: string;
|
|
9
10
|
pathTo?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconNavCard.js","sourceRoot":"/","sources":["src/components/generic/Card/IconNavCard/IconNavCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"IconNavCard.js","sourceRoot":"/","sources":["src/components/generic/Card/IconNavCard/IconNavCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyC;AACzC,uDAAwC;AAExC,6EAAqD;AACrD,uEAAgE;AAChE,kEAA2D;AAC3D,wCAAqC;AAErC,wFAA+C;AAexC,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;;IACnD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACnB,QAAQ,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE;YAChB,KAAK,OAAO;gBACR,OAAO,eAAQ,CAAC,UAAU,CAAC;YAC/B,KAAK,UAAU;gBACX,OAAO,eAAQ,CAAC,MAAM,CAAC;YAC3B;gBACI,IAAI,CAAC;SACZ;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,CAAC,CAAC,CAAC,CACpB,8BAAC,uBAAI,IAAC,EAAE,EAAE,IAAI,CAAC,MAAM;QACjB,uCAAK,SAAS,EAAE,iCAAM,CAAC,aAAa,CAAC;YAChC,CAAC,CAAC,IAAI,IAAI,8BAAC,cAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,GAAQ;YACnE,8BAAC,cAAI,IAAC,IAAI,QAAC,SAAS,EAAC,mBAAmB,IACnC,KAAK,CACH;YACP,8BAAC,cAAI,IAAC,SAAS,EAAC,yCAAyC,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IAChG,WAAW,CACT;YAEP,8BAAC,kBAAQ,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,QAAC,SAAS,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,aAAK,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAC,OAAO;gBACpG,wCAAM,SAAS,EAAC,aAAa,IAAE,IAAI,CAAC,IAAI,CAAQ,CACzC,CACT,CACH,CACV,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AA/BW,QAAA,WAAW,eA+BtB","sourcesContent":["import React, { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\nimport styles from './IconNavCard.module.scss';\n\ntype IconNavCardProps = {\n icon: IconType;\n title: string;\n description?: ReactNode;\n\n link?: {\n text: string;\n pathTo?: string;\n icon?: 'arrow' | 'open-new';\n color?: Color;\n };\n};\n\nexport const IconNavCard = (props: IconNavCardProps) => {\n const { title, icon, description, link } = props;\n\n const iconType = (() => {\n switch (link?.icon) {\n case 'arrow':\n return IconType.ArrowRight;\n case 'open-new':\n return IconType.LogOut;\n default:\n null;\n }\n })();\n\n return !!link?.pathTo ? (\n <Link to={link.pathTo}>\n <div className={styles['iconNavCard']}>\n {!!icon && <Icon icon={icon} color={Color.Grey} size=\"26px\"></Icon>}\n <Text bold className=\"u-marg-top--light\">\n {title}\n </Text>\n <Text className=\"u-marg-top--light u-marg-bottom--medium\" color={Color.DarkGrey} type={TextType.Small}>\n {description}\n </Text>\n\n <BEButton size=\"tiny\" isText textColor={link.color ?? Color.Accent} icon={iconType} iconPosition=\"right\">\n <span className=\"u-uppercase\">{link.text}</span>\n </BEButton>\n </div>\n </Link>\n ) : null;\n};\n"]}
|
|
@@ -8,11 +8,12 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const react_i18next_1 = require("react-i18next");
|
|
9
9
|
const Text_1 = __importDefault(require("../Text"));
|
|
10
10
|
const Translation_1 = require("../../../translations/Translation");
|
|
11
|
-
const
|
|
11
|
+
const Color_1 = require("../../../util/Color");
|
|
12
|
+
const BuildingIcon = () => (react_1.default.createElement("div", null,
|
|
12
13
|
react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: 96, height: 96, viewBox: "0 0 96 96", fill: "none" },
|
|
13
|
-
react_1.default.createElement("path", { d: "M12
|
|
14
|
-
react_1.default.createElement("path", { d: "M32.0001
|
|
15
|
-
react_1.default.createElement("path", { d: "M48 26.
|
|
14
|
+
react_1.default.createElement("path", { d: "M12 83.9999H16M84 83.9999H80M16 83.9999V33.5999C16 30.2396 16 28.5594 16.654 27.2759C17.2292 26.147 18.1471 25.2291 19.2761 24.6538C20.5595 23.9999 22.2397 23.9999 25.6 23.9999H27.2C28.8802 23.9999 29.7202 23.9999 30.362 23.6729C30.9265 23.3853 31.3854 22.9263 31.673 22.3618C32 21.7201 32 20.88 32 19.1999V17.5999C32 14.2396 32 12.5594 32.654 11.2759C33.2292 10.147 34.1471 9.22908 35.2761 8.65384C36.5595 7.99988 38.2397 7.99988 41.6 7.99988L54.4 7.99988C57.7603 7.99988 59.4405 7.99988 60.7239 8.65384C61.8529 9.22908 62.7708 10.147 63.346 11.2759C64 12.5594 64 14.2396 64 17.5999V31.9999M16 83.9999H64M64 83.9999V31.9999M64 83.9999H80M64 31.9999H75.2C76.8802 31.9999 77.7202 31.9999 78.362 32.3269C78.9265 32.6145 79.3854 33.0734 79.673 33.6379C80 34.2796 80 35.1197 80 36.7999V83.9999", stroke: "var(--rs-color-accent-1)", strokeWidth: 4, strokeLinecap: "round" }),
|
|
15
|
+
react_1.default.createElement("path", { d: "M32.0001 40.0001H48.0001M32.0001 54.0001H48.0001M32.0001 68.0001H48.0001", stroke: "var(--rs-color-accent-1)", strokeWidth: 4, strokeLinecap: "round" }),
|
|
16
|
+
react_1.default.createElement("path", { d: "M48 26.0399V25.9999", stroke: "var(--rs-color-accent-1)", strokeWidth: 4, strokeLinecap: "round" }))));
|
|
16
17
|
const LocationIcon = () => {
|
|
17
18
|
const springProps = (0, web_1.useSpring)({
|
|
18
19
|
loop: true,
|
|
@@ -22,7 +23,7 @@ const LocationIcon = () => {
|
|
|
22
23
|
});
|
|
23
24
|
return (react_1.default.createElement(web_1.animated.div, { className: "location-icon", style: springProps },
|
|
24
25
|
react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: 48, height: 48, viewBox: "0 0 48 48", fill: "none" },
|
|
25
|
-
react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M40.0001
|
|
26
|
+
react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M40.0001 20.0001C40.0001 28.8367 28.0001 44.0001 24.0001 44.0001C20.0001 44.0001 8.00006 28.8367 8.00006 20.0001C8.00006 11.1636 15.1635 4.00012 24.0001 4.00012C32.8366 4.00012 40.0001 11.1636 40.0001 20.0001ZM24.0001 28.0001C28.4183 28.0001 32.0001 24.4184 32.0001 20.0001C32.0001 15.5818 28.4183 12.0001 24.0001 12.0001C19.5818 12.0001 16.0001 15.5818 16.0001 20.0001C16.0001 24.4184 19.5818 28.0001 24.0001 28.0001Z", fill: "var(--rs-color-accent-1)", stroke: "var(--rs-color-accent-1)", strokeWidth: 6 }))));
|
|
26
27
|
};
|
|
27
28
|
function LargeLoader() {
|
|
28
29
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
@@ -33,8 +34,8 @@ function LargeLoader() {
|
|
|
33
34
|
react_1.default.createElement("div", { className: "large-loader-circle --delay-6" }),
|
|
34
35
|
react_1.default.createElement(LocationIcon, null),
|
|
35
36
|
react_1.default.createElement(BuildingIcon, null),
|
|
36
|
-
react_1.default.createElement("div", { style: { marginTop: '
|
|
37
|
-
react_1.default.createElement(Text_1.default,
|
|
37
|
+
react_1.default.createElement("div", { style: { marginTop: '8px' } },
|
|
38
|
+
react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent }, t(Translation_1.Translation.Misc.Loading)))));
|
|
38
39
|
}
|
|
39
40
|
exports.default = LargeLoader;
|
|
40
41
|
//# sourceMappingURL=LargeLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LargeLoader.js","sourceRoot":"/","sources":["src/components/generic/loader/LargeLoader.tsx"],"names":[],"mappings":";;;;;AAAA,2CAAwD;AACxD,kDAA0B;AAC1B,iDAA+C;AAE/C,qEAA6C;AAC7C,4DAAyD;
|
|
1
|
+
{"version":3,"file":"LargeLoader.js","sourceRoot":"/","sources":["src/components/generic/loader/LargeLoader.tsx"],"names":[],"mappings":";;;;;AAAA,2CAAwD;AACxD,kDAA0B;AAC1B,iDAA+C;AAE/C,qEAA6C;AAC7C,4DAAyD;AACzD,wCAAqC;AAErC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CACvB;IACI,uCAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;QAC1F,wCACI,CAAC,EAAC,uxBAAuxB,EACzxB,MAAM,EAAC,0BAA0B,EACjC,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,GACvB;QACF,wCAAM,CAAC,EAAC,0EAA0E,EAAC,MAAM,EAAC,0BAA0B,EAAC,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,OAAO,GAAG;QAC7J,wCAAM,CAAC,EAAC,qBAAqB,EAAC,MAAM,EAAC,0BAA0B,EAAC,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,OAAO,GAAG,CACtG,CACJ,CACT,CAAC;AAEF,MAAM,YAAY,GAAG,GAAG,EAAE;IACtB,MAAM,WAAW,GAAG,IAAA,eAAS,EAAC;QAC1B,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;QACzB,IAAI,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;QACxC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;KAC7E,CAAC,CAAC;IAEH,OAAO,CACH,8BAAC,cAAQ,CAAC,GAAG,IAAC,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,WAAW;QACtD,uCAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;YAC1F,wCACI,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,oaAAoa,EACta,IAAI,EAAC,0BAA0B,EAC/B,MAAM,EAAC,0BAA0B,EACjC,WAAW,EAAE,CAAC,GAChB,CACA,CACK,CAClB,CAAC;AACN,CAAC,CAAC;AAEF,SAAwB,WAAW;IAC/B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,OAAO,CACH,uCAAK,SAAS,EAAC,cAAc;QACzB,uCAAK,SAAS,EAAC,qBAAqB,GAAG;QACvC,uCAAK,SAAS,EAAC,+BAA+B,GAAG;QACjD,uCAAK,SAAS,EAAC,+BAA+B,GAAG;QACjD,uCAAK,SAAS,EAAC,+BAA+B,GAAG;QACjD,8BAAC,YAAY,OAAG;QAChB,8BAAC,YAAY,OAAG;QAChB,uCAAK,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC5B,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,MAAM,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAQ,CAC7D,CACJ,CACT,CAAC;AACN,CAAC;AAhBD,8BAgBC","sourcesContent":["import { animated, useSpring } from '@react-spring/web';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Text from '@/components/generic/Text';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nconst BuildingIcon = () => (\n <div>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={96} height={96} viewBox=\"0 0 96 96\" fill=\"none\">\n <path\n d=\"M12 83.9999H16M84 83.9999H80M16 83.9999V33.5999C16 30.2396 16 28.5594 16.654 27.2759C17.2292 26.147 18.1471 25.2291 19.2761 24.6538C20.5595 23.9999 22.2397 23.9999 25.6 23.9999H27.2C28.8802 23.9999 29.7202 23.9999 30.362 23.6729C30.9265 23.3853 31.3854 22.9263 31.673 22.3618C32 21.7201 32 20.88 32 19.1999V17.5999C32 14.2396 32 12.5594 32.654 11.2759C33.2292 10.147 34.1471 9.22908 35.2761 8.65384C36.5595 7.99988 38.2397 7.99988 41.6 7.99988L54.4 7.99988C57.7603 7.99988 59.4405 7.99988 60.7239 8.65384C61.8529 9.22908 62.7708 10.147 63.346 11.2759C64 12.5594 64 14.2396 64 17.5999V31.9999M16 83.9999H64M64 83.9999V31.9999M64 83.9999H80M64 31.9999H75.2C76.8802 31.9999 77.7202 31.9999 78.362 32.3269C78.9265 32.6145 79.3854 33.0734 79.673 33.6379C80 34.2796 80 35.1197 80 36.7999V83.9999\"\n stroke=\"var(--rs-color-accent-1)\"\n strokeWidth={4}\n strokeLinecap=\"round\"\n />\n <path d=\"M32.0001 40.0001H48.0001M32.0001 54.0001H48.0001M32.0001 68.0001H48.0001\" stroke=\"var(--rs-color-accent-1)\" strokeWidth={4} strokeLinecap=\"round\" />\n <path d=\"M48 26.0399V25.9999\" stroke=\"var(--rs-color-accent-1)\" strokeWidth={4} strokeLinecap=\"round\" />\n </svg>\n </div>\n);\n\nconst LocationIcon = () => {\n const springProps = useSpring({\n loop: true,\n config: { duration: 900 },\n from: { transform: 'translateY(-20px)' },\n to: [{ transform: 'translateY(0px)' }, { transform: 'translateY(-20px)' }],\n });\n\n return (\n <animated.div className=\"location-icon\" style={springProps}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={48} height={48} viewBox=\"0 0 48 48\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M40.0001 20.0001C40.0001 28.8367 28.0001 44.0001 24.0001 44.0001C20.0001 44.0001 8.00006 28.8367 8.00006 20.0001C8.00006 11.1636 15.1635 4.00012 24.0001 4.00012C32.8366 4.00012 40.0001 11.1636 40.0001 20.0001ZM24.0001 28.0001C28.4183 28.0001 32.0001 24.4184 32.0001 20.0001C32.0001 15.5818 28.4183 12.0001 24.0001 12.0001C19.5818 12.0001 16.0001 15.5818 16.0001 20.0001C16.0001 24.4184 19.5818 28.0001 24.0001 28.0001Z\"\n fill=\"var(--rs-color-accent-1)\"\n stroke=\"var(--rs-color-accent-1)\"\n strokeWidth={6}\n />\n </svg>\n </animated.div>\n );\n};\n\nexport default function LargeLoader() {\n const { t } = useTranslation();\n\n return (\n <div className=\"large-loader\">\n <div className=\"large-loader-circle\" />\n <div className=\"large-loader-circle --delay-2\" />\n <div className=\"large-loader-circle --delay-4\" />\n <div className=\"large-loader-circle --delay-6\" />\n <LocationIcon />\n <BuildingIcon />\n <div style={{ marginTop: '8px' }}>\n <Text color={Color.Accent}>{t(Translation.Misc.Loading)}</Text>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -38,7 +38,7 @@ function StepConfirmationPoliciesSection() {
|
|
|
38
38
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
39
39
|
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
40
40
|
react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Confirmation.Policies))),
|
|
41
|
-
react_1.default.createElement("div", { className: "u-marg-bottom" },
|
|
41
|
+
react_1.default.createElement("div", { className: "u-marg-bottom step-confirmation-policies-section" },
|
|
42
42
|
react_1.default.createElement("div", { className: "row" },
|
|
43
43
|
react_1.default.createElement("div", { className: "col-6 col-md-3" },
|
|
44
44
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationPoliciesSection.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationPoliciesSection.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,kEAA2D;AAE3D,SAAwB,+BAA+B;IACnD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAY,CACnE;QACN,uCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"StepConfirmationPoliciesSection.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationPoliciesSection.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,kEAA2D;AAE3D,SAAwB,+BAA+B;IACnD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAY,CACnE;QACN,uCAAK,SAAS,EAAC,kDAAkD;YAC7D,uCAAK,SAAS,EAAC,KAAK;gBAChB,uCAAK,SAAS,EAAC,gBAAgB;oBAC3B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAU,CAC3C;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACrB,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC;6BAAG,KAAK,aAAL,KAAK;wBAAL,KAAK,CAAE,WAAW,CAC5C,CACL;gBACN,uCAAK,SAAS,EAAC,gBAAgB;oBAC3B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAU,CAC5C;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;wBACrB,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC;6BAAG,KAAK,aAAL,KAAK;wBAAL,KAAK,CAAE,YAAY,CAC9C,CACL,CACJ,CACJ,CACP,CACN,CAAC;AACN,CAAC;AA/BD,kDA+BC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\n\nexport default function StepConfirmationPoliciesSection() {\n const { t } = useTranslation();\n const { hotel } = useCurrentHotel();\n\n return (\n <>\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.Policies)}</Headline>\n </div>\n <div className=\"u-marg-bottom step-confirmation-policies-section\">\n <div className=\"row\">\n <div className=\"col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Misc.CheckIn)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.After)} {hotel?.checkInTime}\n </Text>\n </div>\n <div className=\"col-6 col-md-3\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Misc.CheckOut)}</strong>\n </Text>\n <Text type={TextType.Small}>\n {t(Translation.Misc.Before)} {hotel?.checkOutTime}\n </Text>\n </div>\n </div>\n </div>\n </>\n );\n}\n"]}
|
|
@@ -50,7 +50,7 @@ function StepConfirmationPolicyBlock() {
|
|
|
50
50
|
else {
|
|
51
51
|
policiesGrouped[0] = { rooms: [{ index: 1, room: rooms[0] }] };
|
|
52
52
|
}
|
|
53
|
-
return (react_1.default.createElement("div", { className: "u-marg-bottom" }, Object.values(policiesGrouped).map((group, index) => {
|
|
53
|
+
return (react_1.default.createElement("div", { className: "u-marg-bottom step-confirmation-policy-block" }, Object.values(policiesGrouped).map((group, index) => {
|
|
54
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 },
|
|
@@ -67,12 +67,12 @@ function StepConfirmationPolicyBlock() {
|
|
|
67
67
|
_a.name));
|
|
68
68
|
})),
|
|
69
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
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true }, t(Translation_1.Translation.Misc.GuaranteePolicy)),
|
|
71
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small
|
|
72
|
-
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_b = firstRoom.room.getRate()) === null || _b === void 0 ? void 0 : _b.getGuaranteePolicy()) || '' } })))) : null),
|
|
73
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, bold: true }, t(Translation_1.Translation.Misc.CancellationPolicy)),
|
|
74
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small
|
|
75
|
-
react_1.default.createElement("span", { dangerouslySetInnerHTML: { __html: ((_c = firstRoom.room.getRate()) === null || _c === void 0 ? void 0 : _c.getCancellationPolicy()) || '' } }))));
|
|
70
|
+
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)),
|
|
71
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
72
|
+
react_1.default.createElement("span", { className: "u-clear-font-weight", dangerouslySetInnerHTML: { __html: ((_b = firstRoom.room.getRate()) === null || _b === void 0 ? void 0 : _b.getGuaranteePolicy()) || '' } })))) : null),
|
|
73
|
+
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)),
|
|
74
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
|
|
75
|
+
react_1.default.createElement("span", { className: "u-clear-font-weight", 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,
|
|
1
|
+
{"version":3,"file":"StepConfirmationPolicyBlock.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationPolicyBlock.tsx"],"names":[],"mappings":"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","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 step-confirmation-policy-block\">\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 className=\"u-marg-bottom--light\">\n {t(Translation.Misc.GuaranteePolicy)}\n </Text>\n <Text type={TextType.Small}>\n <span className=\"u-clear-font-weight\" dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getGuaranteePolicy() || '' }}></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 className=\"u-clear-font-weight\" dangerouslySetInnerHTML={{ __html: firstRoom.room.getRate()?.getCancellationPolicy() || '' }}></span>\n </Text>\n </div>\n );\n })}\n </div>\n );\n }, [basketContext.currentBasketRows]);\n}\n"]}
|
|
@@ -42,9 +42,6 @@ function PeoplePickerRow(pickerProps) {
|
|
|
42
42
|
const { adults, children, infants } = pickerProps.details;
|
|
43
43
|
const { hotel } = (0, hooks_1.useCurrentHotel)();
|
|
44
44
|
const [animatedIn, setAnimation] = (0, react_1.useState)(false);
|
|
45
|
-
const heightProps = (0, web_1.useSpring)({
|
|
46
|
-
height: animatedIn ? (pickerProps.number === 0 ? 145 : 179) : 0,
|
|
47
|
-
});
|
|
48
45
|
const transition = (0, web_1.useTransition)(animatedIn, {
|
|
49
46
|
from: { opacity: 0 },
|
|
50
47
|
enter: { opacity: 1 },
|
|
@@ -79,6 +76,27 @@ function PeoplePickerRow(pickerProps) {
|
|
|
79
76
|
};
|
|
80
77
|
const { getMaxSelectableAdults, showChildren } = (0, useSearchScopeHook_1.useSearchScopeHook)();
|
|
81
78
|
const maxAdults = getMaxSelectableAdults({ adults, children });
|
|
79
|
+
const totalHeight = (0, react_1.useMemo)(() => {
|
|
80
|
+
var _a;
|
|
81
|
+
// Default: Line break + Adult row
|
|
82
|
+
let height = 64 + 32;
|
|
83
|
+
// Room number
|
|
84
|
+
if (pickerProps.number) {
|
|
85
|
+
height += 34;
|
|
86
|
+
}
|
|
87
|
+
// Children row
|
|
88
|
+
if (showChildren) {
|
|
89
|
+
height += 48;
|
|
90
|
+
}
|
|
91
|
+
// Infant row
|
|
92
|
+
if ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.childConfiguration) === null || _a === void 0 ? void 0 : _a.supportInfants) {
|
|
93
|
+
height += 48;
|
|
94
|
+
}
|
|
95
|
+
return height;
|
|
96
|
+
}, [showChildren, pickerProps, hotel]);
|
|
97
|
+
const [heightProps] = (0, web_1.useSpring)(() => ({
|
|
98
|
+
height: animatedIn ? totalHeight : 0,
|
|
99
|
+
}), [totalHeight, animatedIn]);
|
|
82
100
|
return (react_1.default.createElement(react_1.default.Fragment, null, transition((props, item) => {
|
|
83
101
|
var _a;
|
|
84
102
|
return item && (react_1.default.createElement(web_1.animated.div, { ref: firstUpdate, style: Object.assign(Object.assign({}, props), heightProps) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,2CAAuE;AACvE,+
|
|
1
|
+
{"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { animated, useSpring, useTransition } from '@react-spring/web';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { Color } from '@/util/Color';\n\nexport interface PeoplePickerDetails {\n adults: number;\n children: number;\n infants: number;\n promoCode: string;\n}\n\nexport interface PeoplePickerRowProps {\n details: PeoplePickerDetails;\n\n number: number;\n onChange?: (details: PeoplePickerDetails) => void;\n onRemove?: () => void;\n}\n\nexport default function PeoplePickerRow(pickerProps: PeoplePickerRowProps) {\n const { t } = useTranslation();\n const { adults, children, infants } = pickerProps.details;\n\n const { hotel } = useCurrentHotel();\n\n const [animatedIn, setAnimation] = useState(false);\n\n const transition = useTransition(animatedIn, {\n from: { opacity: 0 },\n enter: { opacity: 1 },\n leave: { opacity: 0 },\n });\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setAnimation(true);\n }, []);\n\n const onInputChanged = (val: any) => {\n if (pickerProps.onChange) {\n pickerProps.onChange({\n ...pickerProps.details,\n ...val,\n });\n }\n };\n\n const onClose = () => {\n if (pickerProps.onRemove) {\n setAnimation(false);\n setTimeout(() => {\n pickerProps.onRemove?.();\n }, 500);\n }\n };\n const adultsChangeHandler = (val: any) => {\n onInputChanged({ adults: val });\n };\n const childrenChangeHandler = (val: any) => {\n onInputChanged({ children: val });\n };\n const infantChangeHandler = (val: any) => {\n onInputChanged({ infants: val });\n };\n\n const { getMaxSelectableAdults, showChildren } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults, children });\n\n const totalHeight = useMemo(() => {\n // Default: Line break + Adult row\n let height = 64 + 32;\n\n // Room number\n if (pickerProps.number) {\n height += 34;\n }\n\n // Children row\n if (showChildren) {\n height += 48;\n }\n\n // Infant row\n if (hotel?.childConfiguration?.supportInfants) {\n height += 48;\n }\n\n return height;\n }, [showChildren, pickerProps, hotel]);\n\n const [heightProps] = useSpring(\n () => ({\n height: animatedIn ? totalHeight : 0,\n }),\n [totalHeight, animatedIn]\n );\n\n return (\n <>\n {transition(\n (props, item) =>\n item && (\n <animated.div ref={firstUpdate} style={{ ...props, ...heightProps } as any}>\n <div className=\"people-picker--item\">\n {pickerProps.number > 0 && (\n <div className=\"people-picker--item-row\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Misc.Room)} {pickerProps.number + 1}\n </strong>\n </Text>\n <div className=\"people-picker--item-remove\" onClick={onClose}>\n <Icon icon={IconType.Close} color={Color.Grey} />\n </div>\n </div>\n )}\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Adult_plural)}</Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={adultsChangeHandler} />\n </div>\n {showChildren ? (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Child_plural)}</Text>\n <NumberIncrement number={children} min={0} max={(hotel?.maxOccupancy as number) - adults} onChange={childrenChangeHandler} />\n </div>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Infant_plural)}</Text>\n <NumberIncrement number={infants} min={0} max={(hotel?.maxOccupancy as number) - adults} onChange={infantChangeHandler} />\n </div>\n ) : null}\n </div>\n <LineBreak />\n </animated.div>\n )\n )}\n </>\n );\n}\n"]}
|
|
@@ -54,10 +54,10 @@ function RoomDetailsBedsBlock(props) {
|
|
|
54
54
|
react_1.default.createElement(Text_1.Text, { type: Text_1.TextType.Small, inline: true, color: textColor }, t(Translation_1.Translation.Step.Room.Sleeps, {
|
|
55
55
|
maxOccupancy: extraRoomData === null || extraRoomData === void 0 ? void 0 : extraRoomData.maxOccupancy,
|
|
56
56
|
})))),
|
|
57
|
-
react_1.default.createElement("li", { className: "u-flex align-items-center" },
|
|
57
|
+
(extraRoomData === null || extraRoomData === void 0 ? void 0 : extraRoomData.showBedType) !== false && (react_1.default.createElement("li", { className: "u-flex align-items-center" },
|
|
58
58
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Bed, size: "24px", color: Color_1.Color.Navy }),
|
|
59
59
|
react_1.default.createElement("div", { className: "u-pad-left--light" },
|
|
60
|
-
react_1.default.createElement(Text_1.Text, { type: Text_1.TextType.Small, inline: true, color: textColor }, bedType))),
|
|
60
|
+
react_1.default.createElement(Text_1.Text, { type: Text_1.TextType.Small, inline: true, color: textColor }, bedType)))),
|
|
61
61
|
!!roomSize && (react_1.default.createElement("li", { className: "u-flex align-items-center" },
|
|
62
62
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.RoomSize, size: "24px", color: Color_1.Color.Navy }),
|
|
63
63
|
react_1.default.createElement("div", { className: "u-pad-left--light" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomDetailsBedsBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsBedsBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAE/C,uEAAgE;AAChE,oDAA2D;AAE3D,4DAAyD;AACzD,wCAAqC;AAQrC,SAAgB,oBAAoB,CAAC,KAAgC;;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,0CAAE,QAAQ,CAAC;IAC3E,MAAM,gBAAgB,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,0CAAE,cAAc,CAAC;IACzF,MAAM,QAAQ,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,SAAS,mCAAI,aAAK,CAAC,QAAQ,CAAC;IAEpD,IAAI,OAAO,GAAG,GAAG,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAsB,IAAG,CAAC,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,CAAC;IAC1H,IAAI,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,0CAAE,IAAI,EAAE,EAAE;QACxC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;KAC3C;IAED,OAAO,CACH,sCAAI,SAAS,EAAC,oDAAoD;QAC9D,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAC9D,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC7B,YAAY,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY;iBAC5C,CAAC,CACC,CACL,CACL;
|
|
1
|
+
{"version":3,"file":"RoomDetailsBedsBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsBedsBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Text, TextType } from '@/components/generic/Text';\nimport { Room } from '@/models/Room/Room';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\ninterface RoomDetailsBedsBlockProps {\n room: Room;\n\n textColor?: Color;\n}\n\nexport function RoomDetailsBedsBlock(props: RoomDetailsBedsBlockProps) {\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n const extraRoomData = hotel?.rooms?.[props.room?.code as string];\n const adminRoomSize = hotel?.rooms?.[props.room?.code as string]?.roomSize;\n const overrideRoomSize = hotel?.overwrites?.[props.room?.code as string]?.RoomDimensions;\n const roomSize = overrideRoomSize ?? (adminRoomSize ? `${adminRoomSize} m²` : undefined);\n\n const textColor = props.textColor ?? Color.DarkGrey;\n\n let bedType = `${(extraRoomData?.bedQuantity as number) > 0 ? extraRoomData?.bedQuantity : ''} ${extraRoomData?.bedType}`;\n if (extraRoomData?.bedTypeOverride?.trim()) {\n bedType = extraRoomData.bedTypeOverride;\n }\n\n return (\n <ul className=\"u-inline-flex u-flex-gap u-flex-wrap u-marg-bottom\">\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.People} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {t(Translation.Step.Room.Sleeps, {\n maxOccupancy: extraRoomData?.maxOccupancy,\n })}\n </Text>\n </div>\n </li>\n {extraRoomData?.showBedType !== false && (\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.Bed} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {bedType}\n </Text>\n </div>\n </li>\n )}\n {!!roomSize && (\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.RoomSize} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {roomSize}\n </Text>\n </div>\n </li>\n )}\n </ul>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;
|
|
1
|
+
{"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAA8F;AAiD9F,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,6BAAa,CAAA;IACb,+BAAe,CAAA;AACnB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AA2DD,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: { [id: string]: { name: string; type: 'select'; includeAllAbove: boolean; requireInput: boolean; options: any } };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport enum EIntegration {\n Big4 = 'Big4',\n Top10 = 'Top10',\n}\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n} & Pick<AdminHotelConfig, 'childConfiguration'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
|
|
@@ -56,7 +56,7 @@ const AccountHomePage = () => {
|
|
|
56
56
|
react_1.default.createElement(react_router_dom_1.Link, { to: StepManager_1.default.getFirstStep().getStepUrl() },
|
|
57
57
|
react_1.default.createElement(BEButton_1.default, { isText: true, icon: Icon_1.IconType.ArrowLeft, size: "small" }, t(Translation_1.Translation.UserPortal.HomeScreen.BackToBooking)))),
|
|
58
58
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy u-pad-top@m" },
|
|
59
|
-
react_1.default.createElement(Headline_1.default, { size: "extra-large", className: "u-marg-bottom" }, t(Translation_1.Translation.UserPortal.HomeScreen.Title, { name: user === null || user === void 0 ? void 0 : user.forename })),
|
|
59
|
+
react_1.default.createElement(Headline_1.default, { size: "extra-large", className: "u-marg-bottom" }, t((user === null || user === void 0 ? void 0 : user.forename) ? Translation_1.Translation.UserPortal.HomeScreen.Title : Translation_1.Translation.UserPortal.HomeScreen.TitleEmpty, { name: user === null || user === void 0 ? void 0 : user.forename })),
|
|
60
60
|
hasBookings ? (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Body }, t(Translation_1.Translation.UserPortal.HomeScreen.Subtitle))) : (react_1.default.createElement(Text_1.default, { className: "u-marg-top" }, t(Translation_1.Translation.Reservation.EmptyPage.SubTitle)))),
|
|
61
61
|
react_1.default.createElement("div", { className: "u-marg-bottom--heavy" }, hasBookings ? (react_1.default.createElement(ReservationItem_1.default, { itineraryItem: upcomingBookings === null || upcomingBookings === void 0 ? void 0 : upcomingBookings[0], defaultEventsExpanded: true })) : (react_1.default.createElement("div", { className: "u-marg-top--heavy u-flex u-flex-align-center u-flex-direction-column@l- u-flex-gap" },
|
|
62
62
|
react_1.default.createElement("div", null,
|
|
@@ -69,28 +69,28 @@ const AccountHomePage = () => {
|
|
|
69
69
|
react_1.default.createElement(BEButton_1.default, { wide: isMobile, rounded: true, filled: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", primary: true }, t(Translation_1.Translation.Reservation.EmptyPage.SearchRooms)))))))),
|
|
70
70
|
react_1.default.createElement("div", { className: "row" },
|
|
71
71
|
react_1.default.createElement("div", { className: "col-md-3" },
|
|
72
|
-
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.Subtitle, title: t(Translation_1.Translation.UserPortal.HomeScreen.Bookings), description:
|
|
72
|
+
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.Subtitle, title: t(Translation_1.Translation.UserPortal.HomeScreen.Bookings), description: react_1.default.createElement(react_i18next_1.Trans, { i18nKey: Translation_1.Translation.UserPortal.HomeScreen.BookingsDescription, components: { 1: react_1.default.createElement("div", null) } }), link: {
|
|
73
73
|
text: 'See list',
|
|
74
74
|
pathTo: AccountRoutes_1.AccountRoutes.Reservations.path,
|
|
75
75
|
icon: 'arrow',
|
|
76
76
|
color: Color_1.Color.Accent,
|
|
77
77
|
} })),
|
|
78
78
|
react_1.default.createElement("div", { className: "col-md-3" },
|
|
79
|
-
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.Person, title: t(Translation_1.Translation.Navigation.Menu.ProfileInformation), description:
|
|
79
|
+
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.Person, title: t(Translation_1.Translation.Navigation.Menu.ProfileInformation), description: react_1.default.createElement(react_i18next_1.Trans, { i18nKey: Translation_1.Translation.UserPortal.HomeScreen.ProfileInformationDescription, components: { 1: react_1.default.createElement("div", null) } }), link: {
|
|
80
80
|
text: 'Edit Info',
|
|
81
81
|
pathTo: AccountRoutes_1.AccountRoutes.ProfileDetails.path,
|
|
82
82
|
icon: 'arrow',
|
|
83
83
|
color: Color_1.Color.Accent,
|
|
84
84
|
} })),
|
|
85
85
|
react_1.default.createElement("div", { className: "col-md-3" },
|
|
86
|
-
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.CreditCard, title: t(Translation_1.Translation.Navigation.Menu.PaymentInformation), description:
|
|
86
|
+
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.CreditCard, title: t(Translation_1.Translation.Navigation.Menu.PaymentInformation), description: react_1.default.createElement(react_i18next_1.Trans, { i18nKey: Translation_1.Translation.UserPortal.HomeScreen.PaymentInformationDescription, components: { 1: react_1.default.createElement("div", null) } }), link: {
|
|
87
87
|
text: 'Manage cards',
|
|
88
88
|
pathTo: AccountRoutes_1.AccountRoutes.CardDetails.path,
|
|
89
89
|
icon: 'arrow',
|
|
90
90
|
color: Color_1.Color.Accent,
|
|
91
91
|
} })),
|
|
92
92
|
react_1.default.createElement("div", { className: "col-md-3" },
|
|
93
|
-
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.ProgressHelp, title: t(Translation_1.Translation.Navigation.Menu.NeedHelp), description:
|
|
93
|
+
react_1.default.createElement(IconNavCard_1.IconNavCard, { icon: Icon_1.IconType.ProgressHelp, title: t(Translation_1.Translation.Navigation.Menu.NeedHelp), description: react_1.default.createElement(react_i18next_1.Trans, { i18nKey: Translation_1.Translation.UserPortal.HomeScreen.NeedHelpDescription, components: { 1: react_1.default.createElement("div", null) } }), link: {
|
|
94
94
|
text: 'Contact now',
|
|
95
95
|
pathTo: AccountRoutes_1.AccountRoutes.Help.path,
|
|
96
96
|
icon: 'arrow',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountHomePage.js","sourceRoot":"/","sources":["src/pages/account/AccountHome/AccountHomePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { useMember } from '@frontend/hooks';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconNavCard } from '@/components/generic/Card/IconNavCard/IconNavCard';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport HomeEmptyReservation from '@/components/graphics/EmptyGraphic';\nimport ReservationItem from '@/components/reservation/ReservationItem';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\n\nexport const AccountHomePage = () => {\n const { user, upcomingBookings } = useMember();\n const { t } = useTranslation();\n\n const context = useContext(BookingEngineContext);\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const firstStepUrl = StepManager.getFirstStep().getStepUrl();\n\n const hasBookings = (upcomingBookings?.length as number) > 0;\n\n return (\n <div>\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom\">\n <Link to={StepManager.getFirstStep().getStepUrl()}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.UserPortal.HomeScreen.BackToBooking)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-marg-bottom--heavy u-pad-top@m\">\n <Headline size=\"extra-large\" className=\"u-marg-bottom\">\n {t(Translation.UserPortal.HomeScreen.Title, { name: user?.forename })}\n </Headline>\n {hasBookings ? (\n <Text type={TextType.Body}>{t(Translation.UserPortal.HomeScreen.Subtitle)}</Text>\n ) : (\n <Text className=\"u-marg-top\">{t(Translation.Reservation.EmptyPage.SubTitle)}</Text>\n )}\n </div>\n\n <div className=\"u-marg-bottom--heavy\">\n {hasBookings ? (\n <ReservationItem itineraryItem={upcomingBookings?.[0] as IRoomstayMemberBookingItemWithRefAndHotelDetails} defaultEventsExpanded />\n ) : (\n <div className=\"u-marg-top--heavy u-flex u-flex-align-center u-flex-direction-column@l- u-flex-gap\">\n <div>\n <HomeEmptyReservation className=\"mw-100\" />\n </div>\n <div className=\"u-marg-top--heavy@m-\">\n <Headline size=\"large\">{t(Translation.Reservation.EmptyPage.Message)}</Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} className=\"u-marg-top--light\">\n {t(Translation.Reservation.EmptyPage.SubMessage)}\n </Text>\n <div className=\"u-marg-top--heavy u-flex u-flex-flex-start u-flex-gap--light u-flex-direction-column@l-\">\n <Link to={firstStepUrl}>\n <BEButton wide={isMobile} rounded filled icon={IconType.ArrowRight} iconPosition=\"right\" primary>\n {t(Translation.Reservation.EmptyPage.SearchRooms)}\n </BEButton>\n </Link>\n {/* <Link to={AccountRoutes.Reservations.path}>\n <BEButton wide={isMobile} rounded icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.EmptyPage.SeeAll)}\n </BEButton>\n </Link> */}\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.Subtitle}\n title={t(Translation.UserPortal.HomeScreen.Bookings)}\n description=\"See all of your bookings, past, present and cancelled.\"\n link={{\n text: 'See list',\n pathTo: AccountRoutes.Reservations.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.Person}\n title={t(Translation.Navigation.Menu.ProfileInformation)}\n description=\"Edit your personal details, like address, and name\"\n link={{\n text: 'Edit Info',\n pathTo: AccountRoutes.ProfileDetails.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.CreditCard}\n title={t(Translation.Navigation.Menu.PaymentInformation)}\n description=\"Effortlessly manage cards for smoother checkout\"\n link={{\n text: 'Manage cards',\n pathTo: AccountRoutes.CardDetails.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.ProgressHelp}\n title={t(Translation.Navigation.Menu.NeedHelp)}\n description=\"Connect with our hotel staff for prompt assistance\"\n link={{\n text: 'Contact now',\n pathTo: AccountRoutes.Help.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"AccountHomePage.js","sourceRoot":"/","sources":["src/pages/account/AccountHome/AccountHomePage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, IRoomstayMemberBookingItemWithRefAndHotelDetails } from '@frontend/contexts';\nimport { useMember } from '@frontend/hooks';\nimport React, { useContext } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconNavCard } from '@/components/generic/Card/IconNavCard/IconNavCard';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport HomeEmptyReservation from '@/components/graphics/EmptyGraphic';\nimport ReservationItem from '@/components/reservation/ReservationItem';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\n\nexport const AccountHomePage = () => {\n const { user, upcomingBookings } = useMember();\n const { t } = useTranslation();\n\n const context = useContext(BookingEngineContext);\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const firstStepUrl = StepManager.getFirstStep().getStepUrl();\n\n const hasBookings = (upcomingBookings?.length as number) > 0;\n\n return (\n <div>\n <div className=\"u-marg-top--heavy@m u-marg-top@m- u-marg-bottom\">\n <Link to={StepManager.getFirstStep().getStepUrl()}>\n <BEButton isText icon={IconType.ArrowLeft} size=\"small\">\n {t(Translation.UserPortal.HomeScreen.BackToBooking)}\n </BEButton>\n </Link>\n </div>\n <div className=\"u-marg-bottom--heavy u-pad-top@m\">\n <Headline size=\"extra-large\" className=\"u-marg-bottom\">\n {t(user?.forename ? Translation.UserPortal.HomeScreen.Title : Translation.UserPortal.HomeScreen.TitleEmpty, { name: user?.forename })}\n </Headline>\n {hasBookings ? (\n <Text type={TextType.Body}>{t(Translation.UserPortal.HomeScreen.Subtitle)}</Text>\n ) : (\n <Text className=\"u-marg-top\">{t(Translation.Reservation.EmptyPage.SubTitle)}</Text>\n )}\n </div>\n\n <div className=\"u-marg-bottom--heavy\">\n {hasBookings ? (\n <ReservationItem itineraryItem={upcomingBookings?.[0] as IRoomstayMemberBookingItemWithRefAndHotelDetails} defaultEventsExpanded />\n ) : (\n <div className=\"u-marg-top--heavy u-flex u-flex-align-center u-flex-direction-column@l- u-flex-gap\">\n <div>\n <HomeEmptyReservation className=\"mw-100\" />\n </div>\n <div className=\"u-marg-top--heavy@m-\">\n <Headline size=\"large\">{t(Translation.Reservation.EmptyPage.Message)}</Headline>\n <Text color={Color.DarkGrey} type={TextType.Small} className=\"u-marg-top--light\">\n {t(Translation.Reservation.EmptyPage.SubMessage)}\n </Text>\n <div className=\"u-marg-top--heavy u-flex u-flex-flex-start u-flex-gap--light u-flex-direction-column@l-\">\n <Link to={firstStepUrl}>\n <BEButton wide={isMobile} rounded filled icon={IconType.ArrowRight} iconPosition=\"right\" primary>\n {t(Translation.Reservation.EmptyPage.SearchRooms)}\n </BEButton>\n </Link>\n {/* <Link to={AccountRoutes.Reservations.path}>\n <BEButton wide={isMobile} rounded icon={IconType.ArrowRight} iconPosition=\"right\">\n {t(Translation.Reservation.EmptyPage.SeeAll)}\n </BEButton>\n </Link> */}\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.Subtitle}\n title={t(Translation.UserPortal.HomeScreen.Bookings)}\n description={<Trans i18nKey={Translation.UserPortal.HomeScreen.BookingsDescription} components={{ 1: <div /> }} />}\n link={{\n text: 'See list',\n pathTo: AccountRoutes.Reservations.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.Person}\n title={t(Translation.Navigation.Menu.ProfileInformation)}\n description={<Trans i18nKey={Translation.UserPortal.HomeScreen.ProfileInformationDescription} components={{ 1: <div /> }} />}\n link={{\n text: 'Edit Info',\n pathTo: AccountRoutes.ProfileDetails.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.CreditCard}\n title={t(Translation.Navigation.Menu.PaymentInformation)}\n description={<Trans i18nKey={Translation.UserPortal.HomeScreen.PaymentInformationDescription} components={{ 1: <div /> }} />}\n link={{\n text: 'Manage cards',\n pathTo: AccountRoutes.CardDetails.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n\n <div className=\"col-md-3\">\n <IconNavCard\n icon={IconType.ProgressHelp}\n title={t(Translation.Navigation.Menu.NeedHelp)}\n description={<Trans i18nKey={Translation.UserPortal.HomeScreen.NeedHelpDescription} components={{ 1: <div /> }} />}\n link={{\n text: 'Contact now',\n pathTo: AccountRoutes.Help.path,\n icon: 'arrow',\n color: Color.Accent,\n }}\n />\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
2
|
+
import React from 'react';
|
|
2
3
|
import { IconType } from '../components/generic/Icon/Icon';
|
|
3
4
|
import { Color } from '../util/Color';
|
|
4
5
|
declare const _default: ComponentMeta<(props: {
|
|
5
6
|
icon: IconType;
|
|
6
7
|
title: string;
|
|
7
|
-
description?:
|
|
8
|
+
description?: React.ReactNode;
|
|
8
9
|
link?: {
|
|
9
10
|
text: string;
|
|
10
11
|
pathTo?: string | undefined;
|
|
@@ -16,7 +17,7 @@ export default _default;
|
|
|
16
17
|
export declare const Default: ComponentStory<(props: {
|
|
17
18
|
icon: IconType;
|
|
18
19
|
title: string;
|
|
19
|
-
description?:
|
|
20
|
+
description?: React.ReactNode;
|
|
20
21
|
link?: {
|
|
21
22
|
text: string;
|
|
22
23
|
pathTo?: string | undefined;
|
|
@@ -536,9 +536,14 @@ export declare const Translation: {
|
|
|
536
536
|
HomeScreen: {
|
|
537
537
|
BackToBooking: string;
|
|
538
538
|
Title: string;
|
|
539
|
+
TitleEmpty: string;
|
|
539
540
|
Subtitle: string;
|
|
540
541
|
ViewAllBookings: string;
|
|
541
542
|
Bookings: string;
|
|
543
|
+
BookingsDescription: string;
|
|
544
|
+
ProfileInformationDescription: string;
|
|
545
|
+
PaymentInformationDescription: string;
|
|
546
|
+
NeedHelpDescription: string;
|
|
542
547
|
};
|
|
543
548
|
ProfileScreen: {
|
|
544
549
|
Validation: {
|
|
@@ -539,9 +539,14 @@ exports.Translation = {
|
|
|
539
539
|
HomeScreen: {
|
|
540
540
|
BackToBooking: 'UserPortal.HomeScreen.BackToBooking',
|
|
541
541
|
Title: 'UserPortal.HomeScreen.Title',
|
|
542
|
+
TitleEmpty: 'UserPortal.HomeScreen.TitleEmpty',
|
|
542
543
|
Subtitle: 'UserPortal.HomeScreen.Subtitle',
|
|
543
544
|
ViewAllBookings: 'UserPortal.HomeScreen.ViewAllBookings',
|
|
544
545
|
Bookings: 'UserPortal.HomeScreen.Bookings',
|
|
546
|
+
BookingsDescription: 'UserPortal.HomeScreen.BookingsDescription',
|
|
547
|
+
ProfileInformationDescription: 'UserPortal.HomeScreen.ProfileInformationDescription',
|
|
548
|
+
PaymentInformationDescription: 'UserPortal.HomeScreen.PaymentInformationDescription',
|
|
549
|
+
NeedHelpDescription: 'UserPortal.HomeScreen.NeedHelpDescription',
|
|
545
550
|
},
|
|
546
551
|
ProfileScreen: {
|
|
547
552
|
Validation: {
|