@hitachivantara/app-shell-ui 1.5.0 → 1.6.1
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/esm/components/AppShell/AppShell.js +8 -6
- package/dist/esm/components/AppShellProvider/AppShellProvider.js +80 -56
- package/dist/esm/components/AppShellRoutes/AppShellRoutes.js +74 -65
- package/dist/esm/components/AppShellViewProvider/AppShellViewProvider.js +13 -13
- package/dist/esm/components/CustomHooksInitializer/CustomHooksInitializer.js +9 -5
- package/dist/esm/components/GlobalStyles/GlobalStyles.js +8 -8
- package/dist/esm/components/GlobalStyles/index.js +2 -3
- package/dist/esm/components/IconUiKit/IconUiKit.js +10 -8
- package/dist/esm/components/IconUiKit/index.js +4 -5
- package/dist/esm/components/hoc/withClickAwayListener.js +19 -12
- package/dist/esm/components/hoc/withGlobalProvider.js +30 -25
- package/dist/esm/components/layout/Header/BrandLogo/BrandLogo.js +27 -16
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Hitachi.js +12 -0
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Lumada.js +17 -0
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Pentaho.js +12 -0
- package/dist/esm/components/layout/Header/Header.js +54 -42
- package/dist/esm/components/layout/Header/HeaderActions/DynamicAction/DynamicAction.js +22 -18
- package/dist/esm/components/layout/Header/HeaderActions/DynamicAction/index.js +2 -3
- package/dist/esm/components/layout/Header/HeaderActions/HeaderActions.js +17 -14
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/AppSwitcherToggle.js +59 -40
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/index.js +2 -3
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/styles.js +6 -6
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/ColorModeSwitcher/ColorModeSwitcher.js +19 -17
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/ColorModeSwitcher/index.js +2 -3
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/HelpButton/HelpButton.js +23 -20
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/HelpButton/index.js +2 -3
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/InternalAction/InternalAction.js +23 -21
- package/dist/esm/components/layout/Header/HeaderActions/index.js +2 -3
- package/dist/esm/components/layout/Header/styles.js +7 -7
- package/dist/esm/components/layout/Loading/Loading.js +9 -7
- package/dist/esm/components/layout/Loading/styles.js +20 -8
- package/dist/esm/components/layout/Main/Main.js +23 -22
- package/dist/esm/components/layout/Main/styles.js +17 -8
- package/dist/esm/components/layout/VerticalNavigation/VerticalNavigation.js +67 -49
- package/dist/esm/components/layout/VerticalNavigation/styles.js +15 -16
- package/dist/esm/index.js +2 -3
- package/dist/esm/lib/hooks/useClearLocationState.js +14 -14
- package/dist/esm/lib/hooks/useCustomEventListener.js +19 -14
- package/dist/esm/lib/hooks/useLocalStorage.js +22 -16
- package/dist/esm/lib/hooks/useNavigationMenuItems.js +36 -28
- package/dist/esm/lib/hooks/useNotificationsEventListener.js +47 -37
- package/dist/esm/lib/hooks/useThemeEventListener.js +25 -20
- package/dist/esm/lib/i18n/index.js +23 -19
- package/dist/esm/lib/i18n/localization/en.json.js +18 -15
- package/dist/esm/lib/i18n/localization/pt.json.js +18 -15
- package/dist/esm/lib/utils/CombinedProviders.js +19 -14
- package/dist/esm/lib/utils/basePathUtils.js +4 -3
- package/dist/esm/lib/utils/documentUtil.js +10 -6
- package/dist/esm/lib/utils/navigationUtil.js +65 -38
- package/dist/esm/lib/utils/textUtil.js +4 -3
- package/dist/esm/pages/ErrorPage/ErrorPage.js +24 -24
- package/dist/esm/pages/ErrorPage/Footer/Footer.js +47 -31
- package/dist/esm/pages/ErrorPage/Footer/styles.js +8 -8
- package/dist/esm/pages/ErrorPage/styles.js +25 -15
- package/dist/esm/pages/GenericError/500.svg.js +2 -3
- package/dist/esm/pages/GenericError/GenericError.js +13 -13
- package/dist/esm/pages/LoadingPage/LoadingPage.js +12 -12
- package/dist/esm/pages/LoadingPage/index.js +2 -3
- package/dist/esm/pages/LoadingPage/styles.js +15 -9
- package/dist/esm/pages/NotFound/404.svg.js +2 -3
- package/dist/esm/pages/NotFound/NotFound.js +11 -11
- package/dist/esm/pages/NotFound/index.js +2 -3
- package/dist/esm/pages/Root/Root.js +22 -22
- package/dist/esm/providers/BannerProvider.js +67 -57
- package/dist/esm/providers/LayoutProvider.js +19 -16
- package/dist/esm/providers/NavigationProvider.js +87 -55
- package/dist/esm/providers/hooks/useBannerContext.js +9 -7
- package/dist/esm/providers/hooks/useLayoutContext.js +9 -7
- package/dist/esm/providers/hooks/useNavigationContext.js +9 -7
- package/package.json +5 -5
- package/dist/esm/components/AppShell/AppShell.js.map +0 -1
- package/dist/esm/components/AppShellProvider/AppShellProvider.js.map +0 -1
- package/dist/esm/components/AppShellRoutes/AppShellRoutes.js.map +0 -1
- package/dist/esm/components/AppShellViewProvider/AppShellViewProvider.js.map +0 -1
- package/dist/esm/components/CustomHooksInitializer/CustomHooksInitializer.js.map +0 -1
- package/dist/esm/components/GlobalStyles/GlobalStyles.js.map +0 -1
- package/dist/esm/components/GlobalStyles/index.js.map +0 -1
- package/dist/esm/components/IconUiKit/IconUiKit.js.map +0 -1
- package/dist/esm/components/IconUiKit/index.js.map +0 -1
- package/dist/esm/components/hoc/withClickAwayListener.js.map +0 -1
- package/dist/esm/components/hoc/withGlobalProvider.js.map +0 -1
- package/dist/esm/components/layout/Header/BrandLogo/BrandLogo.js.map +0 -1
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Hitachi/Hitachi.js +0 -10
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Hitachi/Hitachi.js.map +0 -1
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Hitachi/styles.js +0 -28
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Hitachi/styles.js.map +0 -1
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Lumada/Lumada.js +0 -15
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Lumada/Lumada.js.map +0 -1
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Lumada/styles.js +0 -34
- package/dist/esm/components/layout/Header/BrandLogo/Logos/Lumada/styles.js.map +0 -1
- package/dist/esm/components/layout/Header/Header.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/DynamicAction/DynamicAction.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/DynamicAction/index.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/HeaderActions.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/AppSwitcherToggle.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/index.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/AppSwitcherToggle/styles.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/ColorModeSwitcher/ColorModeSwitcher.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/ColorModeSwitcher/index.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/HelpButton/HelpButton.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/HelpButton/index.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/InternalActions/InternalAction/InternalAction.js.map +0 -1
- package/dist/esm/components/layout/Header/HeaderActions/index.js.map +0 -1
- package/dist/esm/components/layout/Header/styles.js.map +0 -1
- package/dist/esm/components/layout/Loading/Loading.js.map +0 -1
- package/dist/esm/components/layout/Loading/styles.js.map +0 -1
- package/dist/esm/components/layout/Main/Main.js.map +0 -1
- package/dist/esm/components/layout/Main/styles.js.map +0 -1
- package/dist/esm/components/layout/VerticalNavigation/VerticalNavigation.js.map +0 -1
- package/dist/esm/components/layout/VerticalNavigation/styles.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/hooks/useClearLocationState.js.map +0 -1
- package/dist/esm/lib/hooks/useCustomEventListener.js.map +0 -1
- package/dist/esm/lib/hooks/useLocalStorage.js.map +0 -1
- package/dist/esm/lib/hooks/useNavigationMenuItems.js.map +0 -1
- package/dist/esm/lib/hooks/useNotificationsEventListener.js.map +0 -1
- package/dist/esm/lib/hooks/useThemeEventListener.js.map +0 -1
- package/dist/esm/lib/i18n/index.js.map +0 -1
- package/dist/esm/lib/i18n/localization/en.json.js.map +0 -1
- package/dist/esm/lib/i18n/localization/pt.json.js.map +0 -1
- package/dist/esm/lib/utils/CombinedProviders.js.map +0 -1
- package/dist/esm/lib/utils/basePathUtils.js.map +0 -1
- package/dist/esm/lib/utils/documentUtil.js.map +0 -1
- package/dist/esm/lib/utils/navigationUtil.js.map +0 -1
- package/dist/esm/lib/utils/textUtil.js.map +0 -1
- package/dist/esm/pages/ErrorPage/ErrorPage.js.map +0 -1
- package/dist/esm/pages/ErrorPage/Footer/Footer.js.map +0 -1
- package/dist/esm/pages/ErrorPage/Footer/styles.js.map +0 -1
- package/dist/esm/pages/ErrorPage/styles.js.map +0 -1
- package/dist/esm/pages/GenericError/500.svg.js.map +0 -1
- package/dist/esm/pages/GenericError/GenericError.js.map +0 -1
- package/dist/esm/pages/LoadingPage/LoadingPage.js.map +0 -1
- package/dist/esm/pages/LoadingPage/index.js.map +0 -1
- package/dist/esm/pages/LoadingPage/styles.js.map +0 -1
- package/dist/esm/pages/NotFound/404.svg.js.map +0 -1
- package/dist/esm/pages/NotFound/NotFound.js.map +0 -1
- package/dist/esm/pages/NotFound/index.js.map +0 -1
- package/dist/esm/pages/Root/Root.js.map +0 -1
- package/dist/esm/providers/BannerProvider.js.map +0 -1
- package/dist/esm/providers/LayoutProvider.js.map +0 -1
- package/dist/esm/providers/NavigationProvider.js.map +0 -1
- package/dist/esm/providers/hooks/useBannerContext.js.map +0 -1
- package/dist/esm/providers/hooks/useLayoutContext.js.map +0 -1
- package/dist/esm/providers/hooks/useNavigationContext.js.map +0 -1
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import { Suspense
|
|
3
|
-
import { Outlet
|
|
4
|
-
import { ErrorBoundary
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
const
|
|
14
|
-
providers
|
|
15
|
-
}) => /* @__PURE__ */
|
|
16
|
-
/* @__PURE__ */
|
|
17
|
-
/* @__PURE__ */
|
|
18
|
-
/* @__PURE__ */
|
|
19
|
-
/* @__PURE__ */
|
|
1
|
+
import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { Suspense } from "react";
|
|
3
|
+
import { Outlet } from "react-router-dom";
|
|
4
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
5
|
+
import CombinedProviders from "../../lib/utils/CombinedProviders.js";
|
|
6
|
+
import BannerProvider from "../../providers/BannerProvider.js";
|
|
7
|
+
import NavigationProvider from "../../providers/NavigationProvider.js";
|
|
8
|
+
import LoadingPage from "../LoadingPage/LoadingPage.js";
|
|
9
|
+
import GenericError from "../GenericError/GenericError.js";
|
|
10
|
+
import CustomHooksInitializer from "../../components/CustomHooksInitializer/CustomHooksInitializer.js";
|
|
11
|
+
import Header from "../../components/layout/Header/Header.js";
|
|
12
|
+
import Main from "../../components/layout/Main/Main.js";
|
|
13
|
+
const Root = ({
|
|
14
|
+
providers
|
|
15
|
+
}) => /* @__PURE__ */ jsx(ErrorBoundary, { fallback: /* @__PURE__ */ jsx(GenericError, { fullPage: true }), children: /* @__PURE__ */ jsx(CombinedProviders, { providers, children: /* @__PURE__ */ jsx(NavigationProvider, { children: /* @__PURE__ */ jsxs(BannerProvider, { children: [
|
|
16
|
+
/* @__PURE__ */ jsx(CustomHooksInitializer, {}),
|
|
17
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
+
/* @__PURE__ */ jsx(Header, {}),
|
|
19
|
+
/* @__PURE__ */ jsx(Main, { children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingPage, {}), children: /* @__PURE__ */ jsx(Outlet, {}) }) })
|
|
20
20
|
] })
|
|
21
|
-
] }) }) }) })
|
|
21
|
+
] }) }) }) });
|
|
22
|
+
const RootRoute = Root;
|
|
22
23
|
export {
|
|
23
|
-
|
|
24
|
+
RootRoute as default
|
|
24
25
|
};
|
|
25
|
-
//# sourceMappingURL=Root.js.map
|
|
@@ -1,73 +1,83 @@
|
|
|
1
|
-
import { jsxs
|
|
2
|
-
import { createContext
|
|
3
|
-
import { css
|
|
4
|
-
import { v4
|
|
5
|
-
import { theme
|
|
6
|
-
import { useTranslation
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
const
|
|
1
|
+
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createContext, useState, useMemo, useEffect } from "react";
|
|
3
|
+
import { css } from "@emotion/css";
|
|
4
|
+
import { v4 } from "uuid";
|
|
5
|
+
import { theme, HvBanner } from "@hitachivantara/uikit-react-core";
|
|
6
|
+
import { useTranslation } from "react-i18next";
|
|
7
|
+
import useNavigationContext from "./hooks/useNavigationContext.js";
|
|
8
|
+
import useLayoutContext from "./hooks/useLayoutContext.js";
|
|
9
|
+
const BannerContext = createContext({
|
|
10
10
|
show: () => {
|
|
11
11
|
},
|
|
12
12
|
dismiss: () => {
|
|
13
13
|
}
|
|
14
|
-
})
|
|
15
|
-
|
|
14
|
+
});
|
|
15
|
+
const BannerProvider = ({
|
|
16
|
+
children
|
|
16
17
|
}) => {
|
|
17
18
|
const {
|
|
18
|
-
t
|
|
19
|
-
} =
|
|
19
|
+
t
|
|
20
|
+
} = useTranslation(void 0, {
|
|
20
21
|
keyPrefix: "notifications.banner"
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
});
|
|
23
|
+
const {
|
|
24
|
+
showHeaderSubMenu,
|
|
25
|
+
isCompactMode
|
|
26
|
+
} = useNavigationContext();
|
|
27
|
+
const {
|
|
28
|
+
verticalNavigationWidth,
|
|
29
|
+
setBannerMaxHeight
|
|
30
|
+
} = useLayoutContext();
|
|
31
|
+
const [banners, setBanners] = useState([]);
|
|
32
|
+
const show = (notification) => {
|
|
33
|
+
const id = v4();
|
|
34
|
+
const newBanner = {
|
|
35
|
+
id,
|
|
36
|
+
...notification,
|
|
37
|
+
variant: notification.variant ?? "default"
|
|
32
38
|
};
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
setBanners((prevBanners) => [...prevBanners, newBanner]);
|
|
40
|
+
};
|
|
41
|
+
const dismiss = (id) => {
|
|
42
|
+
setBanners((prevBanners) => prevBanners.filter((banner) => banner.id !== id));
|
|
43
|
+
};
|
|
44
|
+
const value = useMemo(() => ({
|
|
45
|
+
show,
|
|
46
|
+
dismiss
|
|
39
47
|
}), []);
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
return
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (banners.length > 0) {
|
|
50
|
+
const bannerHeights = banners.map((item) => {
|
|
51
|
+
const bannerElement = document.getElementById(item.id);
|
|
52
|
+
return bannerElement ? bannerElement.clientHeight : 0;
|
|
53
|
+
});
|
|
54
|
+
const maxBannerHeight = Math.max(...bannerHeights);
|
|
55
|
+
setBannerMaxHeight(maxBannerHeight);
|
|
56
|
+
} else {
|
|
57
|
+
setBannerMaxHeight(0);
|
|
58
|
+
}
|
|
59
|
+
}, [banners, setBannerMaxHeight]);
|
|
60
|
+
const styles = useMemo(() => /* @__PURE__ */ css({
|
|
61
|
+
marginTop: showHeaderSubMenu && !isCompactMode ? `calc(${theme.header.height} + ${theme.header.secondLevelHeight} + ${theme.space.sm})` : `calc(${theme.header.height} + ${theme.space.sm})`,
|
|
62
|
+
left: `calc(${verticalNavigationWidth}px + ${theme.space.sm})`,
|
|
63
|
+
width: `calc(100% - (${verticalNavigationWidth}px + ${theme.space.sm}) - ${theme.space.sm})`,
|
|
54
64
|
transform: "unset",
|
|
55
65
|
minWidth: "unset",
|
|
56
|
-
zIndex:
|
|
57
|
-
}, process.env.NODE_ENV === "production" ? "" : ";label:styles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9fX3cvaHYtYXBwLXNoZWxsL2h2LWFwcC1zaGVsbC9jbGllbnQvcGFja2FnZXMvYXBwLXNoZWxsLXVpL3NyYy9wcm92aWRlcnMvQmFubmVyUHJvdmlkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1GTSIsImZpbGUiOiIvX193L2h2LWFwcC1zaGVsbC9odi1hcHAtc2hlbGwvY2xpZW50L3BhY2thZ2VzL2FwcC1zaGVsbC11aS9zcmMvcHJvdmlkZXJzL0Jhbm5lclByb3ZpZGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBIdkJhbm5lciwgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXJlYWN0LWNvcmVcIjtcbmltcG9ydCB7IEh2QXBwU2hlbGxFdmVudE5vdGlmaWNhdGlvbiB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvYXBwLXNoZWxsLWV2ZW50c1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHVzZU5hdmlnYXRpb25Db250ZXh0IGZyb20gXCIuL2hvb2tzL3VzZU5hdmlnYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdXNlTGF5b3V0Q29udGV4dCBmcm9tIFwiLi9ob29rcy91c2VMYXlvdXRDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEJhbm5lclByb3ZpZGVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhbm5lciBleHRlbmRzIE9taXQ8SHZBcHBTaGVsbEV2ZW50Tm90aWZpY2F0aW9uLCBcInR5cGVcIj4ge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhbm5lckNvbnRleHRWYWx1ZSB7XG4gIHNob3c6IChub3RpZmljYXRpb246IEh2QXBwU2hlbGxFdmVudE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcbiAgZGlzbWlzczogKGlkOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBCYW5uZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxCYW5uZXJDb250ZXh0VmFsdWU+KHtcbiAgc2hvdzogKCkgPT4ge1xuICAgIC8vIEVtcHR5IGZ1bmN0aW9uXG4gIH0sXG4gIGRpc21pc3M6ICgpID0+IHtcbiAgICAvLyBFbXB0eSBmdW5jdGlvblxuICB9XG59KTtcblxuY29uc3QgQmFubmVyUHJvdmlkZXIgPSAoeyBjaGlsZHJlbiB9OiBCYW5uZXJQcm92aWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24odW5kZWZpbmVkLCB7XG4gICAga2V5UHJlZml4OiBcIm5vdGlmaWNhdGlvbnMuYmFubmVyXCJcbiAgfSk7XG4gIGNvbnN0IHsgc2hvd0hlYWRlclN1Yk1lbnUsIGlzQ29tcGFjdE1vZGUgfSA9IHVzZU5hdmlnYXRpb25Db250ZXh0KCk7XG4gIGNvbnN0IHsgdmVydGljYWxOYXZpZ2F0aW9uV2lkdGgsIHNldEJhbm5lck1heEhlaWdodCB9ID0gdXNlTGF5b3V0Q29udGV4dCgpO1xuICBjb25zdCBbYmFubmVycywgc2V0QmFubmVyc10gPSB1c2VTdGF0ZTxCYW5uZXJbXT4oW10pO1xuXG4gIGNvbnN0IHNob3cgPSAobm90aWZpY2F0aW9uOiBIdkFwcFNoZWxsRXZlbnROb3RpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCBpZCA9IHV1aWQoKTtcblxuICAgIGNvbnN0IG5ld0Jhbm5lcjogQmFubmVyID0ge1xuICAgICAgaWQsXG4gICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICB2YXJpYW50OiBub3RpZmljYXRpb24udmFyaWFudCA/PyBcImRlZmF1bHRcIlxuICAgIH07XG4gICAgc2V0QmFubmVycyhwcmV2QmFubmVycyA9PiBbLi4ucHJldkJhbm5lcnMsIG5ld0Jhbm5lcl0pO1xuICB9O1xuXG4gIGNvbnN0IGRpc21pc3MgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldEJhbm5lcnMocHJldkJhbm5lcnMgPT4gcHJldkJhbm5lcnMuZmlsdGVyKGJhbm5lciA9PiBiYW5uZXIuaWQgIT09IGlkKSk7XG4gIH07XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBzaG93LFxuICAgICAgZGlzbWlzc1xuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmFubmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBHZXQgYWxsIGhlaWdodHMgZnJvbSB0aGUgcmVuZGVyZWQgYmFubmVyc1xuICAgICAgY29uc3QgYmFubmVySGVpZ2h0cyA9IGJhbm5lcnMubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBiYW5uZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXRlbS5pZCk7XG4gICAgICAgIHJldHVybiBiYW5uZXJFbGVtZW50ID8gYmFubmVyRWxlbWVudC5jbGllbnRIZWlnaHQgOiAwO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlICd0YWxsZXN0JyBiYW5uZXJcbiAgICAgIGNvbnN0IG1heEJhbm5lckhlaWdodCA9IE1hdGgubWF4KC4uLmJhbm5lckhlaWdodHMpO1xuXG4gICAgICAvLyBVcGRhdGUgcGFkZGluZyB2YWx1ZVxuICAgICAgc2V0QmFubmVyTWF4SGVpZ2h0KG1heEJhbm5lckhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEJhbm5lck1heEhlaWdodCgwKTtcbiAgICB9XG4gIH0sIFtiYW5uZXJzLCBzZXRCYW5uZXJNYXhIZWlnaHRdKTtcblxuICBjb25zdCBzdHlsZXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBjc3Moe1xuICAgICAgICBtYXJnaW5Ub3A6XG4gICAgICAgICAgc2hvd0hlYWRlclN1Yk1lbnUgJiYgIWlzQ29tcGFjdE1vZGVcbiAgICAgICAgICAgID8gYGNhbGMoJHt0aGVtZS5oZWFkZXIuaGVpZ2h0fSArICR7dGhlbWUuaGVhZGVyLnNlY29uZExldmVsSGVpZ2h0fSArICR7dGhlbWUuc3BhY2Uuc219KWBcbiAgICAgICAgICAgIDogYGNhbGMoJHt0aGVtZS5oZWFkZXIuaGVpZ2h0fSArICR7dGhlbWUuc3BhY2Uuc219KWAsXG4gICAgICAgIGxlZnQ6IGBjYWxjKCR7dmVydGljYWxOYXZpZ2F0aW9uV2lkdGh9cHggKyAke3RoZW1lLnNwYWNlLnNtfSlgLFxuICAgICAgICB3aWR0aDogYGNhbGMoMTAwJSAtICgke3ZlcnRpY2FsTmF2aWdhdGlvbldpZHRofXB4ICsgJHt0aGVtZS5zcGFjZS5zbX0pIC0gJHt0aGVtZS5zcGFjZS5zbX0pYCxcbiAgICAgICAgdHJhbnNmb3JtOiBcInVuc2V0XCIsXG4gICAgICAgIG1pbldpZHRoOiBcInVuc2V0XCIsXG4gICAgICAgIHpJbmRleDogdGhlbWUuekluZGljZXMuYmFubmVyXG4gICAgICB9KSxcbiAgICBbaXNDb21wYWN0TW9kZSwgc2hvd0hlYWRlclN1Yk1lbnUsIHZlcnRpY2FsTmF2aWdhdGlvbldpZHRoXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJhbm5lckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtiYW5uZXJzLm1hcChiYW5uZXIgPT4gKFxuICAgICAgICA8SHZCYW5uZXJcbiAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICBhbmNob3JPcmlnaW5Ub3BDZW50ZXI6IHN0eWxlc1xuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9e2Jhbm5lci5pZH1cbiAgICAgICAgICBrZXk9e2Jhbm5lci5pZH1cbiAgICAgICAgICBvZmZzZXQ9ezB9XG4gICAgICAgICAgb3BlblxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IGRpc21pc3MoYmFubmVyLmlkKX1cbiAgICAgICAgICB2YXJpYW50PXtiYW5uZXIudmFyaWFudH1cbiAgICAgICAgICBsYWJlbD17YmFubmVyLm1lc3NhZ2V9XG4gICAgICAgICAgc2hvd0ljb25cbiAgICAgICAgICBhY3Rpb25zPXtiYW5uZXIuYWN0aW9uc31cbiAgICAgICAgICBhY3Rpb25zQ2FsbGJhY2s9e2Jhbm5lci5hY3Rpb25zQ2FsbGJhY2t9XG4gICAgICAgICAgYmFubmVyQ29udGVudFByb3BzPXt7XG4gICAgICAgICAgICBhY3Rpb25Qcm9wczogeyBcImFyaWEtbGFiZWxcIjogdChcImNsb3NlXCIpIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9CYW5uZXJDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFubmVyUHJvdmlkZXI7XG4iXX0= */"), [
|
|
58
|
-
return /* @__PURE__ */
|
|
59
|
-
|
|
60
|
-
anchorOriginTopCenter:
|
|
61
|
-
}, id:
|
|
66
|
+
zIndex: theme.zIndices.banner
|
|
67
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:styles;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9fX3cvaHYtYXBwLXNoZWxsL2h2LWFwcC1zaGVsbC9jbGllbnQvcGFja2FnZXMvYXBwLXNoZWxsLXVpL3NyYy9wcm92aWRlcnMvQmFubmVyUHJvdmlkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1GTSIsImZpbGUiOiIvX193L2h2LWFwcC1zaGVsbC9odi1hcHAtc2hlbGwvY2xpZW50L3BhY2thZ2VzL2FwcC1zaGVsbC11aS9zcmMvcHJvdmlkZXJzL0Jhbm5lclByb3ZpZGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9jc3NcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBIdkJhbm5lciwgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXJlYWN0LWNvcmVcIjtcbmltcG9ydCB7IEh2QXBwU2hlbGxFdmVudE5vdGlmaWNhdGlvbiB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvYXBwLXNoZWxsLWV2ZW50c1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHVzZU5hdmlnYXRpb25Db250ZXh0IGZyb20gXCIuL2hvb2tzL3VzZU5hdmlnYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgdXNlTGF5b3V0Q29udGV4dCBmcm9tIFwiLi9ob29rcy91c2VMYXlvdXRDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEJhbm5lclByb3ZpZGVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhbm5lciBleHRlbmRzIE9taXQ8SHZBcHBTaGVsbEV2ZW50Tm90aWZpY2F0aW9uLCBcInR5cGVcIj4ge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhbm5lckNvbnRleHRWYWx1ZSB7XG4gIHNob3c6IChub3RpZmljYXRpb246IEh2QXBwU2hlbGxFdmVudE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcbiAgZGlzbWlzczogKGlkOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBCYW5uZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxCYW5uZXJDb250ZXh0VmFsdWU+KHtcbiAgc2hvdzogKCkgPT4ge1xuICAgIC8vIEVtcHR5IGZ1bmN0aW9uXG4gIH0sXG4gIGRpc21pc3M6ICgpID0+IHtcbiAgICAvLyBFbXB0eSBmdW5jdGlvblxuICB9XG59KTtcblxuY29uc3QgQmFubmVyUHJvdmlkZXIgPSAoeyBjaGlsZHJlbiB9OiBCYW5uZXJQcm92aWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24odW5kZWZpbmVkLCB7XG4gICAga2V5UHJlZml4OiBcIm5vdGlmaWNhdGlvbnMuYmFubmVyXCJcbiAgfSk7XG4gIGNvbnN0IHsgc2hvd0hlYWRlclN1Yk1lbnUsIGlzQ29tcGFjdE1vZGUgfSA9IHVzZU5hdmlnYXRpb25Db250ZXh0KCk7XG4gIGNvbnN0IHsgdmVydGljYWxOYXZpZ2F0aW9uV2lkdGgsIHNldEJhbm5lck1heEhlaWdodCB9ID0gdXNlTGF5b3V0Q29udGV4dCgpO1xuICBjb25zdCBbYmFubmVycywgc2V0QmFubmVyc10gPSB1c2VTdGF0ZTxCYW5uZXJbXT4oW10pO1xuXG4gIGNvbnN0IHNob3cgPSAobm90aWZpY2F0aW9uOiBIdkFwcFNoZWxsRXZlbnROb3RpZmljYXRpb24pID0+IHtcbiAgICBjb25zdCBpZCA9IHV1aWQoKTtcblxuICAgIGNvbnN0IG5ld0Jhbm5lcjogQmFubmVyID0ge1xuICAgICAgaWQsXG4gICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICB2YXJpYW50OiBub3RpZmljYXRpb24udmFyaWFudCA/PyBcImRlZmF1bHRcIlxuICAgIH07XG4gICAgc2V0QmFubmVycyhwcmV2QmFubmVycyA9PiBbLi4ucHJldkJhbm5lcnMsIG5ld0Jhbm5lcl0pO1xuICB9O1xuXG4gIGNvbnN0IGRpc21pc3MgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgIHNldEJhbm5lcnMocHJldkJhbm5lcnMgPT4gcHJldkJhbm5lcnMuZmlsdGVyKGJhbm5lciA9PiBiYW5uZXIuaWQgIT09IGlkKSk7XG4gIH07XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBzaG93LFxuICAgICAgZGlzbWlzc1xuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYmFubmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBHZXQgYWxsIGhlaWdodHMgZnJvbSB0aGUgcmVuZGVyZWQgYmFubmVyc1xuICAgICAgY29uc3QgYmFubmVySGVpZ2h0cyA9IGJhbm5lcnMubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBiYW5uZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXRlbS5pZCk7XG4gICAgICAgIHJldHVybiBiYW5uZXJFbGVtZW50ID8gYmFubmVyRWxlbWVudC5jbGllbnRIZWlnaHQgOiAwO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlICd0YWxsZXN0JyBiYW5uZXJcbiAgICAgIGNvbnN0IG1heEJhbm5lckhlaWdodCA9IE1hdGgubWF4KC4uLmJhbm5lckhlaWdodHMpO1xuXG4gICAgICAvLyBVcGRhdGUgcGFkZGluZyB2YWx1ZVxuICAgICAgc2V0QmFubmVyTWF4SGVpZ2h0KG1heEJhbm5lckhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEJhbm5lck1heEhlaWdodCgwKTtcbiAgICB9XG4gIH0sIFtiYW5uZXJzLCBzZXRCYW5uZXJNYXhIZWlnaHRdKTtcblxuICBjb25zdCBzdHlsZXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBjc3Moe1xuICAgICAgICBtYXJnaW5Ub3A6XG4gICAgICAgICAgc2hvd0hlYWRlclN1Yk1lbnUgJiYgIWlzQ29tcGFjdE1vZGVcbiAgICAgICAgICAgID8gYGNhbGMoJHt0aGVtZS5oZWFkZXIuaGVpZ2h0fSArICR7dGhlbWUuaGVhZGVyLnNlY29uZExldmVsSGVpZ2h0fSArICR7dGhlbWUuc3BhY2Uuc219KWBcbiAgICAgICAgICAgIDogYGNhbGMoJHt0aGVtZS5oZWFkZXIuaGVpZ2h0fSArICR7dGhlbWUuc3BhY2Uuc219KWAsXG4gICAgICAgIGxlZnQ6IGBjYWxjKCR7dmVydGljYWxOYXZpZ2F0aW9uV2lkdGh9cHggKyAke3RoZW1lLnNwYWNlLnNtfSlgLFxuICAgICAgICB3aWR0aDogYGNhbGMoMTAwJSAtICgke3ZlcnRpY2FsTmF2aWdhdGlvbldpZHRofXB4ICsgJHt0aGVtZS5zcGFjZS5zbX0pIC0gJHt0aGVtZS5zcGFjZS5zbX0pYCxcbiAgICAgICAgdHJhbnNmb3JtOiBcInVuc2V0XCIsXG4gICAgICAgIG1pbldpZHRoOiBcInVuc2V0XCIsXG4gICAgICAgIHpJbmRleDogdGhlbWUuekluZGljZXMuYmFubmVyXG4gICAgICB9KSxcbiAgICBbaXNDb21wYWN0TW9kZSwgc2hvd0hlYWRlclN1Yk1lbnUsIHZlcnRpY2FsTmF2aWdhdGlvbldpZHRoXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJhbm5lckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtiYW5uZXJzLm1hcChiYW5uZXIgPT4gKFxuICAgICAgICA8SHZCYW5uZXJcbiAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICBhbmNob3JPcmlnaW5Ub3BDZW50ZXI6IHN0eWxlc1xuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9e2Jhbm5lci5pZH1cbiAgICAgICAgICBrZXk9e2Jhbm5lci5pZH1cbiAgICAgICAgICBvZmZzZXQ9ezB9XG4gICAgICAgICAgb3BlblxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IGRpc21pc3MoYmFubmVyLmlkKX1cbiAgICAgICAgICB2YXJpYW50PXtiYW5uZXIudmFyaWFudH1cbiAgICAgICAgICBsYWJlbD17YmFubmVyLm1lc3NhZ2V9XG4gICAgICAgICAgc2hvd0ljb25cbiAgICAgICAgICBhY3Rpb25zPXtiYW5uZXIuYWN0aW9uc31cbiAgICAgICAgICBhY3Rpb25zQ2FsbGJhY2s9e2Jhbm5lci5hY3Rpb25zQ2FsbGJhY2t9XG4gICAgICAgICAgYmFubmVyQ29udGVudFByb3BzPXt7XG4gICAgICAgICAgICBhY3Rpb25Qcm9wczogeyBcImFyaWEtbGFiZWxcIjogdChcImNsb3NlXCIpIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9CYW5uZXJDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFubmVyUHJvdmlkZXI7XG4iXX0= */"), [isCompactMode, showHeaderSubMenu, verticalNavigationWidth]);
|
|
68
|
+
return /* @__PURE__ */ jsxs(BannerContext.Provider, { value, children: [
|
|
69
|
+
banners.map((banner) => /* @__PURE__ */ jsx(HvBanner, { classes: {
|
|
70
|
+
anchorOriginTopCenter: styles
|
|
71
|
+
}, id: banner.id, offset: 0, open: true, onClose: () => dismiss(banner.id), variant: banner.variant, label: banner.message, showIcon: true, actions: banner.actions, actionsCallback: banner.actionsCallback, bannerContentProps: {
|
|
62
72
|
actionProps: {
|
|
63
|
-
"aria-label":
|
|
73
|
+
"aria-label": t("close")
|
|
64
74
|
}
|
|
65
|
-
} },
|
|
66
|
-
|
|
75
|
+
} }, banner.id)),
|
|
76
|
+
children
|
|
67
77
|
] });
|
|
68
|
-
}
|
|
78
|
+
};
|
|
79
|
+
const BannerProvider$1 = BannerProvider;
|
|
69
80
|
export {
|
|
70
|
-
|
|
71
|
-
|
|
81
|
+
BannerContext,
|
|
82
|
+
BannerProvider$1 as default
|
|
72
83
|
};
|
|
73
|
-
//# sourceMappingURL=BannerProvider.js.map
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import { createContext
|
|
3
|
-
const
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createContext, useState, useMemo } from "react";
|
|
3
|
+
const LayoutContext = createContext({
|
|
4
4
|
bannerMaxHeight: 0,
|
|
5
5
|
setBannerMaxHeight: () => {
|
|
6
6
|
},
|
|
7
7
|
verticalNavigationWidth: 0,
|
|
8
8
|
setVerticalNavigationWidth: () => {
|
|
9
9
|
}
|
|
10
|
-
})
|
|
11
|
-
|
|
10
|
+
});
|
|
11
|
+
const LayoutProvider = ({
|
|
12
|
+
children
|
|
12
13
|
}) => {
|
|
13
|
-
const [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
14
|
+
const [bannerMaxHeight, setBannerMaxHeight] = useState(0);
|
|
15
|
+
const [verticalNavigationWidth, setVerticalNavigationWidth] = useState(0);
|
|
16
|
+
const value = useMemo(() => ({
|
|
17
|
+
bannerMaxHeight,
|
|
18
|
+
setBannerMaxHeight,
|
|
19
|
+
verticalNavigationWidth,
|
|
20
|
+
setVerticalNavigationWidth
|
|
21
|
+
}), [bannerMaxHeight, verticalNavigationWidth]);
|
|
22
|
+
return /* @__PURE__ */ jsx(LayoutContext.Provider, { value, children });
|
|
23
|
+
};
|
|
24
|
+
const LayoutProvider$1 = LayoutProvider;
|
|
21
25
|
export {
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
LayoutContext,
|
|
27
|
+
LayoutProvider$1 as default
|
|
24
28
|
};
|
|
25
|
-
//# sourceMappingURL=LayoutProvider.js.map
|
|
@@ -1,66 +1,98 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import { createContext
|
|
3
|
-
import { useTheme
|
|
4
|
-
import { useHvAppShellConfig
|
|
5
|
-
import { removeHrefFromMenuItemsWithChildren
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
const
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createContext, useState, useMemo, useEffect, useCallback } from "react";
|
|
3
|
+
import { useTheme, useMediaQuery } from "@mui/material";
|
|
4
|
+
import { useHvAppShellConfig } from "@hitachivantara/app-shell-shared";
|
|
5
|
+
import { removeHrefFromMenuItemsWithChildren, findItemById } from "../lib/utils/navigationUtil.js";
|
|
6
|
+
import useNavigationMenuItems from "../lib/hooks/useNavigationMenuItems.js";
|
|
7
|
+
import useLocalStorage from "../lib/hooks/useLocalStorage.js";
|
|
8
|
+
const NavigationContext = createContext({
|
|
9
9
|
selectedMenuItemId: void 0,
|
|
10
10
|
rootMenuItemId: void 0,
|
|
11
11
|
items: [],
|
|
12
12
|
verticalNavigationItems: [],
|
|
13
|
-
hasVerticalNavigation:
|
|
14
|
-
showHeaderSubMenu:
|
|
15
|
-
isCompactMode:
|
|
13
|
+
hasVerticalNavigation: false,
|
|
14
|
+
showHeaderSubMenu: false,
|
|
15
|
+
isCompactMode: false,
|
|
16
16
|
verticalNavigationMode: "EXPANDED",
|
|
17
17
|
switchVerticalNavigationMode: () => {
|
|
18
18
|
}
|
|
19
|
-
})
|
|
20
|
-
|
|
19
|
+
});
|
|
20
|
+
const NavigationProvider = ({
|
|
21
|
+
children
|
|
21
22
|
}) => {
|
|
22
23
|
const {
|
|
23
|
-
navigationMode
|
|
24
|
-
} =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}, [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
items
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
isCompactMode
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
24
|
+
navigationMode
|
|
25
|
+
} = useHvAppShellConfig();
|
|
26
|
+
const {
|
|
27
|
+
items,
|
|
28
|
+
selectedMenuItemId,
|
|
29
|
+
rootMenuItemId
|
|
30
|
+
} = useNavigationMenuItems();
|
|
31
|
+
const muiTheme = useTheme();
|
|
32
|
+
const isCompactMode = useMediaQuery(muiTheme.breakpoints.down("md"));
|
|
33
|
+
const {
|
|
34
|
+
value: storedExpanded,
|
|
35
|
+
setStoredValue: setStoreExpanded
|
|
36
|
+
} = useLocalStorage("NAV_EXPANDED");
|
|
37
|
+
const [isExpanded, setIsExpanded] = useState(storedExpanded == null ? true : storedExpanded === "true");
|
|
38
|
+
const [isClosed, setIsClosed] = useState(isCompactMode);
|
|
39
|
+
const [showHeaderSubMenu, setShowHeaderSubMenu] = useState(false);
|
|
40
|
+
const verticalNavigationMode = useMemo(() => {
|
|
41
|
+
if (isCompactMode) {
|
|
42
|
+
return isClosed ? "CLOSED" : "EXPANDED";
|
|
43
|
+
}
|
|
44
|
+
return isExpanded ? "EXPANDED" : "COLLAPSED";
|
|
45
|
+
}, [isClosed, isCompactMode, isExpanded]);
|
|
46
|
+
const verticalNavigationItems = useMemo(() => {
|
|
47
|
+
if (isCompactMode) {
|
|
48
|
+
return items;
|
|
49
|
+
}
|
|
50
|
+
if (navigationMode === "ONLY_LEFT") {
|
|
51
|
+
return removeHrefFromMenuItemsWithChildren(items);
|
|
52
|
+
}
|
|
53
|
+
const itemsToReturn = rootMenuItemId && findItemById(items, rootMenuItemId)?.data || [];
|
|
54
|
+
return removeHrefFromMenuItemsWithChildren(itemsToReturn);
|
|
55
|
+
}, [items, navigationMode, rootMenuItemId, isCompactMode]);
|
|
56
|
+
const hasVerticalNavigation = useMemo(() => {
|
|
57
|
+
if (isCompactMode) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (navigationMode === "ONLY_TOP") {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return verticalNavigationItems && verticalNavigationItems.length > 0;
|
|
64
|
+
}, [navigationMode, verticalNavigationItems, isCompactMode]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
setStoreExpanded(String(isExpanded));
|
|
67
|
+
}, [isExpanded, setStoreExpanded]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
setIsClosed(isCompactMode);
|
|
70
|
+
}, [isCompactMode]);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
setShowHeaderSubMenu(navigationMode === "ONLY_TOP" && items.some((item) => item.data && item.data.length > 0));
|
|
73
|
+
}, [navigationMode, items]);
|
|
74
|
+
const switchVerticalNavigationMode = useCallback(() => {
|
|
75
|
+
if (isCompactMode) {
|
|
76
|
+
setIsClosed((prevState) => !prevState);
|
|
77
|
+
} else {
|
|
78
|
+
setIsExpanded((prevState) => !prevState);
|
|
79
|
+
}
|
|
80
|
+
}, [isCompactMode]);
|
|
81
|
+
const value = useMemo(() => ({
|
|
82
|
+
selectedMenuItemId,
|
|
83
|
+
rootMenuItemId,
|
|
84
|
+
items,
|
|
85
|
+
verticalNavigationItems,
|
|
86
|
+
hasVerticalNavigation,
|
|
87
|
+
showHeaderSubMenu,
|
|
88
|
+
isCompactMode,
|
|
89
|
+
verticalNavigationMode,
|
|
90
|
+
switchVerticalNavigationMode
|
|
91
|
+
}), [selectedMenuItemId, rootMenuItemId, items, verticalNavigationItems, hasVerticalNavigation, showHeaderSubMenu, isCompactMode, verticalNavigationMode, switchVerticalNavigationMode]);
|
|
92
|
+
return /* @__PURE__ */ jsx(NavigationContext.Provider, { value, children });
|
|
93
|
+
};
|
|
94
|
+
const NavigationProvider$1 = NavigationProvider;
|
|
62
95
|
export {
|
|
63
|
-
|
|
64
|
-
|
|
96
|
+
NavigationContext,
|
|
97
|
+
NavigationProvider$1 as default
|
|
65
98
|
};
|
|
66
|
-
//# sourceMappingURL=NavigationProvider.js.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { useContext
|
|
2
|
-
import { BannerContext
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { BannerContext } from "../BannerProvider.js";
|
|
3
|
+
const useBannerContext = () => {
|
|
4
|
+
const context = useContext(BannerContext);
|
|
5
|
+
if (context === void 0) {
|
|
6
|
+
console.error("BannerContext was used outside of its Provider");
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
6
9
|
};
|
|
7
10
|
export {
|
|
8
|
-
|
|
11
|
+
useBannerContext as default
|
|
9
12
|
};
|
|
10
|
-
//# sourceMappingURL=useBannerContext.js.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { useContext
|
|
2
|
-
import { LayoutContext
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { LayoutContext } from "../LayoutProvider.js";
|
|
3
|
+
const useLayoutContext = () => {
|
|
4
|
+
const context = useContext(LayoutContext);
|
|
5
|
+
if (context === void 0) {
|
|
6
|
+
console.error("LayoutContext was used outside of its Provider");
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
6
9
|
};
|
|
7
10
|
export {
|
|
8
|
-
|
|
11
|
+
useLayoutContext as default
|
|
9
12
|
};
|
|
10
|
-
//# sourceMappingURL=useLayoutContext.js.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { useContext
|
|
2
|
-
import { NavigationContext
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { NavigationContext } from "../NavigationProvider.js";
|
|
3
|
+
const useNavigationContext = () => {
|
|
4
|
+
const context = useContext(NavigationContext);
|
|
5
|
+
if (context === void 0) {
|
|
6
|
+
console.error("NavigationContext was used outside of its Provider");
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
6
9
|
};
|
|
7
10
|
export {
|
|
8
|
-
|
|
11
|
+
useNavigationContext as default
|
|
9
12
|
};
|
|
10
|
-
//# sourceMappingURL=useNavigationContext.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hitachivantara/app-shell-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "AppShell Component",
|
|
5
5
|
"author": "Hitachi Vantara - Boba Fett Team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"@emotion/css": "^11.10.5",
|
|
39
39
|
"@emotion/react": "^11.10.5",
|
|
40
40
|
"@emotion/styled": "^11.10.5",
|
|
41
|
-
"@hitachivantara/app-shell-events": "1.0.
|
|
42
|
-
"@hitachivantara/app-shell-navigation": "1.2.
|
|
43
|
-
"@hitachivantara/app-shell-shared": "1.
|
|
41
|
+
"@hitachivantara/app-shell-events": "1.0.3",
|
|
42
|
+
"@hitachivantara/app-shell-navigation": "1.2.7",
|
|
43
|
+
"@hitachivantara/app-shell-shared": "1.4.1",
|
|
44
44
|
"@hitachivantara/uikit-react-core": "^5.66.7",
|
|
45
45
|
"@hitachivantara/uikit-react-icons": "^5.10.1",
|
|
46
46
|
"@mui/material": "^5.12.3",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"vite-plugin-dts": "^3.6.4",
|
|
69
69
|
"vite-tsconfig-paths": "^4.0.5"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "bbee984ca345cfaa5d6a3829f5ec65cc6373b37b"
|
|
72
72
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.js","sources":["../../../../src/components/AppShell/AppShell.tsx"],"sourcesContent":["import withGlobalProvider from \"../hoc/withGlobalProvider\";\nimport AppShellRoutes from \"../AppShellRoutes\";\n\nconst AppShell = () => {\n return <AppShellRoutes />;\n};\n\nexport default withGlobalProvider(AppShell);\n"],"names":["AppShell","AppShellRoutes","withGlobalProvider"],"mappings":";;;AAGA,MAAMA,IAAWA,wBACPC,GAAiB,CAAA,CAAA,GAGZC,IAAAA,EAAmBF,CAAQ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppShellProvider.js","sources":["../../../../src/components/AppShellProvider/AppShellProvider.tsx"],"sourcesContent":["import {\n ComponentType,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState\n} from \"react\";\nimport {\n CONFIG_TRANSLATIONS_NAMESPACE,\n HvAppShellConfig,\n HvAppShellContext,\n HvAppShellContextValue,\n HvAppShellRuntimeContext,\n HvAppShellCombinedProvidersContext\n} from \"@hitachivantara/app-shell-shared\";\nimport { I18nContext } from \"react-i18next\";\n\nimport {\n HvProvider,\n HvProviderProps,\n themes as baseThemes\n} from \"@hitachivantara/uikit-react-core\";\n\nimport { addResourceBundles } from \"../../lib/i18n\";\nimport useLocalStorage from \"../../lib/hooks/useLocalStorage\";\n\nexport type AppShellProviderProps = {\n children: ReactNode;\n config?: Partial<HvAppShellConfig>;\n configUrl?: string;\n};\n\nconst AppShellProvider = ({\n children,\n config: localConfig,\n configUrl\n}: AppShellProviderProps) => {\n const { i18n } = useContext(I18nContext);\n const { value: storedColorModeValue } = useLocalStorage(\"COLOR_MODE\");\n const [loadedConfig, setLoadedConfig] = useState<\n HvAppShellConfig | undefined\n >(undefined);\n\n const [hasError, setHasError] = useState<boolean>(false);\n\n useEffect(() => {\n if (!localConfig && configUrl) {\n fetch(new URL(configUrl))\n .then(result => {\n return result.json();\n })\n .then(data => setLoadedConfig(data))\n .catch(e => {\n console.error(\n `It was not possible to obtain the context from: ${configUrl}`,\n e\n );\n setLoadedConfig(undefined);\n setHasError(true);\n });\n }\n }, [localConfig, configUrl]);\n\n const theConfig: HvAppShellContextValue | undefined = useMemo(\n () => localConfig ?? loadedConfig,\n [localConfig, loadedConfig]\n );\n\n if (hasError) {\n throw Error(\"It was not possible to obtain the configuration\");\n }\n\n if (theConfig?.translations) {\n addResourceBundles(\n i18n,\n theConfig.translations,\n CONFIG_TRANSLATIONS_NAMESPACE\n );\n }\n\n const [themes, setThemes] = useState<HvProviderProps[\"themes\"]>(undefined);\n const [providers, setProviders] = useState<\n ComponentType<{ children: ReactNode }>[] | undefined\n >(undefined);\n\n useEffect(() => {\n if (theConfig?.theming?.themes) {\n Promise.all(\n theConfig.theming.themes?.map(bundle => {\n return (\n baseThemes[bundle as keyof typeof baseThemes] ??\n import(/* @vite-ignore */ bundle)\n .then(module => module.default)\n .catch(e => {\n console.error(`Import of theme bundle ${bundle} failed! ${e}`);\n })\n );\n })\n )\n .then(loadedThemes => {\n setThemes(loadedThemes.filter(theme => !!theme));\n })\n .catch(e => {\n console.error(`Import of themes failed! ${e}`);\n });\n }\n }, [theConfig?.theming?.themes]);\n\n useEffect(() => {\n if (theConfig?.providers) {\n Promise.all(\n theConfig.providers.map(provider => {\n return import(/* @vite-ignore */ provider.bundle)\n .then(module => module.default)\n .catch(e => {\n console.error(\n `Import of provider '${provider.bundle}' failed! ${e}`\n );\n });\n })\n )\n .then(loadedProviders =>\n setProviders(loadedProviders.filter(provider => !!provider))\n )\n .catch(e => {\n console.error(`Import of providers failed!`, e);\n });\n }\n }, [theConfig?.providers]);\n\n const runtimeContext = useMemo(\n () => ({\n i18n\n }),\n [i18n]\n );\n\n const providersContext = useMemo(\n () => ({\n providers\n }),\n [providers]\n );\n\n if (\n !theConfig ||\n (theConfig.theming?.themes && !themes) ||\n (theConfig.providers != null && providers === undefined)\n ) {\n return null;\n }\n\n return (\n <HvAppShellContext.Provider value={theConfig}>\n <HvAppShellRuntimeContext.Provider value={runtimeContext}>\n <HvProvider\n themes={themes}\n theme={theConfig.theming?.theme}\n colorMode={storedColorModeValue ?? theConfig.theming?.colorMode}>\n <HvAppShellCombinedProvidersContext.Provider value={providersContext}>\n {children}\n </HvAppShellCombinedProvidersContext.Provider>\n </HvProvider>\n </HvAppShellRuntimeContext.Provider>\n </HvAppShellContext.Provider>\n );\n};\n\nexport default AppShellProvider;\n"],"names":["AppShellProvider","children","config","localConfig","configUrl","i18n","useContext","I18nContext","value","storedColorModeValue","useLocalStorage","loadedConfig","setLoadedConfig","useState","undefined","hasError","setHasError","useEffect","fetch","URL","then","result","json","data","catch","e","console","error","theConfig","useMemo","Error","translations","CONFIG_TRANSLATIONS_NAMESPACE","themes","setThemes","providers","setProviders","theming","Promise","all","map","bundle","baseThemes","module","default","loadedThemes","filter","theme","provider","loadedProviders","runtimeContext","providersContext","jsx","HvAppShellContext","HvAppShellRuntimeContext","HvProvider","colorMode","HvAppShellCombinedProvidersContext","AppShellProvider$1"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppShellRoutes.js","sources":["../../../../src/components/AppShellRoutes/AppShellRoutes.tsx"],"sourcesContent":["import { lazy } from \"react\";\nimport {\n createBrowserRouter,\n Outlet,\n RouteObject,\n RouterProvider\n} from \"react-router-dom\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { HvContainer } from \"@hitachivantara/uikit-react-core\";\nimport {\n type HvAppShellMainPanelConfig,\n type HvAppShellViewsConfig,\n useHvAppShellConfig,\n useHvAppShellCombinedProviders\n} from \"@hitachivantara/app-shell-shared\";\n\nimport AppShellViewProvider from \"../AppShellViewProvider\";\nimport GenericError from \"../../pages/GenericError\";\nimport LoadingPage from \"../../pages/LoadingPage\";\nimport { getAppIdFromBundle } from \"../../lib/utils/navigationUtil\";\nimport getBasePath from \"../../lib/utils/basePathUtils\";\nimport RootRoute from \"../../pages/Root\";\n\nconst NotFound = lazy(() => import(\"../../pages/NotFound\"));\n\nfunction renderNestedRoutes(\n views: HvAppShellViewsConfig[] | undefined\n): RouteObject[] | undefined {\n if (!views) {\n return undefined;\n }\n return views.map<RouteObject>(view => {\n const { bundle } = view;\n const appId = getAppIdFromBundle(bundle);\n\n const RouteComponent = lazy(() => import(/* @vite-ignore */ bundle));\n\n const path = view.route.replace(/^\\//, \"\");\n\n return {\n path,\n // \"Component\" used instead of \"element\" due to lazy loading\n Component: () => (\n <AppShellViewProvider id={appId}>\n <ErrorBoundary\n key={view.route}\n fallback={<GenericError fullPage={false} />}>\n <RouteComponent {...view.config}>\n {view.views != null ? <Outlet /> : null}\n </RouteComponent>\n </ErrorBoundary>\n </AppShellViewProvider>\n ),\n children: renderNestedRoutes(view.views)\n };\n });\n}\n\nfunction renderRoutes(\n mainPanel: HvAppShellMainPanelConfig | undefined\n): RouteObject[] {\n if (mainPanel == null || mainPanel.views == null) {\n return [];\n }\n\n const { views, maxWidth = \"xl\", ...mainContainerProps } = mainPanel;\n\n return views.map(view => {\n const {\n bundle,\n route,\n config,\n views: nestedViews,\n maxWidth: viewMaxWidth,\n ...viewContainerProps\n } = view;\n\n const appId = getAppIdFromBundle(bundle);\n\n const RouteComponent = lazy(() => import(/* @vite-ignore */ bundle));\n\n return {\n path: route,\n // \"Component\" used instead of \"element\" due to lazy loading\n Component: () => (\n <HvContainer\n maxWidth={viewMaxWidth ?? maxWidth}\n {...mainContainerProps}\n {...viewContainerProps}>\n <AppShellViewProvider id={appId}>\n <ErrorBoundary\n key={route}\n fallback={<GenericError fullPage={false} />}>\n <RouteComponent {...config}>\n {nestedViews != null ? <Outlet /> : null}\n </RouteComponent>\n </ErrorBoundary>\n </AppShellViewProvider>\n </HvContainer>\n ),\n children: renderNestedRoutes(nestedViews)\n };\n });\n}\n\nfunction renderErrorRoutes(\n mainPanel: HvAppShellMainPanelConfig | undefined\n): RouteObject[] {\n const { views, maxWidth = \"xl\", ...mainContainerProps } = mainPanel ?? {};\n\n return [\n {\n path: \"*\",\n element: (\n <HvContainer maxWidth={maxWidth} {...mainContainerProps}>\n <NotFound />\n </HvContainer>\n )\n }\n ];\n}\n\nconst AppShellRoutes = () => {\n const config = useHvAppShellConfig();\n const { providers } = useHvAppShellCombinedProviders();\n\n return (\n <RouterProvider\n fallbackElement={<LoadingPage />}\n router={createBrowserRouter(\n [\n {\n element: <RootRoute providers={providers} />, // All routes live inside `RootRoute`\n errorElement: <GenericError fullPage />,\n children: [\n ...renderRoutes(config.mainPanel),\n ...renderErrorRoutes(config.mainPanel)\n ]\n }\n ],\n { basename: getBasePath(config) }\n )}\n />\n );\n};\n\nexport default AppShellRoutes;\n"],"names":["NotFound","lazy","renderNestedRoutes","views","map","view","bundle","appId","getAppIdFromBundle","RouteComponent","path","route","replace","Component","jsx","AppShellViewProvider","ErrorBoundary","GenericError","config","Outlet","children","renderRoutes","mainPanel","maxWidth","mainContainerProps","nestedViews","viewMaxWidth","viewContainerProps","HvContainer","renderErrorRoutes","element","AppShellRoutes","useHvAppShellConfig","providers","useHvAppShellCombinedProviders","RouterProvider","LoadingPage","createBrowserRouter","RootRoute","errorElement","basename","getBasePath","AppShellRoutes$1"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppShellViewProvider.js","sources":["../../../../src/components/AppShellViewProvider/AppShellViewProvider.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\n\nimport {\n HvAppShellViewContext,\n HvAppShellViewContextValue\n} from \"@hitachivantara/app-shell-shared\";\n\nexport type AppShellViewProviderProps = {\n children: React.ReactNode;\n id: string;\n};\n\nconst AppShellViewProvider = ({ children, id }: AppShellViewProviderProps) => {\n const value: HvAppShellViewContextValue = useMemo(() => ({ id }), [id]);\n\n return (\n <HvAppShellViewContext.Provider value={value}>\n {children}\n </HvAppShellViewContext.Provider>\n );\n};\n\nexport default AppShellViewProvider;\n"],"names":["AppShellViewProvider","children","id","value","useMemo","jsx","HvAppShellViewContext","AppShellViewProvider$1"],"mappings":";;;AAYA,MAAMA,IAAuBA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,IAAAA;AAA8B,MAAM;AACtEC,QAAAA,IAAoCC,EAAQ,OAAO;AAAA,IAAEF,IAAAA;AAAAA,EAAAA,IAAO,CAACA,CAAE,CAAC;AAEtE,SACG,gBAAAG,EAAAC,EAAsB,UAAtB,EAA+B,OAAAH,GAC7BF,UAAAA,EACH,CAAA;AAEJ,GAEAM,IAAeP;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomHooksInitializer.js","sources":["../../../../src/components/CustomHooksInitializer/CustomHooksInitializer.tsx"],"sourcesContent":["import useClearLocationState from \"../../lib/hooks/useClearLocationState\";\nimport useCustomEventListener from \"../../lib/hooks/useCustomEventListener\";\n\nconst CustomHooksInitializer = () => {\n useCustomEventListener();\n useClearLocationState();\n\n return null;\n};\n\nexport default CustomHooksInitializer;\n"],"names":["CustomHooksInitializer","useCustomEventListener","useClearLocationState","CustomHooksInitializer$1"],"mappings":";;AAGA,MAAMA,IAAyBA,OACNC,KACDC,KAEf,OAGTC,IAAeH;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalStyles.js","sources":["../../../../src/components/GlobalStyles/GlobalStyles.tsx"],"sourcesContent":["import { Global, css } from \"@emotion/react\";\n\n/**\n * This component can be used to set | add | modify global css. It can also override properties defined in UI-KIT.\n *\n * We need to have this component because the UI-KIT is forcing the height to 100% and this caused App Shell to show\n * a vertical scroll bar when it shouldn't due to the header height.\n */\nconst GlobalStyles = () => (\n <Global\n styles={css`\n html,\n body {\n height: unset;\n }\n `}\n />\n);\n\nexport default GlobalStyles;\n"],"names":["_ref","process","env","NODE_ENV","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","GlobalStyles","jsx","Global","GlobalStyles$1"],"mappings":";;;;;AAEA,IAAAA,IAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,KAAA;AAAA,EAAAC,UAAAC;AAAA;AAMA,MAAMC,IAAeA,MAClB,gBAAAC,EAAAC,GAAA,EACC,QAAOX,EAOV,CAAA,GAEDY,IAAeH;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IconUiKit.js","sources":["../../../../src/components/IconUiKit/IconUiKit.tsx"],"sourcesContent":["import { HvIconSprite } from \"@hitachivantara/uikit-react-icons\";\n\nexport type IconUiKitProps = {\n name: string;\n};\n\nconst spriteUri = import.meta.resolve?.(\n \"@hv/uikit-icons/icons.svg\"\n) as unknown as string;\n\nconst IconUiKit = ({ name }: IconUiKitProps) => {\n return <HvIconSprite spriteUrl={spriteUri} iconName={name} />;\n};\n\nexport default IconUiKit;\n"],"names":["spriteUri","import","resolve","IconUiKit","name","jsx","HvIconSprite","IconUiKit$1"],"mappings":";;;AAMA,MAAMA,KAAYC,KAAAA,IAAAA,aAAYC,YAAZD,gBAAAA,EAAAA,KAAAA,GAChB,8BAGIE,IAAYA,CAAC;AAAA,EAAEC,MAAAA;AAAqB,MAChC,gBAAAC,EAAAC,GAAA,EAAa,WAAWN,GAAW,UAAUI,EAAQ,CAAA,GAG/DG,IAAeJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/IconUiKit/index.tsx"],"sourcesContent":["import React from \"react\";\nimport IconUiKit from \"./IconUiKit\";\n\nexport type IconUiKitProps = {\n name: string;\n};\n\nexport default React.memo(IconUiKit);\n"],"names":["IconUiKit","React","memo"],"mappings":";;AAOA,MAAAA,IAAeC,EAAMC,KAAKF,CAAS;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withClickAwayListener.js","sources":["../../../../src/components/hoc/withClickAwayListener.tsx"],"sourcesContent":["import { createPortal } from \"react-dom\";\nimport { ClickAwayListener } from \"@mui/material\";\nimport createAppContainerElement from \"../../lib/utils/documentUtil\";\n\ninterface WithClickAwayListenerProps {\n onClickAway?: () => void;\n}\n\ntype WrappedComponentProps<T extends React.ElementType> = React.ComponentType<\n WithClickAwayListenerProps & React.ComponentProps<T>\n>;\n\nconst withClickAwayListener = <T extends React.ElementType>(\n WrappedComponent: WrappedComponentProps<T>\n) => {\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name;\n\n const panelContainerElement = createAppContainerElement();\n\n const ComponentWithClickAwayListener = ({\n onClickAway,\n ...wrappedProps\n }: WithClickAwayListenerProps & React.ComponentProps<T>) => {\n if (onClickAway) {\n return createPortal(\n <ClickAwayListener onClickAway={onClickAway}>\n <div>\n <WrappedComponent {...(wrappedProps as React.ComponentProps<T>)} />\n </div>\n </ClickAwayListener>,\n panelContainerElement\n );\n }\n\n return <WrappedComponent {...(wrappedProps as React.ComponentProps<T>)} />;\n };\n\n ComponentWithClickAwayListener.displayName = `withClickAwayListener(${displayName})`;\n\n return ComponentWithClickAwayListener;\n};\n\nexport default withClickAwayListener;\n"],"names":["withClickAwayListener","WrappedComponent","displayName","name","panelContainerElement","createAppContainerElement","ComponentWithClickAwayListener","onClickAway","wrappedProps","createPortal","jsx","ClickAwayListener"],"mappings":";;;;AAYMA,MAAAA,IAAwB,CAC5BC,MACG;AACGC,QAAAA,IAAcD,EAAiBC,eAAeD,EAAiBE,MAE/DC,IAAwBC,KAExBC,IAAiCA,CAAC;AAAA,IACtCC,aAAAA;AAAAA,IACA,GAAGC;AAAAA,EAAAA,MAECD,IACKE,EACL,gBAAAC,EAACC,GAAkB,EAAA,aAAAJ,GACjB,UAAC,gBAAAG,EAAA,OAAA,EACC,UAAC,gBAAAA,EAAAT,GAAA,EAAiB,GAAKO,EAAAA,CAAyC,EAClE,CAAA,EACF,CAAA,GACAJ,CACF,IAGK,gBAAAM,EAACT,GAAiB,EAAA,GAAKO,EAA4C,CAAA;AAG7CN,SAAAA,EAAAA,cAAe,yBAAwBA,CAAY,KAE3EI;AACT;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withGlobalProvider.js","sources":["../../../../src/components/hoc/withGlobalProvider.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { I18nextProvider } from \"react-i18next\";\nimport { HelmetProvider } from \"react-helmet-async\";\n\nimport {\n HvProvider,\n HvSnackbarProvider,\n theme\n} from \"@hitachivantara/uikit-react-core\";\n\nimport React from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport GlobalStyles from \"../GlobalStyles\";\nimport AppShellProvider from \"../AppShellProvider/AppShellProvider\";\nimport createI18Next from \"../../lib/i18n\";\nimport LayoutProvider from \"../../providers/LayoutProvider\";\nimport GenericError from \"../../pages/GenericError\";\n\ntype WrappedComponentProps<T extends React.ElementType> = React.ComponentType<\n React.ComponentProps<T>\n>;\n\nconst snackbarClasses = {\n containerRoot: css`\n margin-top: ${theme.header.height};\n `\n};\n\nconst withGlobalProvider = <T extends React.ElementType>(\n WrappedComponent: WrappedComponentProps<T>\n) => {\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name;\n\n const { i18n } = createI18Next();\n\n const ComponentWithGlobalProvider = ({\n ...wrappedProps\n }: React.ComponentProps<T>) => {\n return (\n <HelmetProvider>\n <HvProvider>\n <GlobalStyles />\n <I18nextProvider i18n={i18n}>\n <ErrorBoundary\n key=\"general\"\n fallback={<GenericError fullPage includeFooter={false} />}>\n <AppShellProvider\n config={wrappedProps.config}\n configUrl={wrappedProps.configUrl}>\n <LayoutProvider>\n <HvSnackbarProvider\n notistackClassesOverride={snackbarClasses}>\n <WrappedComponent {...wrappedProps} />\n </HvSnackbarProvider>\n </LayoutProvider>\n </AppShellProvider>\n </ErrorBoundary>\n </I18nextProvider>\n </HvProvider>\n </HelmetProvider>\n );\n };\n\n ComponentWithGlobalProvider.displayName = `withGlobalProvider(${displayName})`;\n\n return ComponentWithGlobalProvider;\n};\n\nexport default withGlobalProvider;\n"],"names":["snackbarClasses","containerRoot","css","theme","header","height","process","env","NODE_ENV","withGlobalProvider","WrappedComponent","displayName","name","i18n","createI18Next","ComponentWithGlobalProvider","wrappedProps","jsx","HelmetProvider","jsxs","HvProvider","GlobalStyles","I18nextProvider","ErrorBoundary","GenericError","AppShellProvider","config","configUrl","LayoutProvider","HvSnackbarProvider"],"mappings":";;;;;;;;;;;AAuBA,MAAMA,IAAkB;AAAA,EACtBC,eAAkB,gBAAAC,EAAA,eACFC,EAAMC,OAAOC,QAAM,OAAAC,QAAAC,IAAAC,aAAA,eAAA,KAAA,0BAAAF,QAAAC,IAAAC,aAAA,eAAA,KAAA,6xGAAA;AAErC,GAEMC,IAAqB,CACzBC,MACG;AACGC,QAAAA,IAAcD,EAAiBC,eAAeD,EAAiBE,MAE/D;AAAA,IAAEC,MAAAA;AAAAA,MAASC,EAAc,GAEzBC,IAA8BA,CAAC;AAAA,IACnC,GAAGC;AAAAA,EAAAA,MAGD,gBAAAC,EAACC,GACC,EAAA,UAAA,gBAAAC,EAACC,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAH,EAACI,GAAY,EAAA;AAAA,sBACZC,GAAgB,EAAA,MAAAT,GACf,UAAC,gBAAAI,EAAAM,GAAA,EAEC,UAAW,gBAAAN,EAAAO,GAAA,EAAa,UAAQ,IAAC,eAAe,GAAM,CAAA,GACtD,UAAC,gBAAAP,EAAAQ,GAAA,EACC,QAAQT,EAAaU,QACrB,WAAWV,EAAaW,WACxB,UAAC,gBAAAV,EAAAW,GAAA,EACC,UAAC,gBAAAX,EAAAY,GAAA,EACC,0BAA0B7B,GAC1B,UAAA,gBAAAiB,EAACP,GAAiB,EAAA,GAAIM,GAAa,EACrC,CAAA,EACF,CAAA,GACF,EAAA,GAXI,SAYN,GACF;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAIwBL,SAAAA,EAAAA,cAAe,sBAAqBA,CAAY,KAErEI;AACT;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrandLogo.js","sources":["../../../../../../src/components/layout/Header/BrandLogo/BrandLogo.tsx"],"sourcesContent":["import {\n CONFIG_TRANSLATIONS_NAMESPACE,\n HvAppShellLogo\n} from \"@hitachivantara/app-shell-shared\";\n\nimport { useTranslation } from \"react-i18next\";\nimport Hitachi from \"./Logos/Hitachi/Hitachi\";\nimport Lumada from \"./Logos/Lumada/Lumada\";\n\nexport type HvBrandLogoProps = {\n logo?: HvAppShellLogo;\n};\n\nconst BrandLogo = ({ logo }: HvBrandLogoProps) => {\n const { t: tConfig } = useTranslation(CONFIG_TRANSLATIONS_NAMESPACE);\n\n if (!logo) {\n return <Hitachi />;\n }\n\n // Rules out explicit null value or non-existent prop but assumes empty string\n const description =\n logo.description != null ? tConfig(logo.description) : undefined;\n\n if (logo.name === \"LUMADA\") {\n return <Lumada description={description} />;\n }\n return <Hitachi description={description} />;\n};\n\nexport default BrandLogo;\n"],"names":["BrandLogo","logo","t","tConfig","useTranslation","CONFIG_TRANSLATIONS_NAMESPACE","Hitachi","description","undefined","name","jsx","Lumada","BrandLogo$1"],"mappings":";;;;;AAaA,MAAMA,IAAYA,CAAC;AAAA,EAAEC,MAAAA;AAAuB,MAAM;AAC1C,QAAA;AAAA,IAAEC,GAAGC;AAAAA,EAAAA,IAAYC,EAAeC,CAA6B;AAEnE,MAAI,CAACJ;AACH,6BAAQK,GAAU,CAAA,CAAA;AAIpB,QAAMC,IACJN,EAAKM,eAAe,OAAOJ,EAAQF,EAAKM,WAAW,IAAIC;AAErDP,SAAAA,EAAKQ,SAAS,WACT,gBAAAC,EAACC,KAAO,aAAAJ,EAA4B,CAAA,IAEtC,gBAAAG,EAACJ,KAAQ,aAAAC,EAA4B,CAAA;AAC9C,GAEAK,IAAeZ;"}
|