wcz-layout 6.2.0 → 6.2.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.
@@ -0,0 +1,3 @@
1
+ import { ButtonProps } from "@mui/material";
2
+ import React from "react";
3
+ export declare const Button: React.FC<ButtonProps>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button as MaterialButton } from "@mui/material";
3
+ import { useIsFetching, useIsMutating } from "@tanstack/react-query";
4
+ export const Button = props => {
5
+ const isFetching = !!useIsFetching();
6
+ const isMutating = !!useIsMutating();
7
+ return _jsx(MaterialButton, { ...props, disabled: isFetching || isMutating || props.disabled });
8
+ };
9
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAe,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,MAAM,CAAC,MAAM,MAAM,GAA0B,KAAK,CAAC,EAAE;IACjD,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAErC,OAAO,KAAC,cAAc,OAAK,KAAK,EAAE,QAAQ,EAAE,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,GAAI,CAAC;AAC/F,CAAC,CAAC","sourcesContent":["import { Button as MaterialButton, ButtonProps } from \"@mui/material\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport React from \"react\";\r\n\r\nexport const Button: React.FC<ButtonProps> = props => {\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n\r\n return <MaterialButton {...props} disabled={isFetching || isMutating || props.disabled} />;\r\n};"]}
@@ -1,19 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Close } from "@mui/icons-material";
3
- import { AppBar, Dialog as MaterialDialog, DialogActions, DialogContent, DialogTitle, Grid, IconButton, LinearProgress, Toolbar, Typography, useMediaQuery } from "@mui/material";
3
+ import { AppBar, DialogActions, DialogContent, DialogTitle, Grid, IconButton, Dialog as MaterialDialog, Toolbar, Typography, useMediaQuery } from "@mui/material";
4
4
  import { useTheme } from "@mui/material/styles";
5
- import { useIsFetching, useIsMutating } from "@tanstack/react-query";
6
5
  import { Fragment } from "react";
7
6
  import { LayoutSnackbar } from "./LayoutSnackbar";
8
7
  export const Dialog = ({ open, onClose, title, subtitle, children, color, maxWidth, actions, disablePadding, disableAutoClose }) => {
9
8
  const theme = useTheme();
10
9
  const fullScreen = useMediaQuery(theme.breakpoints.down("sm"));
11
- const isFetching = !!useIsFetching();
12
- const isMutating = !!useIsMutating();
13
10
  return (_jsxs(MaterialDialog, { open: open, onClose: disableAutoClose ? undefined : onClose, fullScreen: fullScreen, fullWidth: true, maxWidth: maxWidth, children: [fullScreen ?
14
- _jsxs(Fragment, { children: [_jsx(AppBar, { sx: { position: "relative", bgcolor: `${color}.main` }, children: _jsxs(Toolbar, { children: [_jsxs(Typography, { sx: { flex: 1 }, variant: "h6", children: [title, subtitle && _jsx(Typography, { variant: "body2", sx: { opacity: 0.5 }, children: subtitle })] }), _jsx(IconButton, { edge: "start", onClick: onClose, children: _jsx(Close, { sx: { color: `${color}.contrastText` } }) })] }) }), (isFetching || isMutating) && _jsx(LinearProgress, { color: color === "default" ? undefined : color })] })
11
+ _jsx(Fragment, { children: _jsx(AppBar, { sx: { position: "relative", bgcolor: `${color}.main` }, children: _jsxs(Toolbar, { children: [_jsxs(Typography, { sx: { flex: 1 }, variant: "h6", children: [title, subtitle && _jsx(Typography, { variant: "body2", sx: { opacity: 0.5 }, children: subtitle })] }), _jsx(IconButton, { edge: "start", onClick: onClose, children: _jsx(Close, { sx: { color: `${color}.contrastText` } }) })] }) }) })
15
12
  :
16
- _jsxs(Fragment, { children: [_jsxs(Grid, { container: true, justifyContent: "space-between", sx: { bgcolor: `${color}.main`, color: `${color}.contrastText` }, children: [_jsx(Grid, { item: true, xs: true, children: _jsxs(DialogTitle, { children: [title, subtitle && _jsx(Typography, { variant: "body2", sx: { opacity: 0.5 }, children: subtitle })] }) }), _jsx(Grid, { item: true, xs: 2, sx: { p: 1, textAlign: "right" }, children: _jsx(IconButton, { onClick: onClose, children: _jsx(Close, { fontSize: "small", sx: { color: `${color}.contrastText` } }) }) })] }), (isFetching || isMutating) && _jsx(LinearProgress, { color: color === "default" ? undefined : color })] }), disablePadding ? children : _jsx(DialogContent, { children: children }), actions &&
13
+ _jsx(Fragment, { children: _jsxs(Grid, { container: true, justifyContent: "space-between", sx: { bgcolor: `${color}.main`, color: `${color}.contrastText` }, children: [_jsx(Grid, { item: true, xs: true, children: _jsxs(DialogTitle, { children: [title, subtitle && _jsx(Typography, { variant: "body2", sx: { opacity: 0.5 }, children: subtitle })] }) }), _jsx(Grid, { item: true, xs: 2, sx: { p: 1, textAlign: "right" }, children: _jsx(IconButton, { onClick: onClose, children: _jsx(Close, { fontSize: "small", sx: { color: `${color}.contrastText` } }) }) })] }) }), disablePadding ? children : _jsx(DialogContent, { children: children }), actions &&
17
14
  _jsx(DialogActions, { children: actions.map(action => action) }), _jsx(LayoutSnackbar, {})] }));
18
15
  };
