From c38581ce26e7dc42a2e77fa885419f6e617b06f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Loureiro?= Date: Thu, 18 Jul 2024 21:27:39 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Abstraction=20of=20specifi?= =?UTF-8?q?c=20AddModal=20component=20out=20of=20the=20Navbar=20(#1246)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Common/Navbar.tsx | 17 ++++++++--------- frontend/src/routes/_layout/admin.tsx | 3 ++- frontend/src/routes/_layout/items.tsx | 3 ++- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/Common/Navbar.tsx b/frontend/src/components/Common/Navbar.tsx index edcb3d0..1579a33 100644 --- a/frontend/src/components/Common/Navbar.tsx +++ b/frontend/src/components/Common/Navbar.tsx @@ -1,17 +1,17 @@ +import { ComponentType, ElementType } from 'react'; + import { Button, Flex, Icon, useDisclosure } from "@chakra-ui/react" import { FaPlus } from "react-icons/fa" -import AddUser from "../Admin/AddUser" -import AddItem from "../Items/AddItem" - interface NavbarProps { type: string + addModalAs: ComponentType | ElementType } -const Navbar = ({ type }: NavbarProps) => { - const addUserModal = useDisclosure() - const addItemModal = useDisclosure() +const Navbar = ({ type, addModalAs }: NavbarProps) => { + const addModal = useDisclosure() + const AddModal = addModalAs return ( <> @@ -26,12 +26,11 @@ const Navbar = ({ type }: NavbarProps) => { variant="primary" gap={1} fontSize={{ base: "sm", md: "inherit" }} - onClick={type === "User" ? addUserModal.onOpen : addItemModal.onOpen} + onClick={addModal.onOpen} > Add {type} - - + ) diff --git a/frontend/src/routes/_layout/admin.tsx b/frontend/src/routes/_layout/admin.tsx index 800317b..b9724c4 100644 --- a/frontend/src/routes/_layout/admin.tsx +++ b/frontend/src/routes/_layout/admin.tsx @@ -20,6 +20,7 @@ import { Suspense } from "react" import { type UserPublic, UsersService } from "../../client" import ActionsMenu from "../../components/Common/ActionsMenu" import Navbar from "../../components/Common/Navbar" +import AddUser from "../../components/Admin/AddUser" export const Route = createFileRoute("/_layout/admin")({ component: Admin, @@ -93,7 +94,7 @@ function Admin() { User Management - + diff --git a/frontend/src/routes/_layout/items.tsx b/frontend/src/routes/_layout/items.tsx index 9946e3b..fb66e24 100644 --- a/frontend/src/routes/_layout/items.tsx +++ b/frontend/src/routes/_layout/items.tsx @@ -20,6 +20,7 @@ import { useEffect } from "react" import { ItemsService } from "../../client" import ActionsMenu from "../../components/Common/ActionsMenu" import Navbar from "../../components/Common/Navbar" +import AddItem from "../../components/Items/AddItem" const itemsSearchSchema = z.object({ page: z.number().catch(1), @@ -135,7 +136,7 @@ function Items() { Items Management - + )