import { mdiAccountMultiple, mdiCog, mdiCrowd, mdiFamilyTree, mdiHumanMaleFemale, } from "@mdi/js"; import Icon from "@mdi/react"; import HomeIcon from "@mui/icons-material/Home"; import { Box, Divider, List, ListItemButton, ListItemIcon, ListItemText, ListSubheader, } from "@mui/material"; import React from "react"; import { Outlet, useLocation, useParams } from "react-router-dom"; import { Family, FamilyApi } from "../api/FamilyApi"; import { AsyncWidget } from "./AsyncWidget"; import { RouterLink } from "./RouterLink"; interface FamilyContext { family: Family; reloadFamilyInfo: () => void; } const FamilyContextK = React.createContext(null); export function BaseFamilyRoute(): React.ReactElement { const { familyId } = useParams(); const [family, setFamily] = React.useState(null); const loadKey = React.useRef(1); const load = async () => { setFamily(await FamilyApi.GetSingle(Number(familyId))); }; const onReload = () => { loadKey.current += 1; setFamily(null); }; return ( ( } label="Accueil" uri="" /> } label="Membres" uri="members" /> } label="Couples" uri="couples" /> } label="Arbre" uri="tree" /> Administration } label="Utilisateurs" uri="users" /> } label="Paramètres" uri="settings" /> theme.palette.mode === "light" ? theme.palette.grey[100] : theme.palette.grey[900], flexGrow: 1, overflow: "auto", padding: "20px", }} > )} /> ); } export function useFamily(): FamilyContext { return React.useContext(FamilyContextK)!; } function FamilyLink(p: { icon: React.ReactElement; uri: string; label: string; }): React.ReactElement { const family = useFamily(); const location = useLocation(); const link = family.family.URL(p.uri); return ( {p.icon} ); }