19
16
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Close } from \"@mui/icons-material\";\r\nimport { AppBar, Breakpoint, Dialog as MaterialDialog, DialogActions, DialogContent, DialogTitle, Grid, IconButton, LinearProgress, Toolbar, Typography, useMediaQuery } from \"@mui/material\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport { Fragment, ReactNode } from \"react\";\r\nimport { LayoutSnackbar } from \"./LayoutSnackbar\";\r\n\r\ninterface DialogProps {\r\n children?: ReactNode,\r\n title: string | ReactNode;\r\n subtitle?: string | ReactNode;\r\n open: boolean;\r\n onClose: () => void;\r\n color?: \"success\" | \"info\" | \"warning\" | \"error\" | \"primary\" | \"secondary\" | \"inherit\" | \"default\";\r\n maxWidth?: Breakpoint;\r\n actions?: ReactNode[];\r\n disablePadding?: boolean;\r\n disableAutoClose?: boolean;\r\n}\r\n\r\nexport const Dialog: React.FC<DialogProps> = ({ open, onClose, title, subtitle, children, color, maxWidth, actions, disablePadding, disableAutoClose }) => {\r\n const theme = useTheme();\r\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n\r\n return (\r\n <MaterialDialog open={open} onClose={disableAutoClose ? undefined : onClose} fullScreen={fullScreen} fullWidth maxWidth={maxWidth}>\r\n {fullScreen ?\r\n <Fragment>\r\n <AppBar sx={{ position: \"relative\", bgcolor: `${color}.main` }}>\r\n <Toolbar>\r\n <Typography sx={{ flex: 1 }} variant=\"h6\">\r\n {title}\r\n {subtitle && <Typography variant=\"body2\" sx={{ opacity: 0.5 }}>{subtitle}</Typography>}\r\n </Typography>\r\n <IconButton edge=\"start\" onClick={onClose}>\r\n <Close sx={{ color: `${color}.contrastText` }} />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n {(isFetching || isMutating) && <LinearProgress color={color === \"default\" ? undefined : color} />}\r\n </Fragment>\r\n :\r\n <Fragment>\r\n <Grid container justifyContent=\"space-between\" sx={{ bgcolor: `${color}.main`, color: `${color}.contrastText` }}>\r\n <Grid item xs>\r\n <DialogTitle>\r\n {title}\r\n {subtitle && <Typography variant=\"body2\" sx={{ opacity: 0.5 }}>{subtitle}</Typography>}\r\n </DialogTitle>\r\n </Grid>\r\n\r\n <Grid item xs={2} sx={{ p: 1, textAlign: \"right\" }}>\r\n <IconButton onClick={onClose}>\r\n <Close fontSize=\"small\" sx={{ color: `${color}.contrastText` }} />\r\n </IconButton>\r\n </Grid>\r\n </Grid>\r\n {(isFetching || isMutating) && <LinearProgress color={color === \"default\" ? undefined : color} />}\r\n </Fragment>\r\n }\r\n\r\n {disablePadding ? children : <DialogContent>{children}</DialogContent>}\r\n\r\n {actions &&\r\n <DialogActions>\r\n {actions.map(action => action)}\r\n </DialogActions>\r\n }\r\n\r\n <LayoutSnackbar />\r\n </MaterialDialog>\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Close } from \"@mui/icons-material\";\r\nimport { AppBar, Breakpoint, DialogActions, DialogContent, DialogTitle, Grid, IconButton, Dialog as MaterialDialog, Toolbar, Typography, useMediaQuery } from \"@mui/material\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport { Fragment, ReactNode } from \"react\";\r\nimport { LayoutSnackbar } from \"./LayoutSnackbar\";\r\n\r\ninterface DialogProps {\r\n children?: ReactNode,\r\n title: string | ReactNode;\r\n subtitle?: string | ReactNode;\r\n open: boolean;\r\n onClose: () => void;\r\n color?: \"success\" | \"info\" | \"warning\" | \"error\" | \"primary\" | \"secondary\" | \"inherit\" | \"default\";\r\n maxWidth?: Breakpoint;\r\n actions?: ReactNode[];\r\n disablePadding?: boolean;\r\n disableAutoClose?: boolean;\r\n}\r\n\r\nexport const Dialog: React.FC<DialogProps> = ({ open, onClose, title, subtitle, children, color, maxWidth, actions, disablePadding, disableAutoClose }) => {\r\n const theme = useTheme();\r\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n return (\r\n <MaterialDialog open={open} onClose={disableAutoClose ? undefined : onClose} fullScreen={fullScreen} fullWidth maxWidth={maxWidth}>\r\n {fullScreen ?\r\n <Fragment>\r\n <AppBar sx={{ position: \"relative\", bgcolor: `${color}.main` }}>\r\n <Toolbar>\r\n <Typography sx={{ flex: 1 }} variant=\"h6\">\r\n {title}\r\n {subtitle && <Typography variant=\"body2\" sx={{ opacity: 0.5 }}>{subtitle}</Typography>}\r\n </Typography>\r\n <IconButton edge=\"start\" onClick={onClose}>\r\n <Close sx={{ color: `${color}.contrastText` }} />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n </Fragment>\r\n :\r\n <Fragment>\r\n <Grid container justifyContent=\"space-between\" sx={{ bgcolor: `${color}.main`, color: `${color}.contrastText` }}>\r\n <Grid item xs>\r\n <DialogTitle>\r\n {title}\r\n {subtitle && <Typography variant=\"body2\" sx={{ opacity: 0.5 }}>{subtitle}</Typography>}\r\n </DialogTitle>\r\n </Grid>\r\n\r\n <Grid item xs={2} sx={{ p: 1, textAlign: \"right\" }}>\r\n <IconButton onClick={onClose}>\r\n <Close fontSize=\"small\" sx={{ color: `${color}.contrastText` }} />\r\n </IconButton>\r\n </Grid>\r\n </Grid>\r\n </Fragment>\r\n }\r\n\r\n {disablePadding ? children : <DialogContent>{children}</DialogContent>}\r\n\r\n {actions &&\r\n <DialogActions>\r\n {actions.map(action => action)}\r\n </DialogActions>\r\n }\r\n\r\n <LayoutSnackbar />\r\n </MaterialDialog>\r\n );\r\n};\r\n"]}
@@ -123,6 +123,6 @@ export const Layout = ({ routes, colors, appVersion, user, notifications, setNot
123
123
  }, [title]);
124
124
  const toggleNavigationDrawer = () => setLeftDrawerOpen(!leftDrawerOpen);
125
125
  const hasNavigationRoutes = navigationRoutes.filter(route => route.showInMenu && !route.disabled).length > 1;
