diff --git a/src/components/Navbar/index.tsx b/src/components/Navbar/index.tsx index 1cd72532edd37c52701ed016900bacc08dded9ca..afa72e9703c4a9e857c425f64b675b8354efce48 100644 --- a/src/components/Navbar/index.tsx +++ b/src/components/Navbar/index.tsx @@ -11,11 +11,13 @@ function ExampleNavbar() { if ("folder" in page && page.folder) { const folder = []; for (const subpage of page.folder) { - folder.push( - <NavDropdown.Item as={Link} to={subpage.path} target="_blank"> - {subpage.name} - </NavDropdown.Item>, - ); + if ("path" in subpage && subpage.path) { + folder.push( + <NavDropdown.Item as={Link} to={subpage.path} target="_blank"> + {subpage.name} + </NavDropdown.Item>, + ); + } } pages.push( <NavDropdown title={page.name} id="basic-nav-dropdown"> diff --git a/src/containers/App/App.tsx b/src/containers/App/App.tsx index a05f9ea1c67b7687539bc06cd2e1f07151622159..7e0b2b3b0d18bd2deaadecefb65f1e7b2cfe829e 100644 --- a/src/containers/App/App.tsx +++ b/src/containers/App/App.tsx @@ -52,7 +52,7 @@ const App = () => { <Route key={path} path={path} - element={<Header title={title} lead={lead} />} + element={<Header title={title || ""} lead={lead || ""} />} /> ); })} diff --git a/src/pages.ts b/src/pages.ts index 71a8116f1480f106d968d0ede32e7ff2572dd438..e425ee387976a3b65bab4b84f7c44a253de79080 100644 --- a/src/pages.ts +++ b/src/pages.ts @@ -1,17 +1,17 @@ interface Base { - name: string; + name: string | undefined; } class Folder implements Base { - name!: string; - folder!: Page[]; + name: string | undefined; + folder: Page[] | undefined; } class Page implements Base { - name!: string; - title!: string; - path!: string; - lead?: string; + name: string | undefined; + title: string | undefined; + path: string | undefined; + lead: string | undefined; } const Pages: (Page | Folder)[] = [ diff --git a/src/utils/getPathMapping.ts b/src/utils/getPathMapping.ts index ad228b63d0c03bef97865742a790b2e1cefac992..b8ea3ce3320bef5c8c7f6a19551e71973f309061 100644 --- a/src/utils/getPathMapping.ts +++ b/src/utils/getPathMapping.ts @@ -1,27 +1,28 @@ import pages from "../pages.ts"; const getPathMapping = () => { - const map: { - [key: string]: { name: string; title: string; lead: string }; - } = {}; - pages.forEach((item) => { - if ("folder" in item && item.folder) { + return pages.reduce<{ + [key: string]: { + name: string | undefined; + title: string | undefined; + lead: string | undefined; + }; + }>((map, item) => { + if ("path" in item && item.path) { + map[item.path] = { name: item.name, title: item.title, lead: item.lead }; + } else if ("folder" in item && item.folder) { item.folder.forEach((page) => { - map[page.path] = { - name: page.name, - title: page.title, - lead: page.lead || "", - }; + if (page.path) { + map[page.path] = { + name: page.name, + title: page.title, + lead: page.lead, + }; + } }); - } else if ("path" in item && item.path) { - map[item.path] = { - name: item.name, - title: item.title, - lead: item.lead || "", - }; } - }); - return map; + return map; + }, {}); }; export default getPathMapping; diff --git a/src/utils/useDocumentTitle.ts b/src/utils/useDocumentTitle.ts index 5d2598253339dbf3fb9c973df36d1c5dd8894592..94d85aa845721efc76496011065bd488ea74f4fb 100644 --- a/src/utils/useDocumentTitle.ts +++ b/src/utils/useDocumentTitle.ts @@ -1,8 +1,8 @@ import { useEffect } from "react"; -function useDocumentTitle(title: string) { +function useDocumentTitle(title: any) { useEffect(() => { - document.title = `${title} | ${import.meta.env.VITE_TEAM_NAME} - iGEM ${import.meta.env.VITE_TEAM_YEAR}`; + document.title = `${title || ""} | ${import.meta.env.VITE_TEAM_NAME} - iGEM ${import.meta.env.VITE_TEAM_YEAR}`; }, [title]); }