@roomstay/frontend 2.6.34 → 2.6.36
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/166.bundle.js +1 -1
- package/dist/279.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/446.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/586.bundle.js +1 -1
- package/dist/736.bundle.js +1 -1
- package/dist/873.bundle.js +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/927.bundle.js +1 -1
- package/dist/972.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/ScrollToTop.js +9 -21
- package/dist/src/components/generic/ScrollToTop.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabLink.d.ts +10 -1
- package/dist/src/components/generic/Tabs/TabLink.js +13 -13
- package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
- package/dist/src/components/generic/Tabs/TabRouteContainer.js +9 -7
- package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
- package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +7 -3
- package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
- package/dist/src/components/navigation/Header.js +2 -2
- package/dist/src/components/navigation/Header.js.map +1 -1
- package/dist/src/components/navigation/StepSelector.js +2 -2
- package/dist/src/components/navigation/StepSelector.js.map +1 -1
- package/dist/src/components/navigation/StepSelectorModal.js +5 -1
- package/dist/src/components/navigation/StepSelectorModal.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCard.js +2 -2
- package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
- package/dist/src/components/steps/hotel/HotelCardModal.js +2 -2
- package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +2 -3
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +3 -3
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/containers/PrivateRoute.d.ts +6 -3
- package/dist/src/containers/PrivateRoute.js +9 -20
- package/dist/src/containers/PrivateRoute.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -3
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +11 -3
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.d.ts +1 -0
- package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js +16 -0
- package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js.map +1 -0
- package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.d.ts +1 -0
- package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js +14 -0
- package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js.map +1 -0
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +19 -25
- package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js +4 -1
- package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +4 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +4 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
- package/dist/src/hooks/HistoryConsistentPush.js +10 -3
- package/dist/src/hooks/HistoryConsistentPush.js.map +1 -1
- package/dist/src/hooks/UpdateQueryParameters.js +5 -3
- package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
- package/dist/src/pages/account/AccountRouter.js +13 -7
- package/dist/src/pages/account/AccountRouter.js.map +1 -1
- package/dist/src/pages/account/AccountRoutes.js +1 -1
- package/dist/src/pages/account/AccountRoutes.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +3 -0
- package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
- package/dist/src/pages/account/Reservations/AccountReservationsPage.js +3 -3
- package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservation.d.ts +0 -1
- package/dist/src/pages/findReservation/FindReservation.js +12 -12
- package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +4 -4
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/steps/Step.js.map +1 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +5 -1
- package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +5 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +5 -1
- package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -1
- package/dist/src/pages/steps/StepGuide.js +2 -2
- package/dist/src/pages/steps/StepGuide.js.map +1 -1
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +5 -1
- package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
- package/dist/src/routes/NaturallyProgressedStepRoute.js +6 -11
- package/dist/src/routes/NaturallyProgressedStepRoute.js.map +1 -1
- package/dist/src/util/RouteManager.js +1 -1
- package/dist/src/util/RouteManager.js.map +1 -1
- package/dist/src/util/StepManager.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/dist/vendors.bundle.js.LICENSE.txt +30 -6
- package/package.json +2 -4
|
@@ -3,28 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const react_1 = require("react");
|
|
4
4
|
const react_router_dom_1 = require("react-router-dom");
|
|
5
5
|
function ScrollToTop() {
|
|
6
|
-
const
|
|
7
|
-
const [lastPathname, setLastPathname] = (0, react_1.useState)('');
|
|
6
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
8
7
|
(0, react_1.useEffect)(() => {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return;
|
|
18
|
-
if (!cancelled) {
|
|
19
|
-
setLastPathname(pathName);
|
|
20
|
-
}
|
|
21
|
-
window.scrollTo(0, 0);
|
|
22
|
-
});
|
|
23
|
-
return () => {
|
|
24
|
-
cancelled = true;
|
|
25
|
-
unListen();
|
|
26
|
-
};
|
|
27
|
-
}, [lastPathname]);
|
|
8
|
+
var _a, _b, _c;
|
|
9
|
+
const preventScroll = ((_a = location.state) === null || _a === void 0 ? void 0 : _a.preventScrollTop) === true || // Handle state passed down via Tabs
|
|
10
|
+
((_c = (_b = location.state) === null || _b === void 0 ? void 0 : _b.preventScrollTop) === null || _c === void 0 ? void 0 : _c[location.pathname]); // Handle state passed down via HistoryConsistentPush hook
|
|
11
|
+
if (preventScroll) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
window.scrollTo(0, 0);
|
|
15
|
+
}, [location.pathname]);
|
|
28
16
|
return null;
|
|
29
17
|
}
|
|
30
18
|
exports.default = ScrollToTop;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollToTop.js","sourceRoot":"/","sources":["src/components/generic/ScrollToTop.tsx"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"ScrollToTop.js","sourceRoot":"/","sources":["src/components/generic/ScrollToTop.tsx"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,uDAA+C;AAE/C,SAAS,WAAW;IAChB,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAE/B,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,MAAM,aAAa,GACf,CAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,gBAAgB,MAAK,IAAI,IAAI,oCAAoC;aACjF,MAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,gBAAgB,0CAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,0DAA0D;QAErH,IAAI,aAAa,EAAE;YACf,OAAO;SACV;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,kBAAe,WAAW,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nfunction ScrollToTop(): null {\n const location = useLocation();\n\n useEffect(() => {\n const preventScroll =\n location.state?.preventScrollTop === true || // Handle state passed down via Tabs\n location.state?.preventScrollTop?.[location.pathname]; // Handle state passed down via HistoryConsistentPush hook\n\n if (preventScroll) {\n return;\n }\n\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n}\n\nexport default ScrollToTop;\n"]}
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TabLinkProps {
|
|
3
|
+
index: number;
|
|
4
|
+
title: React.ReactNode;
|
|
5
|
+
navPath: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
preventScrollTop?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const TabLink: React.FC<TabLinkProps>;
|
|
10
|
+
export {};
|
|
@@ -30,27 +30,27 @@ exports.TabLink = void 0;
|
|
|
30
30
|
const classnames_1 = __importDefault(require("classnames"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const react_router_dom_1 = require("react-router-dom");
|
|
33
|
-
const TabContext_1 = __importDefault(require("./TabContext"));
|
|
34
33
|
const Text_1 = __importDefault(require("../Text"));
|
|
35
|
-
const HistoryConsistentPush_1 = require("../../../hooks/HistoryConsistentPush");
|
|
36
34
|
const Color_1 = require("../../../util/Color");
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
const { location } = (0, react_router_dom_1.useHistory)();
|
|
40
|
-
const historyConsistentPush = (0, HistoryConsistentPush_1.useHistoryConsistentPush)();
|
|
41
|
-
const { title, navPath, disabled, index, preventScrollTop } = props;
|
|
35
|
+
const TabContext_1 = __importDefault(require("./TabContext"));
|
|
36
|
+
const TabLink = ({ index, title, navPath, disabled, preventScrollTop }) => {
|
|
42
37
|
if (!title) {
|
|
43
38
|
return null;
|
|
44
39
|
}
|
|
45
|
-
const
|
|
40
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
41
|
+
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
42
|
+
const tabContext = (0, react_1.useContext)(TabContext_1.default);
|
|
43
|
+
const navPathWithQueryParams = {
|
|
44
|
+
pathname: navPath,
|
|
45
|
+
search: location.search,
|
|
46
|
+
};
|
|
46
47
|
return (react_1.default.createElement("li", null,
|
|
47
|
-
react_1.default.createElement(react_router_dom_1.NavLink, { to:
|
|
48
|
-
return !disabled && location.pathname.endsWith(navPath);
|
|
49
|
-
}, activeClassName: "active", className: (0, classnames_1.default)('c-nav-item ', { disabled }), onClick: (e) => {
|
|
48
|
+
react_1.default.createElement(react_router_dom_1.NavLink, { to: navPathWithQueryParams, state: { preventScrollTop }, className: ({ isActive }) => (0, classnames_1.default)('c-nav-item', { active: isActive, disabled }), end: true, onClick: (e) => {
|
|
50
49
|
e.preventDefault();
|
|
51
50
|
if (!disabled) {
|
|
52
|
-
//
|
|
53
|
-
|
|
51
|
+
// Due to this link being contained within a Swiper, sometimes the clicks don't work when the mouse is moving.
|
|
52
|
+
// So we override the default behaviour and use the navigate function instead.
|
|
53
|
+
navigate(navPathWithQueryParams, { state: { preventScrollTop } });
|
|
54
54
|
tabContext.onChange(navPath, index);
|
|
55
55
|
}
|
|
56
56
|
} },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabLink.js","sourceRoot":"/","sources":["src/components/generic/Tabs/TabLink.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA4B;AAC5B,+CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"TabLink.js","sourceRoot":"/","sources":["src/components/generic/Tabs/TabLink.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA4B;AAC5B,+CAA0C;AAC1C,uDAAqE;AAErE,qEAA6C;AAC7C,wCAAqC;AAErC,8DAAsC;AAU/B,MAAM,OAAO,GAA2B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE;IACrG,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,IAAI,CAAC;KACf;IAED,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC,oBAAU,CAAC,CAAC;IAE1C,MAAM,sBAAsB,GAAG;QAC3B,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;KAC1B,CAAC;IAEF,OAAO,CACH;QACI,8BAAC,0BAAO,IACJ,EAAE,EAAE,sBAAsB,EAC1B,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAA,oBAAE,EAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAC7E,GAAG,QACH,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBAEnB,IAAI,CAAC,QAAQ,EAAE;oBACX,8GAA8G;oBAC9G,8EAA8E;oBAC9E,QAAQ,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;oBAClE,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;iBACvC;YACL,CAAC;YAED,wCAAM,SAAS,EAAE,IAAA,oBAAE,EAAC,YAAY,CAAC;gBAC7B,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,UAC5B,KAAK,CACH,CACJ,CACD,CACT,CACR,CAAC;AACN,CAAC,CAAC;AAzCW,QAAA,OAAO,WAyClB","sourcesContent":["import cx from 'classnames';\nimport React, { useContext } from 'react';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\n\nimport Text from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\n\nimport TabContext from './TabContext';\n\ninterface TabLinkProps {\n index: number;\n title: React.ReactNode;\n navPath: string;\n disabled?: boolean;\n preventScrollTop?: boolean;\n}\n\nexport const TabLink: React.FC<TabLinkProps> = ({ index, title, navPath, disabled, preventScrollTop }) => {\n if (!title) {\n return null;\n }\n\n const location = useLocation();\n const navigate = useNavigate();\n\n const tabContext = useContext(TabContext);\n\n const navPathWithQueryParams = {\n pathname: navPath,\n search: location.search,\n };\n\n return (\n <li>\n <NavLink\n to={navPathWithQueryParams}\n state={{ preventScrollTop }}\n className={({ isActive }) => cx('c-nav-item', { active: isActive, disabled })}\n end\n onClick={(e) => {\n e.preventDefault();\n\n if (!disabled) {\n // Due to this link being contained within a Swiper, sometimes the clicks don't work when the mouse is moving.\n // So we override the default behaviour and use the navigate function instead.\n navigate(navPathWithQueryParams, { state: { preventScrollTop } });\n tabContext.onChange(navPath, index);\n }\n }}\n >\n <span className={cx('c-nav-link')}>\n <Text color={Color.DarkGrey} bold>\n {title}\n </Text>\n </span>\n </NavLink>\n </li>\n );\n};\n"]}
|
|
@@ -29,12 +29,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.TabRouteContainer = void 0;
|
|
30
30
|
const web_1 = require("@react-spring/web");
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
-
const
|
|
32
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
33
33
|
const ElementChildren_1 = require("./ElementChildren");
|
|
34
34
|
const TabContext_1 = __importDefault(require("./TabContext"));
|
|
35
35
|
function TabRouteContainer({ children }) {
|
|
36
36
|
const tabContext = (0, react_1.useContext)(TabContext_1.default);
|
|
37
|
-
const
|
|
37
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
38
38
|
const transitions = (0, web_1.useTransition)(tabContext.activeKey, {
|
|
39
39
|
from: { opacity: 0, position: 'absolute' },
|
|
40
40
|
to: { opacity: 1, position: 'relative' },
|
|
@@ -44,13 +44,15 @@ function TabRouteContainer({ children }) {
|
|
|
44
44
|
friction: 25,
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
|
-
const
|
|
47
|
+
const firstTabRoutePath = children[0].props.navPath;
|
|
48
48
|
return (react_1.default.createElement("div", { className: "u-pos-rel" }, transitions((props) => {
|
|
49
49
|
return (react_1.default.createElement(web_1.animated.div, { style: Object.assign({ left: 0, right: 0 }, props) },
|
|
50
|
-
react_1.default.createElement(
|
|
51
|
-
(0, ElementChildren_1.reactMap)(children, (child) => (react_1.default.createElement(
|
|
52
|
-
react_1.default.createElement(
|
|
53
|
-
|
|
50
|
+
react_1.default.createElement(react_router_dom_1.Routes, null,
|
|
51
|
+
(0, ElementChildren_1.reactMap)(children, (child) => (react_1.default.createElement(react_router_dom_1.Route, { path: child.props.navPath, element: child.props.children, key: child.props.navPath }))),
|
|
52
|
+
react_1.default.createElement(react_router_dom_1.Route, { path: "*", element: react_1.default.createElement(react_router_dom_1.Navigate, { to: {
|
|
53
|
+
pathname: firstTabRoutePath,
|
|
54
|
+
search: location.search,
|
|
55
|
+
}, replace: true }) }))));
|
|
54
56
|
})));
|
|
55
57
|
}
|
|
56
58
|
exports.TabRouteContainer = TabRouteContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabRouteContainer.js","sourceRoot":"/","sources":["src/components/generic/Tabs/TabRouteContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,+CAAqD;AACrD
|
|
1
|
+
{"version":3,"file":"TabRouteContainer.js","sourceRoot":"/","sources":["src/components/generic/Tabs/TabRouteContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,+CAAqD;AACrD,uDAAwE;AAExE,+EAAqE;AACrE,sFAA8D;AAM9D,SAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAA0B;IAClE,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC,oBAAU,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAE/B,MAAM,WAAW,GAAG,IAAA,mBAAa,EAAC,UAAU,CAAC,SAAS,EAAE;QACpD,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC1C,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;QACxC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC3C,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC3C,MAAM,EAAE;YACJ,QAAQ,EAAE,EAAE;SACf;KACJ,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAI,QAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAE7D,OAAO,CACH,uCAAK,SAAS,EAAC,WAAW,IACrB,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,OAAO,CACH,8BAAC,cAAQ,CAAC,GAAG,IAAC,KAAK,kBAAI,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAM,KAAa;YACvD,8BAAC,yBAAM;gBACF,IAAA,0BAAQ,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAC3B,8BAAC,wBAAK,IAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAI,CAChG,CAAC;gBAEF,8BAAC,wBAAK,IACF,IAAI,EAAC,GAAG,EACR,OAAO,EACH,8BAAC,2BAAQ,IACL,EAAE,EAAE;4BACA,QAAQ,EAAE,iBAAiB;4BAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;yBAC1B,EACD,OAAO,SACT,GAER,CACG,CACE,CAClB,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC;AA5CD,8CA4CC","sourcesContent":["import { animated, useTransition } from '@react-spring/web';\nimport React, { ReactNode, useContext } from 'react';\nimport { Navigate, Route, Routes, useLocation } from 'react-router-dom';\n\nimport { reactMap } from '@/components/generic/Tabs/ElementChildren';\nimport TabContext from '@/components/generic/Tabs/TabContext';\n\ninterface TabRouteContainerProps {\n children: ReactNode[];\n}\n\nexport function TabRouteContainer({ children }: TabRouteContainerProps) {\n const tabContext = useContext(TabContext);\n const location = useLocation();\n\n const transitions = useTransition(tabContext.activeKey, {\n from: { opacity: 0, position: 'absolute' },\n to: { opacity: 1, position: 'relative' },\n enter: { opacity: 1, position: 'relative' },\n leave: { opacity: 0, position: 'absolute' },\n config: {\n friction: 25,\n },\n });\n\n const firstTabRoutePath = (children as any)[0].props.navPath;\n\n return (\n <div className=\"u-pos-rel\">\n {transitions((props) => {\n return (\n <animated.div style={{ left: 0, right: 0, ...(props as any) }}>\n <Routes>\n {reactMap(children, (child) => (\n <Route path={child.props.navPath} element={child.props.children} key={child.props.navPath} />\n ))}\n {/* Adding a redirect if no route is matched */}\n <Route\n path=\"*\"\n element={\n <Navigate\n to={{\n pathname: firstTabRoutePath,\n search: location.search,\n }}\n replace\n />\n }\n />\n </Routes>\n </animated.div>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -50,6 +50,7 @@ const AuthenticatedUserModal = (props) => {
|
|
|
50
50
|
const windowSize = (0, WindowSize_1.useWindowSize)();
|
|
51
51
|
const isMobile = screenSize < ScreenSize_1.default.Large;
|
|
52
52
|
const shouldBreakpoint = isMobile && (windowSize.height || 0) <= 705;
|
|
53
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
53
54
|
const onLogoutClick = () => {
|
|
54
55
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
55
56
|
onSignedOut === null || onSignedOut === void 0 ? void 0 : onSignedOut();
|
|
@@ -87,9 +88,12 @@ const AuthenticatedUserModal = (props) => {
|
|
|
87
88
|
}) },
|
|
88
89
|
react_1.default.createElement("div", { className: AuthenticatedUserModal_module_scss_1.default['list-items'] },
|
|
89
90
|
items.map((item, index) => {
|
|
90
|
-
return (react_1.default.createElement(react_router_dom_1.NavLink, {
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
return (react_1.default.createElement(react_router_dom_1.NavLink, { to: `${basePath}${item.link}`, className: ({ isActive }) => {
|
|
92
|
+
const isCurrentPath = !!(item === null || item === void 0 ? void 0 : item.link) && location.pathname.toLowerCase().includes(item.link.toLowerCase());
|
|
93
|
+
return (0, classnames_1.default)(AuthenticatedUserModal_module_scss_1.default['list-item'], {
|
|
94
|
+
[AuthenticatedUserModal_module_scss_1.default['--selected']]: isActive || isCurrentPath,
|
|
95
|
+
});
|
|
96
|
+
}, key: index, onClick: () => {
|
|
93
97
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
94
98
|
onCloseMenu === null || onCloseMenu === void 0 ? void 0 : onCloseMenu();
|
|
95
99
|
} },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedUserModal.js","sourceRoot":"/","sources":["src/components/generic/modal/SigninModal/AuthenticatedUserModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA6E;AAE7E,4DAAoC;AACpC,+CAAwD;AACxD,iDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"AuthenticatedUserModal.js","sourceRoot":"/","sources":["src/components/generic/modal/SigninModal/AuthenticatedUserModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, useBookingEngine } from '@frontend/contexts';\nimport { Placement } from '@popperjs/core';\nimport classNames from 'classnames';\nimport React, { ReactElement, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { NavLink, useLocation } from 'react-router-dom';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport Text from '@/components/generic/Text';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\n\nimport styles from './AuthenticatedUserModal.module.scss';\n\nexport type AuthenticatedUserModalProps = {\n open: boolean;\n anchorEl?: HTMLElement | null;\n placement?: Placement;\n fallbackPlacements?: Placement;\n containerEl?: HTMLElement;\n menuItems?: MenuItemType[];\n basePath?: string;\n onClose?: () => void;\n onSignedOut?: () => void;\n onCloseMenu?: () => void;\n};\n\nexport type MenuItemType = {\n icon: IconType;\n text: string;\n link: string;\n};\n\nexport const AuthenticatedUserModal = (props: AuthenticatedUserModalProps): ReactElement | null => {\n const { open, anchorEl, containerEl, menuItems, placement, fallbackPlacements, basePath = '', onSignedOut, onClose, onCloseMenu } = props;\n\n const { logout } = useContext(AuthenticationContext);\n const { t } = useTranslation();\n const { screenSize } = useBookingEngine();\n const windowSize = useWindowSize();\n const isMobile = screenSize < ScreenSize.Large;\n const shouldBreakpoint = isMobile && (windowSize.height || 0) <= 705;\n const location = useLocation();\n\n const onLogoutClick = () => {\n onClose?.();\n onSignedOut?.();\n logout();\n };\n\n const items: MenuItemType[] = menuItems || [\n {\n icon: IconType.Person,\n text: 'Account',\n link: AccountRoutes.Home.path,\n },\n {\n icon: IconType.Bed,\n text: t(Translation.Navigation.Menu.YourReservations),\n link: AccountRoutes.Reservations.path,\n },\n {\n icon: IconType.Edit,\n text: t(Translation.Navigation.Menu.ProfileInformation),\n link: AccountRoutes.ProfileDetails.path,\n },\n {\n icon: IconType.CreditCard,\n text: t(Translation.Navigation.Menu.PaymentInformation),\n link: AccountRoutes.CardDetails.path,\n },\n {\n icon: IconType.Info,\n text: t(Translation.Navigation.Menu.NeedHelp),\n link: AccountRoutes.Help.path,\n },\n ];\n\n return (\n <Overlay\n preventScroll={shouldBreakpoint}\n usePortal\n followElement={shouldBreakpoint ? null : anchorEl}\n placement={placement || 'auto-end'}\n fallbackPlacements={fallbackPlacements}\n container={containerEl}\n open={open}\n onClose={onClose}\n strategy=\"fixed\"\n className={styles['logged-in-overlay']}\n containerClassName={classNames({\n [styles['logged-in-overlay-container--fixed']]: shouldBreakpoint,\n })}\n >\n <div className={styles['list-items']}>\n {items.map((item, index) => {\n return (\n <NavLink\n to={`${basePath}${item.link}`}\n className={({ isActive }) => {\n const isCurrentPath = !!item?.link && location.pathname.toLowerCase().includes(item.link.toLowerCase());\n return classNames(styles['list-item'], {\n [styles['--selected']]: isActive || isCurrentPath,\n });\n }}\n key={index}\n onClick={() => {\n onClose?.();\n onCloseMenu?.();\n }}\n >\n <div className={styles['list-item--icon']}>\n <Icon icon={item.icon} color={Color.Grey} size=\"24px\" />\n </div>\n <Text>{item.text}</Text>\n </NavLink>\n );\n })}\n <LineBreak />\n <div className={styles['list-item']} onClick={onLogoutClick}>\n <div className={styles['list-item--icon']}>\n <Icon icon={IconType.LogOut} color={Color.Alert} size=\"24px\" />\n </div>\n <Text color={Color.Alert}>{t(Translation.Misc.LogOut)}</Text>\n </div>\n </div>\n </Overlay>\n );\n};\n"]}
|
|
@@ -145,10 +145,10 @@ function Header() {
|
|
|
145
145
|
}
|
|
146
146
|
const links = (react_1.default.createElement("ul", { className: "c-header__list" },
|
|
147
147
|
react_1.default.createElement("li", null,
|
|
148
|
-
react_1.default.createElement(react_router_dom_1.NavLink, { to: Object.assign(Object.assign({}, location), { pathname: RouteManager_1.ROUTES.HOTEL_INFO }),
|
|
148
|
+
react_1.default.createElement(react_router_dom_1.NavLink, { to: Object.assign(Object.assign({}, location), { pathname: RouteManager_1.ROUTES.HOTEL_INFO }), className: ({ isActive }) => (isActive ? 'is-active' : ''), onClick: closeMobileMenuClickHandler },
|
|
149
149
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.HotelInfo)))),
|
|
150
150
|
react_1.default.createElement("li", null, (hotel === null || hotel === void 0 ? void 0 : hotel.forwardFindReservationToSynxis) ? (react_1.default.createElement("a", { href: `https://be.synxis.com/signin?hotel=${hotel === null || hotel === void 0 ? void 0 : hotel.hotelID}`, target: "_blank", rel: "noreferrer" },
|
|
151
|
-
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.FindReservation)))) : (react_1.default.createElement(react_router_dom_1.NavLink, { to: "/find-reservation",
|
|
151
|
+
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.FindReservation)))) : (react_1.default.createElement(react_router_dom_1.NavLink, { to: "/find-reservation", className: ({ isActive }) => (isActive ? 'is-active' : ''), onClick: closeMobileMenuClickHandler },
|
|
152
152
|
react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White, bold: true }, t(Translation_1.Translation.Navigation.FindReservation))))),
|
|
153
153
|
react_1.default.createElement("li", { className: "phone" },
|
|
154
154
|
react_1.default.createElement("a", { href: `tel:${hotel === null || hotel === void 0 ? void 0 : hotel.phone}`, onClick: closeMobileMenuClickHandler },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, NavLink, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport FadeAnimation from '@/animations/Fade';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport { ROUTES } from '@/util/RouteManager';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember, isFetchingMember } = useContext(RoomstayMemberContext);\n\n const [loginAnchorEl, setLoginAnchorEl] = React.useState<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n if (location.pathname.startsWith('/account')) {\n setLoginModalOpen(true);\n }\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n useEffect(() => {\n if (mobileMenuOpen) {\n document.body.style.setProperty('overflow', 'hidden');\n }\n return () => {\n document.body.style.removeProperty('overflow');\n };\n }, [mobileMenuOpen]);\n\n let hotelImageElement = hotelLogo ? <img src={hotelLogo} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={hotelImageElement} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink\n to={{\n ...location,\n pathname: ROUTES.HOTEL_INFO,\n }}\n activeClassName=\"is-active\"\n onClick={closeMobileMenuClickHandler}\n >\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.HotelInfo)}\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" activeClassName=\"is-active\" onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White} bold>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <span className=\"u-marg-left--light\">{hotel?.phone}</span>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={currencyHelper.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={(el) => setLoginAnchorEl(el)}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton\n size=\"small\"\n isText\n onClick={() => {\n onLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n stopIconAnimation\n >\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={<SmallSpinner />}>\n {roomstayMember || isFetchingMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} onCloseMenu={closeMobileMenuClickHandler} anchorEl={loginAnchorEl} />\n ) : (\n <UnauthenticatedUserModal\n open={loginModalOpen}\n onClose={() => {\n closeLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n onOpenOnMobile={() => {\n onLoginClickHandler();\n openMobileMenuClickHandler();\n }}\n anchorEl={loginAnchorEl}\n />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"/","sources":["src/components/navigation/Header.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkG;AAClG,2CAAkD;AAClD,+CAAyE;AACzE,iDAA+C;AAC/C,uDAA8D;AAC9D,0DAAuD;AAEvD,6DAA8C;AAC9C,6EAAqD;AACrD,uEAAgE;AAChE,4FAAoE;AACpE,+DAAoE;AACpE,+DAAkF;AAClF,kEAA0E;AAC1E,kFAA0D;AAC1D,kGAA0E;AAC1E,mEAA0E;AAC1E,0FAAkE;AAClE,wCAAqC;AACrC,sEAAwD;AACxD,iEAAyC;AACzC,sDAA6C;AAE7C,MAAM,wBAAwB,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7C,kDAAO,iEAAiE,IAAE,IAAI,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9G,OAAO,EAAE,wBAAwB;CACpC,CAAC,CAAC,CACN,CAAC;AACF,MAAM,sBAAsB,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3C,kDAAO,+DAA+D,IAAE,IAAI,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1G,OAAO,EAAE,sBAAsB;CAClC,CAAC,CAAC,CACN,CAAC;AAOF,SAAwB,MAAM;IAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE1D,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IAE/E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAuB,IAAI,CAAC,CAAC;IAErF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,mCAAgB,CAAC,YAAY,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAe,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAe,CAAC;IAE3E,MAAM,uBAAuB,GAAG,CAAC,QAAkB,EAAE,EAAE;QACnD,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACjC,mCAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAE,EAAE;QACjD,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACjC,mBAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACrC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACpC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAuB,CAAC;QAE5B,IAAI,qBAAqB,EAAE;YACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1C,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC3B;SACJ;aAAM;YACH,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;SACX;QAED,OAAO,GAAG,EAAE;YACR,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;gBAChB,IAAI,CAAC,SAAS,EAAE;oBACZ,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB;YACL,CAAC,CAAC;YAEF,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC;QAEF,0BAA0B;QAC1B,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,mBAAS,CAAC,EAAE;YACvC,IAAI,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,EAAE;gBACjC,SAAS,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAC;aAC1B;SACJ;aAAM;YACH,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACvB;QAED,gEAAgE;QAChE,iBAAiB,CAAC,WAAW,KAAK,mBAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAExD,OAAO,GAAG,EAAE;YACR,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,cAAc,EAAE;YAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SACzD;QACD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAI,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,uCAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC;IAE/G,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC7E,iBAAiB,GAAG,uCAAK,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAC,YAAY,GAAG,CAAC;KACxE;IAED,MAAM,KAAK,GAAG,CACV,sCAAI,SAAS,EAAC,gBAAgB;QAC1B;YACI,8BAAC,0BAAO,IACJ,EAAE,kCACK,QAAQ,KACX,QAAQ,EAAE,qBAAM,CAAC,UAAU,KAE/B,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1D,OAAO,EAAE,2BAA2B;gBAEpC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CACjC,CACD,CACT;QACL,0CACK,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,8BAA8B,EAAC,CAAC,CAAC,CACrC,qCAAG,IAAI,EAAE,sCAAsC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY;YAC7F,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CACvC,CACP,CACP,CAAC,CAAC,CAAC,CACA,8BAAC,0BAAO,IAAC,EAAE,EAAC,mBAAmB,EAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B;YAC5H,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI,UAC/C,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CACvC,CACD,CACb,CACA;QACL,sCAAI,SAAS,EAAC,OAAO;YACjB,qCAAG,IAAI,EAAE,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,EAAE,OAAO,EAAE,2BAA2B;gBAChE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,oBAAa,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,IAAI;oBACvF,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,GAAI;oBAC9D,wCAAM,SAAS,EAAC,oBAAoB,IAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAQ,CACvD,CACP,CACH,CACJ,CACR,CAAC;IAEF,MAAM,OAAO,GAAG,CACZ;QACI,sCAAI,SAAS,EAAC,gBAAgB;YACzB,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB;gBACI,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAc,EAAE,EAAE;wBACrC,OAAO;4BACH,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,mCAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC;yBACrD,CAAC;oBACN,CAAC,CAAC,EACF,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACD,CACR;YACD;gBACI,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAC1C,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACD;YAEJ,6BAAmB,CAAC,QAAQ,EAAE,IAAI,CAC/B,sCAAI,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAChC,cAAc,CAAC,CAAC,CAAC,CACd,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,QAAC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB;gBACxE,cAAc,CAAC,QAAQ;;gBAAG,cAAc,CAAC,OAAO;gBACjD,wCAAM,SAAS,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;oBACnE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE,CACA,CACd,CAAC,CAAC,CAAC,CACA,8BAAC,kBAAQ,IACL,IAAI,EAAC,OAAO,EACZ,MAAM,QACN,OAAO,EAAE,GAAG,EAAE;oBACV,mBAAmB,EAAE,CAAC;oBACtB,2BAA2B,EAAE,CAAC;gBAClC,CAAC,EACD,iBAAiB;gBAEhB,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxC,wCAAM,SAAS,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;oBACnE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACpE,CACA,CACd,CACA,CACR,CACA,CACN,CACN,CAAC;IAEF,OAAO,CACH;QACI,uCAAK,SAAS,EAAC,uBAAuB;YAClC,uCAAK,SAAS,EAAC,WAAW;gBACtB,uCAAK,SAAS,EAAC,QAAQ;oBACnB,uCAAK,SAAS,EAAC,uCAAuC;wBAClD,uCAAK,SAAS,EAAC,gBAAgB;4BAC3B,qCAAG,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,IAC1F,iBAAiB,CAClB,CACF;wBACL,CAAC,CAAC,cAAc,IAAI,KAAK,CACxB;oBACN,uCAAK,SAAS,EAAC,eAAe;wBACzB,OAAO;wBACR,uCAAK,SAAS,EAAC,uBAAuB;4BAClC,wCAAM,SAAS,EAAC,oBAAoB;gCAChC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,OAAO,EAAE,0BAA0B,GAAI,CAC/F,CACL,CACJ,CACJ,CACJ,CACJ;QACL,cAAc,IAAI,CACf,8BAAC,uBAAc,IAAC,MAAM,EAAE,6BAAmB,CAAC,eAAe;YACvD,8BAAC,cAAa,IAAC,IAAI,EAAE,qBAAqB;gBACtC,uCAAK,SAAS,EAAE,sBAAsB,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC5E,uCAAK,SAAS,EAAC,oCAAoC;wBAC/C,uCAAK,SAAS,EAAC,gBAAgB;4BAC3B,8BAAC,uBAAI,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,EAAE,2BAA2B,IAC5C,iBAAiB,CACf,CACL;wBACN,uCAAK,SAAS,EAAC,uBAAuB;4BAClC,wCAAM,SAAS,EAAC,oBAAoB;gCAChC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,OAAO,EAAE,2BAA2B,GAAI,CACjG,CACL,CACJ;oBACN,uCAAK,SAAS,EAAC,6BAA6B;wBACvC,CAAC,CAAC,KAAK,IAAI,KAAK;wBAEhB,OAAO,CACN,CACJ,CACM,CACH,CACpB;QACA,6BAAmB,CAAC,QAAQ,EAAE,IAAI,CAC/B,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,8BAAC,sBAAY,OAAG,IAC/B,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAClC,8BAAC,sBAAsB,IAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,aAAa,GAAI,CACvJ,CAAC,CAAC,CAAC,CACA,8BAAC,wBAAwB,IACrB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,GAAG,EAAE;gBACV,sBAAsB,EAAE,CAAC;gBACzB,2BAA2B,EAAE,CAAC;YAClC,CAAC,EACD,cAAc,EAAE,GAAG,EAAE;gBACjB,mBAAmB,EAAE,CAAC;gBACtB,0BAA0B,EAAE,CAAC;YACjC,CAAC,EACD,QAAQ,EAAE,aAAa,GACzB,CACL,CACM,CACd,CACF,CACN,CAAC;AACN,CAAC;AA7RD,yBA6RC","sourcesContent":["import { CompanyContext, FullPageEngineContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, NavLink, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport FadeAnimation from '@/animations/Fade';\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { RoomstayPortal } from '@/components/generic/Portal/Portal';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextTransform, TextType } from '@/components/generic/Text';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport MemberPortalFeature from '@/providers/feature/MemberPortalFeature';\nimport { Language, LanguageProvider } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport { ROUTES } from '@/util/RouteManager';\n\nconst UnauthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/UnauthenticatedUserModal').then(({ UnauthenticatedUserModal }) => ({\n default: UnauthenticatedUserModal,\n }))\n);\nconst AuthenticatedUserModal = React.lazy(() =>\n import('@/components/generic/modal/SigninModal/AuthenticatedUserModal').then(({ AuthenticatedUserModal }) => ({\n default: AuthenticatedUserModal,\n }))\n);\n\ninterface ILanguageSelectOption {\n value: Language;\n text: string;\n}\n\nexport default function Header() {\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n const ccx = useContext(CompanyContext);\n const { currentStep } = useContext(FullPageEngineContext);\n\n const { roomstayMember, isFetchingMember } = useContext(RoomstayMemberContext);\n\n const [loginAnchorEl, setLoginAnchorEl] = React.useState<HTMLLIElement | null>(null);\n\n const [hotelLogo, setHotelLogo] = useState('');\n const [showHotelLinks, setShowHotelLinks] = useState(true);\n\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const [mobileMenuFaderStatus, setMobileMenuFaderStatus] = useState(false);\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n\n const { t } = useTranslation();\n\n const availableLanguages = LanguageProvider.getLanguages();\n\n const langKeys: Language[] = Object.keys(availableLanguages) as Language[];\n\n const onLanguageChangeHandler = (selected: Language) => {\n ccx.setCurrentLanguage(selected);\n LanguageProvider.changeLanguage(selected);\n };\n\n const onCurrencyChangeHandler = (selected: string) => {\n ccx.setCurrentCurrency(selected);\n DataLayer.instance.setCurrencyCodes(selected);\n };\n\n const closeMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(false);\n };\n const openMobileMenuClickHandler = () => {\n setMobileMenuFaderStatus(true);\n };\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n\n if (mobileMenuFaderStatus) {\n setMobileMenuOpen(true);\n if (location.pathname.startsWith('/account')) {\n setLoginModalOpen(true);\n }\n } else {\n timeout = setTimeout(() => {\n setMobileMenuOpen(false);\n }, 500);\n }\n\n return () => {\n clearTimeout(timeout);\n };\n }, [mobileMenuFaderStatus]);\n\n useEffect(() => {\n let cancelled = false;\n\n const loadImage = (src: string) => {\n const image = new Image();\n image.onload = () => {\n if (!cancelled) {\n setHotelLogo(src);\n }\n };\n\n image.src = src;\n };\n\n // Check the Logo per step\n if (hotel && !(currentStep === StepHotel)) {\n if (typeof hotel?.logo === 'string') {\n loadImage(hotel?.logo);\n }\n } else {\n loadImage(ccx.logo);\n }\n\n // Check wether we should display the hotel related links or not\n setShowHotelLinks(currentStep !== StepHotel && !!hotel);\n\n return () => {\n cancelled = true;\n };\n }, [hotel, hotel?.logo, ccx.logo, currentStep]);\n\n useEffect(() => {\n if (mobileMenuOpen) {\n document.body.style.setProperty('overflow', 'hidden');\n }\n return () => {\n document.body.style.removeProperty('overflow');\n };\n }, [mobileMenuOpen]);\n\n let hotelImageElement = hotelLogo ? <img src={hotelLogo} alt=\"Hotel Logo\" className=\"u-block\" /> : hotel?.logo;\n\n if (typeof hotelImageElement === 'string' && !hotelImageElement.startsWith('<')) {\n hotelImageElement = <img src={hotelImageElement} alt=\"Hotel Logo\" />;\n }\n\n const links = (\n <ul className=\"c-header__list\">\n <li>\n <NavLink\n to={{\n ...location,\n pathname: ROUTES.HOTEL_INFO,\n }}\n className={({ isActive }) => (isActive ? 'is-active' : '')}\n onClick={closeMobileMenuClickHandler}\n >\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.HotelInfo)}\n </Text>\n </NavLink>\n </li>\n <li>\n {hotel?.forwardFindReservationToSynxis ? (\n <a href={`https://be.synxis.com/signin?hotel=${hotel?.hotelID}`} target=\"_blank\" rel=\"noreferrer\">\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </a>\n ) : (\n <NavLink to=\"/find-reservation\" className={({ isActive }) => (isActive ? 'is-active' : '')} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} color={Color.White} bold>\n {t(Translation.Navigation.FindReservation)}\n </Text>\n </NavLink>\n )}\n </li>\n <li className=\"phone\">\n <a href={`tel:${hotel?.phone}`} onClick={closeMobileMenuClickHandler}>\n <Text type={TextType.Small} transforms={[TextTransform.Uppercase]} color={Color.White} bold>\n <Icon icon={IconType.Phone} size=\"16px\" color={Color.White} />\n <span className=\"u-marg-left--light\">{hotel?.phone}</span>\n </Text>\n </a>\n </li>\n </ul>\n );\n\n const configs = (\n <>\n <ul className=\"c-header__list\">\n {langKeys.length > 1 && (\n <li>\n <Select<ILanguageSelectOption, 'value'>\n nativeOnMobile\n options={langKeys.map((lang: Language) => {\n return {\n value: lang,\n text: LanguageProvider.getPrettyLanguageName(lang),\n };\n })}\n value={ccx.currentLanguage}\n onChange={onLanguageChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n )}\n <li>\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={currencyHelper.getCurrencyItems()}\n value={ccx.currentCurrency}\n onChange={onCurrencyChangeHandler}\n keyName=\"value\"\n labelName=\"text\"\n />\n </li>\n\n {MemberPortalFeature.isActive() && (\n <li ref={(el) => setLoginAnchorEl(el)}>\n {roomstayMember ? (\n <BEButton size=\"small\" isText onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton\n size=\"small\"\n isText\n onClick={() => {\n onLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n stopIconAnimation\n >\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </li>\n )}\n </ul>\n </>\n );\n\n return (\n <>\n <div className=\"c-header u-print-none\">\n <div className=\"container\">\n <div className=\"u-flex\">\n <div className=\"u-flex u-flex-flex-start u-flex__item\">\n <div className=\"c-header__logo\">\n <a href={showHotelLinks ? hotel?.hotelUrl : ccx?.logoLink} onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </a>\n </div>\n {!!showHotelLinks && links}\n </div>\n <div className=\"u-flex mx-100\">\n {configs}\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Menu} size=\"26px\" color={Color.White} onClick={openMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {mobileMenuOpen && (\n <RoomstayPortal target={RoomstayThemeEngine.EngineContainer}>\n <FadeAnimation open={mobileMenuFaderStatus}>\n <div className={`mobile-header-menu ${mobileMenuFaderStatus ? '' : '--closing'}`}>\n <div className=\"mobile-header-menu--replica u-flex\">\n <div className=\"c-header__logo\">\n <Link to=\"/\" onClick={closeMobileMenuClickHandler}>\n {hotelImageElement}\n </Link>\n </div>\n <div className=\"c-header__mobile-menu\">\n <span className=\"u-white u-pad-left\">\n <Icon icon={IconType.Close} size=\"26px\" color={Color.White} onClick={closeMobileMenuClickHandler} />\n </span>\n </div>\n </div>\n <div className=\"mobile-header-menu--content\">\n {!!hotel && links}\n\n {configs}\n </div>\n </div>\n </FadeAnimation>\n </RoomstayPortal>\n )}\n {MemberPortalFeature.isActive() && (\n <Suspense fallback={<SmallSpinner />}>\n {roomstayMember || isFetchingMember ? (\n <AuthenticatedUserModal open={loginModalOpen} onClose={closeLoginClickHandler} onCloseMenu={closeMobileMenuClickHandler} anchorEl={loginAnchorEl} />\n ) : (\n <UnauthenticatedUserModal\n open={loginModalOpen}\n onClose={() => {\n closeLoginClickHandler();\n closeMobileMenuClickHandler();\n }}\n onOpenOnMobile={() => {\n onLoginClickHandler();\n openMobileMenuClickHandler();\n }}\n anchorEl={loginAnchorEl}\n />\n )}\n </Suspense>\n )}\n </>\n );\n}\n"]}
|
|
@@ -45,7 +45,7 @@ function StepSelector() {
|
|
|
45
45
|
const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
|
|
46
46
|
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
47
47
|
const location = (0, react_router_dom_1.useLocation)();
|
|
48
|
-
const
|
|
48
|
+
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
49
49
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
50
50
|
const [modalOpen, setModalOpen] = (0, react_1.useState)(false);
|
|
51
51
|
const steps = StepManager_1.default.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));
|
|
@@ -98,7 +98,7 @@ function StepSelector() {
|
|
|
98
98
|
react_1.default.createElement("strong", null, stepName))),
|
|
99
99
|
react_1.default.createElement(LinkWithNextStepConfirmationDialog, { onClick: () => {
|
|
100
100
|
const newLocation = Object.assign(Object.assign({}, location), { pathname: step.getStepUrl() });
|
|
101
|
-
|
|
101
|
+
navigate(newLocation);
|
|
102
102
|
} })));
|
|
103
103
|
})))),
|
|
104
104
|
screenSize <= ScreenSize_1.default.Medium && react_1.default.createElement(StepSelectorModal_1.default, { isOpen: modalOpen, onClose: closeModal })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepSelector.js","sourceRoot":"/","sources":["src/components/navigation/StepSelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAgG;AAChG,4DAAoC;AACpC,+CAAoD;AACpD,iDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"StepSelector.js","sourceRoot":"/","sources":["src/components/navigation/StepSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext, FullPageEngineContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StepSelectorModal from '@/components/navigation/StepSelectorModal';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport Step from '@/pages/steps/Step';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\nimport StepManager from '@/util/StepManager';\n\nconst LinkWithNextStepConfirmationDialog = withNextStepConfirmationDialog((props: any) => <a {...props} style={{ cursor: 'pointer' }}></a>);\n\nexport default function StepSelector() {\n const { screenSize } = useContext(BookingEngineContext);\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const location = useLocation();\n const navigate = useNavigate();\n\n const { t } = useTranslation();\n\n const [modalOpen, setModalOpen] = useState(false);\n\n const steps = StepManager.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));\n\n const onDropdownClick = () => {\n screenSize <= ScreenSize.Medium ? setModalOpen(true) : null;\n };\n\n const closeModal = () => {\n setModalOpen(false);\n };\n\n const currentStepIndex = StepManager.getStepIndex(currentStep.getName());\n\n return (\n <>\n <div className=\"step-dropdown\" onClick={onDropdownClick}>\n <div className=\"step-container\">\n <span className=\"step-container-dropdown\">\n <Icon icon={IconType.Dropdown} />\n </span>\n <div className=\"step-awards\">\n <img alt=\"\" style={{ width: '80px' }} />\n </div>\n <ul className=\"step-selector\">\n {steps.map((step: Step, stepIndex: number) => {\n const stepName = t(step.getStepTranslation() as string);\n\n const prettyStep = stepIndex + 1;\n\n const isPrevStep = currentStepIndex > prettyStep;\n\n let stepNumber: JSX.Element;\n if (isPrevStep) {\n stepNumber = <Icon icon={IconType.Check} color={Color.White} size=\"24px\" />;\n } else {\n stepNumber = (\n <Text type={TextType.Small}>\n <strong>{'0' + prettyStep}</strong>\n </Text>\n );\n }\n\n let isClickable = false;\n\n if (step) {\n const stepValidator = step.getValidator();\n\n if (stepValidator && stepValidator.isValid(basketContext)) {\n isClickable = true;\n }\n }\n\n const stepClassNames = classNames('step-selector__item', {\n 'is-current': currentStepIndex === prettyStep,\n 'is-valid': isClickable,\n 'is-complete': isPrevStep,\n 'is-disabled': !isPrevStep && currentStepIndex !== prettyStep && !isClickable,\n });\n\n return (\n <li className={stepClassNames} key={prettyStep}>\n <span className=\"step-selector__count\">{stepNumber}</span>\n <div>\n <span className=\"step-selector__step-count-mobile\">\n <Text type={TextType.Small} color={Color.Navy}>\n <strong>{t(Translation.Navigation.Steps.StepProgress, { step: prettyStep, maxSteps: StepManager.getSteps().length })}</strong>\n </Text>\n </span>\n <Text>\n <strong>{stepName}</strong>\n </Text>\n </div>\n <LinkWithNextStepConfirmationDialog\n onClick={() => {\n const newLocation = { ...location, pathname: step.getStepUrl() };\n navigate(newLocation);\n }}\n />\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n {screenSize <= ScreenSize.Medium && <StepSelectorModal isOpen={modalOpen} onClose={closeModal} />}\n </>\n );\n}\n"]}
|
|
@@ -40,6 +40,7 @@ const StepManager_1 = __importDefault(require("../../util/StepManager"));
|
|
|
40
40
|
function StepSelectorModal(props) {
|
|
41
41
|
const { currentStep } = (0, react_1.useContext)(contexts_1.FullPageEngineContext);
|
|
42
42
|
const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
43
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
43
44
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
44
45
|
const steps = StepManager_1.default.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));
|
|
45
46
|
const onModalClose = () => {
|
|
@@ -81,7 +82,10 @@ function StepSelectorModal(props) {
|
|
|
81
82
|
react_1.default.createElement("div", null,
|
|
82
83
|
react_1.default.createElement(Text_1.default, null,
|
|
83
84
|
react_1.default.createElement("strong", null, stepName))),
|
|
84
|
-
react_1.default.createElement(react_router_dom_1.Link, { to:
|
|
85
|
+
react_1.default.createElement(react_router_dom_1.Link, { to: {
|
|
86
|
+
pathname: step.getStepUrl(),
|
|
87
|
+
search: location.search,
|
|
88
|
+
} })));
|
|
85
89
|
}))));
|
|
86
90
|
}
|
|
87
91
|
exports.default = StepSelectorModal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepSelectorModal.js","sourceRoot":"/","sources":["src/components/navigation/StepSelectorModal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0E;AAC1E,4DAAoC;AACpC,+CAA0C;AAC1C,iDAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"StepSelectorModal.js","sourceRoot":"/","sources":["src/components/navigation/StepSelectorModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, FullPageEngineContext } from '@frontend/contexts';\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useLocation } from 'react-router-dom';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SimpleModal from '@/components/generic/modal/SimpleModal';\nimport Text from '@/components/generic/Text';\nimport Step from '@/pages/steps/Step';\nimport { Color } from '@/util/Color';\nimport StepManager from '@/util/StepManager';\n\nexport interface StepSelectorModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n}\n\nexport default function StepSelectorModal(props: StepSelectorModalProps) {\n const { currentStep } = useContext(FullPageEngineContext);\n const basketContext = useContext(BasketContext);\n const location = useLocation();\n\n const { t } = useTranslation();\n\n const steps = StepManager.getSteps().filter((step) => (step.shouldShowOnNavigation() ? step : null));\n\n const onModalClose = () => {\n return props.onClose ? props.onClose() : null;\n };\n\n const currentStepIndex = StepManager.getStepIndex(currentStep.getName());\n\n return (\n <SimpleModal open={props.isOpen} title={t(Translation.Navigation.SelectStep)} onClose={onModalClose}>\n <ul className=\"step-selector --horizontal\">\n {steps.map((step: Step, stepIndex: number) => {\n const stepName = t(step.getStepTranslation() as string);\n\n const prettyStep = stepIndex + 1;\n\n const isPrevStep = currentStepIndex > prettyStep;\n\n let stepNumber: JSX.Element;\n if (isPrevStep) {\n stepNumber = <Icon icon={IconType.Check} color={Color.White} size=\"24px\" />;\n } else {\n stepNumber = (\n <Text>\n <strong>{'0' + prettyStep}</strong>\n </Text>\n );\n }\n\n let isClickable = false;\n\n if (step) {\n const stepValidator = step.getValidator();\n\n if (stepValidator && stepValidator.isValid(basketContext)) {\n isClickable = true;\n }\n }\n\n const stepClassNames = classNames('step-selector__item', {\n 'is-current': currentStepIndex === prettyStep,\n 'is-valid': isClickable,\n 'is-complete': isPrevStep,\n 'is-disabled': !isPrevStep && currentStepIndex !== prettyStep && !isClickable,\n });\n\n const closeOnClick = () => {\n props.onClose?.();\n };\n return (\n <li className={stepClassNames} key={stepIndex} onClick={closeOnClick}>\n <span className=\"step-selector__count\">{stepNumber}</span>\n <div>\n <Text>\n <strong>{stepName}</strong>\n </Text>\n </div>\n <Link\n to={{\n pathname: step.getStepUrl(),\n search: location.search,\n }}\n />\n </li>\n );\n })}\n </ul>\n </SimpleModal>\n );\n}\n"]}
|
|
@@ -63,7 +63,7 @@ const HotelCard = ({ hotel }) => {
|
|
|
63
63
|
const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
|
|
64
64
|
const { hotel: currentHotel } = (0, hooks_1.useCurrentHotel)();
|
|
65
65
|
const basketContext = (0, contexts_1.useBasket)();
|
|
66
|
-
const
|
|
66
|
+
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
67
67
|
const [images, setImages] = (0, react_1.useState)([hotel.heroImage]);
|
|
68
68
|
const [modalOpen, setModalOpen] = (0, react_1.useState)(false);
|
|
69
69
|
const hotelCardRef = (0, react_1.useRef)(null);
|
|
@@ -104,7 +104,7 @@ const HotelCard = ({ hotel }) => {
|
|
|
104
104
|
basketContext.initBasketRows([row]);
|
|
105
105
|
}
|
|
106
106
|
ccx.changeHotel(hotel);
|
|
107
|
-
|
|
107
|
+
navigate((0, GetStepRoom_1.default)().getStepUrl());
|
|
108
108
|
});
|
|
109
109
|
const onMoreDetailsClicked = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
110
|
setModalOpen(true);
|