126
- return (_jsxs(ThemeProvider, { theme: theme, children: [_jsxs(Box, { sx: { display: "flex", position: "sticky" }, children: [_jsx(CssBaseline, {}), _jsx(AppBar, { position: "fixed", open: leftDrawerOpen, children: _jsxs(Toolbar, { children: [_jsx(IconButton, { color: "inherit", onClick: toggleNavigationDrawer, edge: "start", sx: { marginRight: 2, ...((leftDrawerOpen || !hasNavigationRoutes) && { display: "none" }) }, children: _jsx(Menu, {}) }), _jsx(Typography, { variant: "h6", noWrap: true, component: "div", sx: { flexGrow: 1 }, children: title }), environment !== "production" && _jsx(Chip, { sx: theme => ({ mr: 1, bgcolor: "secondary.main", color: theme.palette.primary.contrastText }), label: environment }), _jsx(NotificationMenu, { notifications: notifications, setNotifications: setNotifications }), _jsx(AccountMenu, { mode: mode, setMode: setMode, user: user })] }) }), _jsx(NavigationDrawer, { routes: navigationRoutes, appVersion: appVersion, open: leftDrawerOpen, setOpen: setLeftDrawerOpen, hasRoutes: hasNavigationRoutes }), _jsxs(Box, { component: "main", sx: { flex: 1, overflow: "auto" }, children: [_jsx(DrawerHeader, {}), (route.authenticated === false || user.isLoggedIn) && !route.disabled ? children : _jsx(Unauthorized, {})] })] }), _jsx(DevelopmentBanner, { user: user }), (isFetching || isMutating) && _jsx(LinearProgress, { sx: { position: "fixed", top: { xs: 56, sm: 64 }, left: 0, right: 0 } })] }));
126
+ return (_jsxs(ThemeProvider, { theme: theme, children: [_jsxs(Box, { sx: { display: "flex", position: "sticky" }, children: [_jsx(CssBaseline, {}), _jsx(AppBar, { position: "fixed", open: leftDrawerOpen, children: _jsxs(Toolbar, { children: [_jsx(IconButton, { color: "inherit", onClick: toggleNavigationDrawer, edge: "start", sx: { marginRight: 2, ...((leftDrawerOpen || !hasNavigationRoutes) && { display: "none" }) }, children: _jsx(Menu, {}) }), _jsx(Typography, { variant: "h6", noWrap: true, component: "div", sx: { flexGrow: 1 }, children: title }), environment !== "production" && _jsx(Chip, { sx: theme => ({ mr: 1, bgcolor: "secondary.main", color: theme.palette.primary.contrastText }), label: environment }), _jsx(NotificationMenu, { notifications: notifications, setNotifications: setNotifications }), _jsx(AccountMenu, { mode: mode, setMode: setMode, user: user })] }) }), _jsx(NavigationDrawer, { routes: navigationRoutes, appVersion: appVersion, open: leftDrawerOpen, setOpen: setLeftDrawerOpen, hasRoutes: hasNavigationRoutes }), _jsxs(Box, { component: "main", sx: { flex: 1, overflow: "auto" }, children: [_jsx(DrawerHeader, {}), (route.authenticated === false || user.isLoggedIn) && !route.disabled ? children : _jsx(Unauthorized, {})] })] }), _jsx(DevelopmentBanner, { user: user, hasNavigationRoutes: hasNavigationRoutes }), (isFetching || isMutating) && _jsx(LinearProgress, { sx: { position: "fixed", top: { xs: 56, sm: 64 }, left: 0, right: 0 } })] }));
127
127
  };
