generated from Luis/nextjs-python-web-template
frontend-2 #49
@@ -11,7 +11,6 @@ import {
|
|||||||
import { StyledEngineProvider } from "@mui/material/styles";
|
import { StyledEngineProvider } from "@mui/material/styles";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import localFont from "next/font/local";
|
import localFont from "next/font/local";
|
||||||
import Image from "next/image";
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Toaster } from "react-hot-toast";
|
import { Toaster } from "react-hot-toast";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
@@ -76,25 +75,15 @@ export default function RootLayout({
|
|||||||
!showSidebarDerived && translate
|
!showSidebarDerived && translate
|
||||||
} flex h-full w-full flex-col overflow-y-scroll transition-[margin] duration-150 ease-in-out`}
|
} flex h-full w-full flex-col overflow-y-scroll transition-[margin] duration-150 ease-in-out`}
|
||||||
>
|
>
|
||||||
<div className="static top-0 mb-2 py-2">
|
<div className="grid grid-cols-3">
|
||||||
<div className="grid grid-cols-3">
|
<div className="col-span-1">
|
||||||
<div className="col-span-1">
|
<IconButton
|
||||||
<IconButton
|
style={{ padding: "12px" }}
|
||||||
hidden={true}
|
hidden={true}
|
||||||
onClick={() => setShowSidebar((c) => !c)}
|
onClick={() => setShowSidebar((c) => !c)}
|
||||||
>
|
>
|
||||||
{!showSidebar && <MenuIcon />}
|
{!showSidebar && <MenuIcon />}
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</div>
|
|
||||||
<div className="col-span-1 block w-full bg-fixed text-center font-semibold dark:invert lg:hidden">
|
|
||||||
<Image
|
|
||||||
src="/tub-favicon.png"
|
|
||||||
alt="TU Berlin Logo"
|
|
||||||
width={58}
|
|
||||||
height={58}
|
|
||||||
priority
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import {
|
|||||||
ListItemButton,
|
ListItemButton,
|
||||||
ListItemIcon,
|
ListItemIcon,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
|
useMediaQuery,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import React, { ReactNode } from "react";
|
import React, { ReactNode } from "react";
|
||||||
@@ -88,14 +89,24 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
);
|
);
|
||||||
const [collapseMenuOpen, setCollapseMenuOpen] = React.useState(true);
|
const [collapseMenuOpen, setCollapseMenuOpen] = React.useState(true);
|
||||||
|
|
||||||
const handleCollapseClick = () => {
|
const isSmallerScreen = useMediaQuery("(max-width: 1025px)");
|
||||||
setCollapseMenuOpen(!collapseMenuOpen);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleMenuItemClick = (path: string) => {
|
const handleMenuItemClick = (path: string) => {
|
||||||
setActiveMenuItem(path);
|
setActiveMenuItem(path);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleCollapseClick = () => {
|
||||||
|
setCollapseMenuOpen(!collapseMenuOpen);
|
||||||
|
};
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (isSmallerScreen) {
|
||||||
|
setCollapseMenuOpen(false);
|
||||||
|
} else {
|
||||||
|
setCollapseMenuOpen(true);
|
||||||
|
}
|
||||||
|
}, [isSmallerScreen]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<aside
|
<aside
|
||||||
style={{ backgroundColor: "#00497c" }}
|
style={{ backgroundColor: "#00497c" }}
|
||||||
@@ -113,16 +124,16 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
priority
|
priority
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="lg:absolute lg:right-0 lg:top-0">
|
||||||
|
<IconButton size="large" className="text-white" onClick={onClose}>
|
||||||
|
<ChevronLeftIcon fontSize="inherit" />
|
||||||
|
</IconButton>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Divider
|
<Divider
|
||||||
flexItem
|
flexItem
|
||||||
className="mx-8 mb-4 mt-9 hidden bg-neutral-40 lg:block"
|
className="mx-8 mb-4 mt-9 hidden bg-neutral-40 lg:block"
|
||||||
/>
|
/>
|
||||||
<div className="flex w-full justify-center">
|
|
||||||
<IconButton size="large" className="text-white" onClick={onClose}>
|
|
||||||
<ChevronLeftIcon fontSize="inherit" />
|
|
||||||
</IconButton>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col overflow-hidden overflow-y-auto">
|
<div className="flex flex-col overflow-hidden overflow-y-auto">
|
||||||
<List className="mb-14 px-0 pb-4 text-white lg:mt-1 lg:px-4">
|
<List className="mb-14 px-0 pb-4 text-white lg:mt-1 lg:px-4">
|
||||||
{menuEntries.map((menuEntry, idx) => {
|
{menuEntries.map((menuEntry, idx) => {
|
||||||
@@ -165,7 +176,7 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
>
|
>
|
||||||
<ListItemIcon
|
<ListItemIcon
|
||||||
color="inherit"
|
color="inherit"
|
||||||
className="justify-center overflow-hidden text-white lg:justify-normal"
|
className="overflow-hidden text-white lg:justify-normal"
|
||||||
>
|
>
|
||||||
{menuEntry.icon}
|
{menuEntry.icon}
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
@@ -174,12 +185,12 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
primaryTypographyProps={{
|
primaryTypographyProps={{
|
||||||
color: "inherit",
|
color: "inherit",
|
||||||
}}
|
}}
|
||||||
className="hidden lg:block"
|
className="mr-4 hidden lg:block"
|
||||||
/>
|
/>
|
||||||
{collapseMenuOpen ? <ExpandLess /> : <ExpandMore />}
|
{collapseMenuOpen ? <ExpandLess /> : <ExpandMore />}
|
||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
<Collapse
|
<Collapse
|
||||||
in={collapseMenuOpen}
|
in={collapseMenuOpen && show}
|
||||||
timeout="auto"
|
timeout="auto"
|
||||||
unmountOnExit
|
unmountOnExit
|
||||||
>
|
>
|
||||||
@@ -188,7 +199,7 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
<ListItemButton
|
<ListItemButton
|
||||||
key={idx}
|
key={idx}
|
||||||
sx={{ pl: 4 }}
|
sx={{ pl: 4 }}
|
||||||
className="justify-center lg:justify-normal"
|
className="lg:justify-normal"
|
||||||
LinkComponent={Link}
|
LinkComponent={Link}
|
||||||
href={menuEntry.to}
|
href={menuEntry.to}
|
||||||
disabled={menuEntry.disabled}
|
disabled={menuEntry.disabled}
|
||||||
@@ -197,7 +208,7 @@ export function Sidebar(props: SidebarProps) {
|
|||||||
>
|
>
|
||||||
<ListItemIcon
|
<ListItemIcon
|
||||||
color="inherit"
|
color="inherit"
|
||||||
className="justify-center overflow-hidden text-white lg:justify-normal"
|
className="overflow-hidden text-white lg:justify-normal"
|
||||||
>
|
>
|
||||||
{menuEntry.icon}
|
{menuEntry.icon}
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
|
|||||||
Reference in New Issue
Block a user