128
128
  //# sourceMappingURL=Layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/components/Layout.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Menu } from \"@mui/icons-material\";\r\nimport { Box, Chip, CssBaseline, IconButton, LinearProgress, AppBar as MuiAppBar, AppBarProps as MuiAppBarProps, Theme, Toolbar, Typography, useMediaQuery } from \"@mui/material\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport { csCZ, enUS } from \"@mui/material/locale\";\r\nimport { ThemeProvider, createTheme, styled } from \"@mui/material/styles\";\r\nimport { csCZ as dataGridCsCz, enUS as dataGridEnUs } from \"@mui/x-data-grid-premium/locales\";\r\nimport { csCZ as datePickersCsCz, enUS as datePickersEnUs } from \"@mui/x-date-pickers-pro/locales\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport React, { Dispatch, SetStateAction, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { matchPath, useLocation } from \"react-router-dom\";\r\nimport { LayoutPaletteColorOptions } from \"../models/LayoutPaletteColorOptions\";\r\nimport { LayoutRoute } from \"../models/LayoutRoute\";\r\nimport Notification from \"../models/Notification\";\r\nimport { User } from \"../models/User\";\r\nimport { environment } from \"../utils/Helpers\";\r\nimport { doLogin, initKeycloak, keycloak } from \"../utils/UserService\";\r\nimport { AccountMenu } from \"./layout/AccountMenu\";\r\nimport { DevelopmentBanner } from \"./layout/DevelopmentBanner\";\r\nimport { NavigationDrawer } from \"./layout/NavigationDrawer\";\r\nimport { NotificationMenu } from \"./layout/NotificationMenu\";\r\nimport { Unauthorized } from \"./layout/Unauthorized\";\r\nimport useLocalStorageState from \"use-local-storage-state\";\r\n\r\n//Drawer\r\nconst drawerWidth = 240;\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\n//AppBar\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme, open }) => ({\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n ...(open && {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n }),\r\n}));\r\n\r\nconst getAllRoutesWithPath = (routes: LayoutRoute[]): LayoutRoute[] => {\r\n let result: LayoutRoute[] = [];\r\n for (const route of routes) {\r\n if (route.path) {\r\n result.push(route);\r\n }\r\n if (route.children) {\r\n result = result.concat(getAllRoutesWithPath(route.children));\r\n }\r\n }\r\n return result;\r\n};\r\n\r\ninterface LayoutProps {\r\n routes: LayoutRoute[];\r\n appVersion: string;\r\n colors: LayoutPaletteColorOptions;\r\n children: React.ReactNode;\r\n user: User;\r\n notifications: Notification[] | undefined;\r\n setNotifications: Dispatch<SetStateAction<Notification[] | undefined>>;\r\n}\r\n\r\nexport const Layout: React.FC<LayoutProps> = ({ routes, colors, appVersion, user, notifications, setNotifications, children }) => {\r\n const prefersDarkMode: boolean = useMediaQuery(\"(prefers-color-scheme: dark)\");\r\n const [mode, setMode] = useLocalStorageState<\"light\" | \"dark\" | \"system\">(\"mui-mode\", { defaultValue: \"system\" });\r\n const [leftDrawerOpen, setLeftDrawerOpen] = useState<boolean>(false);\r\n const { i18n } = useTranslation();\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n const location = useLocation();\r\n const navigationRoutes = getAllRoutesWithPath(routes);\r\n const route = navigationRoutes.find(r => matchPath(r.path!, location.pathname))!;\r\n\r\n useEffect(() => {\r\n if (route.authenticated !== false && !user.isLoggedIn)\r\n initKeycloak();\r\n }, [route, user]);\r\n\r\n keycloak.onTokenExpired = async () => {\r\n try {\r\n await keycloak.updateToken(30);\r\n } catch {\r\n if (route.authenticated !== false) {\r\n await doLogin();\r\n }\r\n }\r\n };\r\n\r\n const theme: Theme = createTheme({\r\n palette: {\r\n mode: mode === \"system\" ? prefersDarkMode ? \"dark\" : \"light\" : mode,\r\n primary: colors.primary,\r\n secondary: colors.secondary,\r\n background: colors.background ?? {},\r\n },\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: (theme) => ({\r\n body: {\r\n \"&::-webkit-scrollbar, & *::-webkit-scrollbar\": {\r\n width: \"0.7em\",\r\n height: \"0.7em\",\r\n },\r\n \"&::-webkit-scrollbar-track, & *::-webkit-scrollbar-track\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[900] : grey[200],\r\n borderRadius: \"5px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[800] : grey[400],\r\n borderRadius: \"10px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[700] : grey[500],\r\n },\r\n \"&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n },\r\n }),\r\n },\r\n },\r\n },\r\n i18n.language === \"cs\" ? datePickersCsCz : datePickersEnUs,\r\n i18n.language === \"cs\" ? dataGridCsCz : dataGridEnUs,\r\n i18n.language === \"cs\" ? csCZ : enUS\r\n );\r\n\r\n const title = route.pageTitle ?? route.title;\r\n\r\n useEffect(() => {\r\n if (title) document.title = title;\r\n }, [title]);\r\n\r\n const toggleNavigationDrawer = () => setLeftDrawerOpen(!leftDrawerOpen);\r\n\r\n const hasNavigationRoutes: boolean = navigationRoutes.filter(route => route.showInMenu && !route.disabled).length > 1;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Box sx={{ display: \"flex\", position: \"sticky\" }}>\r\n <CssBaseline />\r\n <AppBar position=\"fixed\" open={leftDrawerOpen}>\r\n <Toolbar>\r\n <IconButton color=\"inherit\" onClick={toggleNavigationDrawer} edge=\"start\" sx={{ marginRight: 2, ...((leftDrawerOpen || !hasNavigationRoutes) && { display: \"none\" }) }} >\r\n <Menu />\r\n </IconButton>\r\n\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flexGrow: 1 }}>{title}</Typography>\r\n\r\n {environment !== \"production\" && <Chip sx={theme => ({ mr: 1, bgcolor: \"secondary.main\", color: theme.palette.primary.contrastText })} label={environment} />}\r\n\r\n <NotificationMenu notifications={notifications} setNotifications={setNotifications} />\r\n <AccountMenu mode={mode} setMode={setMode} user={user} />\r\n </Toolbar>\r\n </AppBar>\r\n\r\n <NavigationDrawer routes={navigationRoutes} appVersion={appVersion} open={leftDrawerOpen} setOpen={setLeftDrawerOpen} hasRoutes={hasNavigationRoutes} />\r\n\r\n <Box component=\"main\" sx={{ flex: 1, overflow: \"auto\" }}>\r\n <DrawerHeader />\r\n {(route.authenticated === false || user.isLoggedIn) && !route.disabled ? children : <Unauthorized />}\r\n </Box>\r\n </Box>\r\n\r\n <DevelopmentBanner user={user} />\r\n {(isFetching || isMutating) && <LinearProgress sx={{ position: \"fixed\", top: { xs: 56, sm: 64 }, left: 0, right: 0 }} />}\r\n </ThemeProvider>\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/components/Layout.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Menu } from \"@mui/icons-material\";\r\nimport { Box, Chip, CssBaseline, IconButton, LinearProgress, AppBar as MuiAppBar, AppBarProps as MuiAppBarProps, Theme, Toolbar, Typography, useMediaQuery } from \"@mui/material\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport { csCZ, enUS } from \"@mui/material/locale\";\r\nimport { ThemeProvider, createTheme, styled } from \"@mui/material/styles\";\r\nimport { csCZ as dataGridCsCz, enUS as dataGridEnUs } from \"@mui/x-data-grid-premium/locales\";\r\nimport { csCZ as datePickersCsCz, enUS as datePickersEnUs } from \"@mui/x-date-pickers-pro/locales\";\r\nimport { useIsFetching, useIsMutating } from \"@tanstack/react-query\";\r\nimport React, { Dispatch, SetStateAction, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { matchPath, useLocation } from \"react-router-dom\";\r\nimport { LayoutPaletteColorOptions } from \"../models/LayoutPaletteColorOptions\";\r\nimport { LayoutRoute } from \"../models/LayoutRoute\";\r\nimport Notification from \"../models/Notification\";\r\nimport { User } from \"../models/User\";\r\nimport { environment } from \"../utils/Helpers\";\r\nimport { doLogin, initKeycloak, keycloak } from \"../utils/UserService\";\r\nimport { AccountMenu } from \"./layout/AccountMenu\";\r\nimport { DevelopmentBanner } from \"./layout/DevelopmentBanner\";\r\nimport { NavigationDrawer } from \"./layout/NavigationDrawer\";\r\nimport { NotificationMenu } from \"./layout/NotificationMenu\";\r\nimport { Unauthorized } from \"./layout/Unauthorized\";\r\nimport useLocalStorageState from \"use-local-storage-state\";\r\n\r\n//Drawer\r\nconst drawerWidth = 240;\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\n//AppBar\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme, open }) => ({\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n ...(open && {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n }),\r\n}));\r\n\r\nconst getAllRoutesWithPath = (routes: LayoutRoute[]): LayoutRoute[] => {\r\n let result: LayoutRoute[] = [];\r\n for (const route of routes) {\r\n if (route.path) {\r\n result.push(route);\r\n }\r\n if (route.children) {\r\n result = result.concat(getAllRoutesWithPath(route.children));\r\n }\r\n }\r\n return result;\r\n};\r\n\r\ninterface LayoutProps {\r\n routes: LayoutRoute[];\r\n appVersion: string;\r\n colors: LayoutPaletteColorOptions;\r\n children: React.ReactNode;\r\n user: User;\r\n notifications: Notification[] | undefined;\r\n setNotifications: Dispatch<SetStateAction<Notification[] | undefined>>;\r\n}\r\n\r\nexport const Layout: React.FC<LayoutProps> = ({ routes, colors, appVersion, user, notifications, setNotifications, children }) => {\r\n const prefersDarkMode: boolean = useMediaQuery(\"(prefers-color-scheme: dark)\");\r\n const [mode, setMode] = useLocalStorageState<\"light\" | \"dark\" | \"system\">(\"mui-mode\", { defaultValue: \"system\" });\r\n const [leftDrawerOpen, setLeftDrawerOpen] = useState<boolean>(false);\r\n const { i18n } = useTranslation();\r\n const isFetching = !!useIsFetching();\r\n const isMutating = !!useIsMutating();\r\n const location = useLocation();\r\n const navigationRoutes = getAllRoutesWithPath(routes);\r\n const route = navigationRoutes.find(r => matchPath(r.path!, location.pathname))!;\r\n\r\n useEffect(() => {\r\n if (route.authenticated !== false && !user.isLoggedIn)\r\n initKeycloak();\r\n }, [route, user]);\r\n\r\n keycloak.onTokenExpired = async () => {\r\n try {\r\n await keycloak.updateToken(30);\r\n } catch {\r\n if (route.authenticated !== false) {\r\n await doLogin();\r\n }\r\n }\r\n };\r\n\r\n const theme: Theme = createTheme({\r\n palette: {\r\n mode: mode === \"system\" ? prefersDarkMode ? \"dark\" : \"light\" : mode,\r\n primary: colors.primary,\r\n secondary: colors.secondary,\r\n background: colors.background ?? {},\r\n },\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: (theme) => ({\r\n body: {\r\n \"&::-webkit-scrollbar, & *::-webkit-scrollbar\": {\r\n width: \"0.7em\",\r\n height: \"0.7em\",\r\n },\r\n \"&::-webkit-scrollbar-track, & *::-webkit-scrollbar-track\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[900] : grey[200],\r\n borderRadius: \"5px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[800] : grey[400],\r\n borderRadius: \"10px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover\": {\r\n backgroundColor: theme.palette.mode === \"dark\" ? grey[700] : grey[500],\r\n },\r\n \"&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n },\r\n }),\r\n },\r\n },\r\n },\r\n i18n.language === \"cs\" ? datePickersCsCz : datePickersEnUs,\r\n i18n.language === \"cs\" ? dataGridCsCz : dataGridEnUs,\r\n i18n.language === \"cs\" ? csCZ : enUS\r\n );\r\n\r\n const title = route.pageTitle ?? route.title;\r\n\r\n useEffect(() => {\r\n if (title) document.title = title;\r\n }, [title]);\r\n\r\n const toggleNavigationDrawer = () => setLeftDrawerOpen(!leftDrawerOpen);\r\n\r\n const hasNavigationRoutes: boolean = navigationRoutes.filter(route => route.showInMenu && !route.disabled).length > 1;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Box sx={{ display: \"flex\", position: \"sticky\" }}>\r\n <CssBaseline />\r\n <AppBar position=\"fixed\" open={leftDrawerOpen}>\r\n <Toolbar>\r\n <IconButton color=\"inherit\" onClick={toggleNavigationDrawer} edge=\"start\" sx={{ marginRight: 2, ...((leftDrawerOpen || !hasNavigationRoutes) && { display: \"none\" }) }} >\r\n <Menu />\r\n </IconButton>\r\n\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flexGrow: 1 }}>{title}</Typography>\r\n\r\n {environment !== \"production\" && <Chip sx={theme => ({ mr: 1, bgcolor: \"secondary.main\", color: theme.palette.primary.contrastText })} label={environment} />}\r\n\r\n <NotificationMenu notifications={notifications} setNotifications={setNotifications} />\r\n <AccountMenu mode={mode} setMode={setMode} user={user} />\r\n </Toolbar>\r\n </AppBar>\r\n\r\n <NavigationDrawer routes={navigationRoutes} appVersion={appVersion} open={leftDrawerOpen} setOpen={setLeftDrawerOpen} hasRoutes={hasNavigationRoutes} />\r\n\r\n <Box component=\"main\" sx={{ flex: 1, overflow: \"auto\" }}>\r\n <DrawerHeader />\r\n {(route.authenticated === false || user.isLoggedIn) && !route.disabled ? children : <Unauthorized />}\r\n </Box>\r\n </Box>\r\n\r\n <DevelopmentBanner user={user} hasNavigationRoutes={hasNavigationRoutes} />\r\n {(isFetching || isMutating) && <LinearProgress sx={{ position: \"fixed\", top: { xs: 56, sm: 64 }, left: 0, right: 0 }} />}\r\n </ThemeProvider>\r\n );\r\n};\r\n"]}
@@ -1,6 +1,7 @@
1
1
  import { User } from "../../models/User";
2
2
  interface DevelopmentBannerProps {
3
3
  user: User;
4
+ hasNavigationRoutes: boolean;
4
5
  }
5
6
  export declare const DevelopmentBanner: React.FC<DevelopmentBannerProps>;
6
7
  export {};
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Close } from "@mui/icons-material";
3
- import { Fade, Grid, IconButton, Paper, Typography } from "@mui/material";
3
+ import { Fade, Grid2, IconButton, Paper, Typography } from "@mui/material";
4
4
  import { useEffect, useState } from "react";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { environment } from "../../utils/Helpers";
7
7
  import { hasRole } from "../../utils/UserService";
8
- export const DevelopmentBanner = ({ user }) => {
8
+ import { grey } from "@mui/material/colors";
9
+ export const DevelopmentBanner = ({ user, hasNavigationRoutes }) => {
9
10
  const { t } = useTranslation();
10
11
  const [bannerOpen, setBannerOpen] = useState(false);
11
12
  useEffect(() => {
@@ -13,6 +14,16 @@ export const DevelopmentBanner = ({ user }) => {
13
14
  setBannerOpen(true);
14
15
  }, [user.isLoggedIn]);
15
16
  const closeBanner = () => setBannerOpen(false);
16
- return (_jsx(Fade, { appear: false, in: bannerOpen, children: _jsx(Paper, { square: true, variant: "outlined", tabIndex: -1, sx: { position: "fixed", bottom: 0, left: { xs: 0, sm: 67.7 }, right: 0, m: 0, p: 2, borderWidth: 0, borderTopWidth: 1 }, children: _jsxs(Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: [_jsxs(Grid, { item: true, xs: true, children: [_jsx(Typography, { fontWeight: "bold", children: t("Layout.DevelopmentDialogTitle") }), _jsx(Typography, { variant: "body2", children: t("Layout.DevelopmentDialogContent") })] }), _jsx(Grid, { item: true, xs: 2, sx: { p: 1, textAlign: "right" }, children: _jsx(IconButton, { size: "small", onClick: closeBanner, children: _jsx(Close, {}) }) })] }) }) }));
17
+ return (_jsx(Fade, { appear: false, in: bannerOpen, children: _jsx(Paper, { square: true, variant: "outlined", tabIndex: -1, sx: theme => ({
18
+ position: "fixed",
19
+ bottom: 0,
20
+ left: { xs: 0, sm: hasNavigationRoutes ? 68.7 : 0 },
21
+ right: 0,
22
+ m: 0,
23
+ p: 2,
24
+ borderWidth: 0,
25
+ borderTopWidth: 1,
26
+ bgcolor: theme.palette.mode === "dark" ? grey[900] : grey[100]
27
+ }), children: _jsxs(Grid2, { container: true, justifyContent: "space-between", alignItems: "center", children: [_jsxs(Grid2, { size: 10, children: [_jsx(Typography, { fontWeight: "bold", children: t("Layout.DevelopmentDialogTitle") }), _jsx(Typography, { variant: "body2", children: t("Layout.DevelopmentDialogContent") })] }), _jsx(Grid2, { size: 2, sx: { p: 1, textAlign: "right" }, children: _jsx(IconButton, { size: "small", onClick: closeBanner, children: _jsx(Close, {}) }) })] }) }) }));
17
28
  };
18
29
  //# sourceMappingURL=DevelopmentBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevelopmentBanner.js","sourceRoot":"","sources":["../../../../src/components/layout/DevelopmentBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAMlD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC5E,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,WAAW,KAAK,aAAa;YAChF,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO,CACH,KAAC,IAAI,IAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,YAC/B,KAAC,KAAK,IAAC,MAAM,QAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,YACnK,MAAC,IAAI,IAAC,SAAS,QAAC,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,QAAQ,aAC9D,MAAC,IAAI,IAAC,IAAI,QAAC,EAAE,mBACT,KAAC,UAAU,IAAC,UAAU,EAAC,MAAM,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAc,EAC/E,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,CAAC,CAAC,iCAAiC,CAAC,GAAc,IAC5E,EAEP,KAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAC9C,KAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,WAAW,YACzC,KAAC,KAAK,KAAG,GACA,GACV,IACJ,GACH,GACL,CACV,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Close } from \"@mui/icons-material\";\r\nimport { Fade, Grid, IconButton, Paper, Typography } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { User } from \"../../models/User\";\r\nimport { environment } from \"../../utils/Helpers\";\r\nimport { hasRole } from \"../../utils/UserService\";\r\n\r\ninterface DevelopmentBannerProps {\r\n user: User;\r\n}\r\n\r\nexport const DevelopmentBanner: React.FC<DevelopmentBannerProps> = ({ user }) => {\r\n const { t } = useTranslation();\r\n const [bannerOpen, setBannerOpen] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (user.isLoggedIn && !hasRole([\"wcz-developers\"]) && environment === \"development\")\r\n setBannerOpen(true);\r\n }, [user.isLoggedIn]);\r\n\r\n const closeBanner = () => setBannerOpen(false);\r\n\r\n return (\r\n <Fade appear={false} in={bannerOpen}>\r\n <Paper square variant=\"outlined\" tabIndex={-1} sx={{ position: \"fixed\", bottom: 0, left: { xs: 0, sm: 67.7 }, right: 0, m: 0, p: 2, borderWidth: 0, borderTopWidth: 1 }} >\r\n <Grid container justifyContent=\"space-between\" alignItems=\"center\">\r\n <Grid item xs>\r\n <Typography fontWeight=\"bold\">{t(\"Layout.DevelopmentDialogTitle\")}</Typography>\r\n <Typography variant=\"body2\">{t(\"Layout.DevelopmentDialogContent\")}</Typography>\r\n </Grid>\r\n\r\n <Grid item xs={2} sx={{ p: 1, textAlign: \"right\" }}>\r\n <IconButton size=\"small\" onClick={closeBanner}>\r\n <Close />\r\n </IconButton>\r\n </Grid>\r\n </Grid>\r\n </Paper>\r\n </Fade>\r\n );\r\n};"]}
1
+ {"version":3,"file":"DevelopmentBanner.js","sourceRoot":"","sources":["../../../../src/components/layout/DevelopmentBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAO5C,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE;IACjG,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,WAAW,KAAK,aAAa;YAChF,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO,CACH,KAAC,IAAI,IAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,YAC/B,KAAC,KAAK,IAAC,MAAM,QAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzD,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnD,KAAK,EAAE,CAAC;gBACR,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,CAAC;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aACjE,CAAC,YACE,MAAC,KAAK,IAAC,SAAS,QAAC,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,QAAQ,aAC/D,MAAC,KAAK,IAAC,IAAI,EAAE,EAAE,aACX,KAAC,UAAU,IAAC,UAAU,EAAC,MAAM,YAAE,CAAC,CAAC,+BAA+B,CAAC,GAAc,EAC/E,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,CAAC,CAAC,iCAAiC,CAAC,GAAc,IAC3E,EAER,KAAC,KAAK,IAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAC5C,KAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,WAAW,YACzC,KAAC,KAAK,KAAG,GACA,GACT,IACJ,GACJ,GACL,CACV,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Close } from \"@mui/icons-material\";\r\nimport { Fade, Grid2, IconButton, Paper, Typography } from \"@mui/material\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { User } from \"../../models/User\";\r\nimport { environment } from \"../../utils/Helpers\";\r\nimport { hasRole } from \"../../utils/UserService\";\r\nimport { grey } from \"@mui/material/colors\";\r\n\r\ninterface DevelopmentBannerProps {\r\n user: User;\r\n hasNavigationRoutes: boolean;\r\n}\r\n\r\nexport const DevelopmentBanner: React.FC<DevelopmentBannerProps> = ({ user, hasNavigationRoutes }) => {\r\n const { t } = useTranslation();\r\n const [bannerOpen, setBannerOpen] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (user.isLoggedIn && !hasRole([\"wcz-developers\"]) && environment === \"development\")\r\n setBannerOpen(true);\r\n }, [user.isLoggedIn]);\r\n\r\n const closeBanner = () => setBannerOpen(false);\r\n\r\n return (\r\n <Fade appear={false} in={bannerOpen}>\r\n <Paper square variant=\"outlined\" tabIndex={-1} sx={theme => ({\r\n position: \"fixed\",\r\n bottom: 0,\r\n left: { xs: 0, sm: hasNavigationRoutes ? 68.7 : 0 },\r\n right: 0,\r\n m: 0,\r\n p: 2,\r\n borderWidth: 0,\r\n borderTopWidth: 1,\r\n bgcolor: theme.palette.mode === \"dark\" ? grey[900] : grey[100]\r\n })}>\r\n <Grid2 container justifyContent=\"space-between\" alignItems=\"center\">\r\n <Grid2 size={10}>\r\n <Typography fontWeight=\"bold\">{t(\"Layout.DevelopmentDialogTitle\")}</Typography>\r\n <Typography variant=\"body2\">{t(\"Layout.DevelopmentDialogContent\")}</Typography>\r\n </Grid2>\r\n\r\n <Grid2 size={2} sx={{ p: 1, textAlign: \"right\" }}>\r\n <IconButton size=\"small\" onClick={closeBanner}>\r\n <Close />\r\n </IconButton>\r\n </Grid2>\r\n </Grid2>\r\n </Paper>\r\n </Fade>\r\n );\r\n};"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KeycloakExtendedConfig.js","sourceRoot":"","sources":["../../../src/models/KeycloakExtendedConfig.ts"],"names":[],"mappings":"","sourcesContent":["export default interface KeycloakExtendedConfig {\r\n autoLogin?: boolean,\r\n confidential?: Confidential,\r\n realm: string,\r\n \"auth-server-url\": string,\r\n idpHint?: string\r\n}\r\n\r\nexport interface Confidential {\r\n client: string,\r\n secret: string\r\n}"]}
1
+ {"version":3,"file":"KeycloakExtendedConfig.js","sourceRoot":"","sources":["../../../src/models/KeycloakExtendedConfig.ts"],"names":[],"mappings":"","sourcesContent":["export default interface KeycloakExtendedConfig {\n autoLogin?: boolean,\n confidential?: Confidential,\n realm: string,\n \"auth-server-url\": string,\n idpHint?: string\n}\n\nexport interface Confidential {\n client: string,\n secret: string\n}"]}
@@ -0,0 +1,5 @@
1
+ export declare const fetchGet: (url: string, signal: AbortSignal | undefined) => Promise<any>;
2
+ export declare const fetchFileGet: (url: string, signal: AbortSignal | undefined) => Promise<Blob>;
3
+ export declare const fetchPost: (url: string, data: unknown) => Promise<any>;
4
+ export declare const fetchPut: (url: string, data: unknown) => Promise<Response>;
5
+ export declare const fetchDelete: (url: string) => Promise<Response>;
@@ -0,0 +1,61 @@
1
+ import { getToken } from "../utils/UserService";
2
+ export const fetchGet = async (url, signal) => {
3
+ const initReq = await getRequestInit("GET", null, signal);
4
+ const response = await fetch(url, initReq);
5
+ if (!response.ok)
6
+ throw await response.json();
7
+ return response.json();
8
+ };
9
+ export const fetchFileGet = async (url, signal) => {
10
+ const initReq = await getRequestInit("GET", null, signal);
11
+ const response = await fetch(url, initReq);
12
+ if (!response.ok)
13
+ throw await response.json();
14
+ return response.blob();
15
+ };
16
+ export const fetchPost = async (url, data) => {
17
+ const initReq = await getRequestInit("POST", data);
18
+ const response = await fetch(url, initReq);
19
+ if (!response.ok)
20
+ throw await response.json();
21
+ return response.json();
22
+ };
23
+ export const fetchPut = async (url, data) => {
24
+ const initReq = await getRequestInit("PUT", data);
25
+ const response = await fetch(url, initReq);
26
+ if (!response.ok)
27
+ throw await response.json();
28
+ return response;
29
+ };
30
+ export const fetchDelete = async (url) => {
31
+ const initReq = await getRequestInit("DELETE");
32
+ const response = await fetch(url, initReq);
33
+ if (!response.ok)
34
+ throw await response.json();
35
+ return response;
36
+ };
37
+ const getRequestInit = async (method, data, signal) => {
38
+ const request = {
39
+ method: method,
40
+ signal: signal,
41
+ credentials: "include"
42
+ };
43
+ if (data) {
44
+ if (data instanceof FormData)
45
+ request.body = data;
46
+ else
47
+ request.body = JSON.stringify(data);
48
+ }
49
+ if (data instanceof FormData)
50
+ request.headers = {
51
+ "Authorization": `Bearer ${await getToken()}`
52
+ };
53
+ else {
54
+ request.headers = {
55
+ "Content-Type": "application/json",
56
+ "Authorization": `Bearer ${await getToken()}`
57
+ };
58
+ }
59
+ return request;
60
+ };
61
+ //# sourceMappingURL=Fetches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fetches.js","sourceRoot":"","sources":["../../../src/next/Fetches.ts"],"names":[],"mappings":"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","sourcesContent":["import { getToken } from \"../utils/UserService\";\r\n\r\nexport const fetchGet = async (url: string, signal: AbortSignal | undefined): Promise<any> => {\r\n const initReq: RequestInit = await getRequestInit(\"GET\", null, signal);\r\n\r\n const response: Response = await fetch(url, initReq);\r\n if (!response.ok)\r\n throw await response.json();\r\n\r\n return response.json();\r\n};\r\n\r\nexport const fetchFileGet = async (url: string, signal: AbortSignal | undefined): Promise<Blob> => {\r\n const initReq: RequestInit = await getRequestInit(\"GET\", null, signal);\r\n\r\n const response: Response = await fetch(url, initReq);\r\n if (!response.ok)\r\n throw await response.json();\r\n\r\n return response.blob();\r\n};\r\n\r\nexport const fetchPost = async (url: string, data: unknown): Promise<any> => {\r\n const initReq: RequestInit = await getRequestInit(\"POST\", data);\r\n\r\n const response: Response = await fetch(url, initReq);\r\n if (!response.ok)\r\n throw await response.json();\r\n\r\n return response.json();\r\n};\r\n\r\nexport const fetchPut = async (url: string, data: unknown): Promise<Response> => {\r\n const initReq: RequestInit = await getRequestInit(\"PUT\", data);\r\n\r\n const response: Response = await fetch(url, initReq);\r\n if (!response.ok)\r\n throw await response.json();\r\n\r\n return response;\r\n};\r\n\r\nexport const fetchDelete = async (url: string): Promise<Response> => {\r\n const initReq: RequestInit = await getRequestInit(\"DELETE\");\r\n\r\n const response: Response = await fetch(url, initReq);\r\n if (!response.ok)\r\n throw await response.json();\r\n\r\n return response;\r\n};\r\n\r\nconst getRequestInit = async (method: string, data?: unknown, signal?: AbortSignal): Promise<RequestInit> => {\r\n const request: RequestInit = {\r\n method: method,\r\n signal: signal,\r\n credentials: \"include\"\r\n };\r\n\r\n if (data) {\r\n if (data instanceof FormData)\r\n request.body = data;\r\n else\r\n request.body = JSON.stringify(data);\r\n }\r\n\r\n if (data instanceof FormData)\r\n request.headers = {\r\n \"Authorization\": `Bearer ${await getToken()}`\r\n };\r\n else {\r\n request.headers = {\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ${await getToken()}`\r\n };\r\n }\r\n\r\n return request;\r\n};"]}
@@ -0,0 +1,40 @@
1
+ export declare const resources: {
2
+ en: {
3
+ translation: {
4
+ Layout: {
5
+ Logout: string;
6
+ LogIn: string;
7
+ Language: string;
8
+ Appearance: string;
9
+ Light: string;
10
+ Dark: string;
11
+ System: string;
12
+ Home: string;
13
+ Settings: string;
14
+ Version: string;
15
+ Unauthorized: string;
16
+ DevelopmentDialogTitle: string;
17
+ DevelopmentDialogContent: string;
18
+ };
19
+ };
20
+ };
21
+ cs: {
22
+ translation: {
23
+ Layout: {
24
+ Logout: string;
25
+ LogIn: string;
26
+ Language: string;
27
+ Appearance: string;
28
+ Light: string;
29
+ Dark: string;
30
+ System: string;
31
+ Home: string;
32
+ Settings: string;
33
+ Version: string;
34
+ Unauthorized: string;
35
+ DevelopmentDialogTitle: string;
36
+ DevelopmentDialogContent: string;
37
+ };
38
+ };
39
+ };
40
+ };
@@ -0,0 +1,41 @@
1
+ export const resources = {
2
+ en: {
3
+ translation: {
4
+ Layout: {
5
+ "Logout": "Logout",
6
+ "LogIn": "Log In",
7
+ "Language": "Language",
8
+ "Appearance": "Appearance",
9
+ "Light": "Light",
10
+ "Dark": "Dark",
11
+ "System": "System",
12
+ "Home": "Home",
13
+ "Settings": "Settings",
14
+ "Version": "Version",
15
+ "Unauthorized": "Unauthorized",
16
+ "DevelopmentDialogTitle": "Testing environment",
17
+ "DevelopmentDialogContent": "You are accessing a test environment. Data integrity is not guaranteed and application behavior may be unpredictable. Please proceed with caution and report any unexpected behavior to the development team."
18
+ }
19
+ }
20
+ },
21
+ cs: {
22
+ translation: {
23
+ Layout: {
24
+ "Logout": "Odhlásit se",
25
+ "LogIn": "Přihlásit se",
26
+ "Language": "Jazyk",
27
+ "Appearance": "Vzhled",
28
+ "Light": "Světlý",
29
+ "Dark": "Tmavý",
30
+ "System": "Systém",
31
+ "Home": "Domů",
32
+ "Settings": "Nastavení",
33
+ "Version": "Verze",
34
+ "Unauthorized": "Neoprávněný",
35
+ "DevelopmentDialogTitle": "Testovací prostředí",
36
+ "DevelopmentDialogContent": "Vstupujete do testovacího prostředí. Integrita dat není zaručena a chování aplikace může být nepředvídatelné. Prosím, buďte opatrní a jakékoli neočekávané chování ihned hláste vývojovému týmu."
37
+ }
38
+ }
39
+ }
40
+ };
41
+ //# sourceMappingURL=Translations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Translations.js","sourceRoot":"","sources":["../../../src/utils/Translations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,EAAE,EAAE;QACA,WAAW,EAAE;YACT,MAAM,EAAE;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,cAAc;gBAC9B,wBAAwB,EAAE,qBAAqB;gBAC/C,0BAA0B,EAAE,+MAA+M;aAC9O;SACJ;KACJ;IACD,EAAE,EAAE;QACA,WAAW,EAAE;YACT,MAAM,EAAE;gBACJ,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,QAAQ;gBACtB,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,aAAa;gBAC7B,wBAAwB,EAAE,qBAAqB;gBAC/C,0BAA0B,EAAE,kMAAkM;aACjO;SACJ;KACJ;CACJ,CAAC","sourcesContent":["export const resources = {\r\n en: {\r\n translation: {\r\n Layout: {\r\n \"Logout\": \"Logout\",\r\n \"LogIn\": \"Log In\",\r\n \"Language\": \"Language\",\r\n \"Appearance\": \"Appearance\",\r\n \"Light\": \"Light\",\r\n \"Dark\": \"Dark\",\r\n \"System\": \"System\",\r\n \"Home\": \"Home\",\r\n \"Settings\": \"Settings\",\r\n \"Version\": \"Version\",\r\n \"Unauthorized\": \"Unauthorized\",\r\n \"DevelopmentDialogTitle\": \"Testing environment\",\r\n \"DevelopmentDialogContent\": \"You are accessing a test environment. Data integrity is not guaranteed and application behavior may be unpredictable. Please proceed with caution and report any unexpected behavior to the development team.\"\r\n }\r\n }\r\n },\r\n cs: {\r\n translation: {\r\n Layout: {\r\n \"Logout\": \"Odhlásit se\",\r\n \"LogIn\": \"Přihlásit se\",\r\n \"Language\": \"Jazyk\",\r\n \"Appearance\": \"Vzhled\",\r\n \"Light\": \"Světlý\",\r\n \"Dark\": \"Tmavý\",\r\n \"System\": \"Systém\",\r\n \"Home\": \"Domů\",\r\n \"Settings\": \"Nastavení\",\r\n \"Version\": \"Verze\",\r\n \"Unauthorized\": \"Neoprávněný\",\r\n \"DevelopmentDialogTitle\": \"Testovací prostředí\",\r\n \"DevelopmentDialogContent\": \"Vstupujete do testovacího prostředí. Integrita dat není zaručena a chování aplikace může být nepředvídatelné. Prosím, buďte opatrní a jakékoli neočekávané chování ihned hláste vývojovému týmu.\"\r\n }\r\n }\r\n }\r\n};"]}