From 8f484e8425dd92615d325e646ae1e6d2a87ac3fc Mon Sep 17 00:00:00 2001 From: bicochan Date: Tue, 18 Mar 2025 14:29:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20sidebar=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/common/components/package.json | 2 + packages/common/components/src/api/index.ts | 1 + packages/common/components/src/api/menu.ts | 27 +++++ packages/common/components/src/api/user.ts | 2 +- packages/common/components/src/config/api.ts | 3 + .../src/{hooks => lib}/use-mobile.tsx | 0 .../components/src/ui/collapsible/index.tsx | 9 ++ .../common/components/src/ui/header/index.tsx | 2 +- .../common/components/src/ui/layout/base.tsx | 23 ++-- .../common/components/src/ui/layout/lnb.tsx | 104 ------------------ .../common/components/src/ui/layout/vbase.tsx | 4 +- .../common/components/src/ui/lnb/index.tsx | 100 +++++++++++++++++ packages/common/components/src/ui/lnb/lib.ts | 36 ++++++ .../components/src/ui/sidebar/index.tsx | 4 +- pnpm-lock.yaml | 6 + 15 files changed, 203 insertions(+), 120 deletions(-) create mode 100644 packages/common/components/src/api/menu.ts rename packages/common/components/src/{hooks => lib}/use-mobile.tsx (100%) create mode 100644 packages/common/components/src/ui/collapsible/index.tsx delete mode 100644 packages/common/components/src/ui/layout/lnb.tsx create mode 100644 packages/common/components/src/ui/lnb/index.tsx create mode 100644 packages/common/components/src/ui/lnb/lib.ts diff --git a/packages/common/components/package.json b/packages/common/components/package.json index 7556b9738..ca2986403 100644 --- a/packages/common/components/package.json +++ b/packages/common/components/package.json @@ -26,9 +26,11 @@ }, "dependencies": { "@common/assets": "workspace:*", + "@frontend-opensource/use-react-hooks": "^1.1.4", "@minoru/react-dnd-treeview": "^3.5.0", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-dropdown-menu": "^2.1.6", "@radix-ui/react-label": "^2.1.2", diff --git a/packages/common/components/src/api/index.ts b/packages/common/components/src/api/index.ts index 6674d19fa..98bc9323f 100644 --- a/packages/common/components/src/api/index.ts +++ b/packages/common/components/src/api/index.ts @@ -1,2 +1,3 @@ export * from "./client"; +export * from "./menu"; export * from "./user"; diff --git a/packages/common/components/src/api/menu.ts b/packages/common/components/src/api/menu.ts new file mode 100644 index 000000000..e9899c111 --- /dev/null +++ b/packages/common/components/src/api/menu.ts @@ -0,0 +1,27 @@ +import { client } from "./client"; +import { ENDPOINT } from "../config"; + +export interface MenuItem { + menuCd: number; + menuKornNm: string; + menuEngNm: string; + parentId: number | null; + sortSeq: number; + iconNm?: string; + children: MenuItem[] | null; + levelNo: number; + urlPath: string; + menuLnkgTypeCd: string; + menuLnkgSn: number; + qrcd: string; + useYn: string; + otptYn: string; + requiredUrlPath: boolean; +} + +export const getMenuList = async (siteId: string) => { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.MENU_ROLES}/${siteId}`, + ); + return response.data; +}; diff --git a/packages/common/components/src/api/user.ts b/packages/common/components/src/api/user.ts index 36e39461d..760f2c78b 100644 --- a/packages/common/components/src/api/user.ts +++ b/packages/common/components/src/api/user.ts @@ -1,5 +1,5 @@ -import { ENDPOINT } from "../config"; import { client } from "./client"; +import { ENDPOINT } from "../config"; export interface IUser { regDt: string; diff --git a/packages/common/components/src/config/api.ts b/packages/common/components/src/config/api.ts index 6d1f59655..715f969d4 100644 --- a/packages/common/components/src/config/api.ts +++ b/packages/common/components/src/config/api.ts @@ -3,6 +3,9 @@ import { PROXY_HOST } from "./env"; export const BASE_URL = `${PROXY_HOST}/server`; export const ENDPOINT = { + CMS_SERVICE: { + MENU_ROLES: "/cms-service/api/v1/menu-roles", + }, USER_SERVICE: { USERS: "/user-service/api/v1/users", }, diff --git a/packages/common/components/src/hooks/use-mobile.tsx b/packages/common/components/src/lib/use-mobile.tsx similarity index 100% rename from packages/common/components/src/hooks/use-mobile.tsx rename to packages/common/components/src/lib/use-mobile.tsx diff --git a/packages/common/components/src/ui/collapsible/index.tsx b/packages/common/components/src/ui/collapsible/index.tsx new file mode 100644 index 000000000..a23e7a281 --- /dev/null +++ b/packages/common/components/src/ui/collapsible/index.tsx @@ -0,0 +1,9 @@ +import * as CollapsiblePrimitive from "@radix-ui/react-collapsible" + +const Collapsible = CollapsiblePrimitive.Root + +const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger + +const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent + +export { Collapsible, CollapsibleTrigger, CollapsibleContent } diff --git a/packages/common/components/src/ui/header/index.tsx b/packages/common/components/src/ui/header/index.tsx index 55bca0be6..cbeb95058 100644 --- a/packages/common/components/src/ui/header/index.tsx +++ b/packages/common/components/src/ui/header/index.tsx @@ -20,7 +20,7 @@ export function Header({ viewOnly }: { viewOnly?: boolean }) { }); return ( -
+
diff --git a/packages/common/components/src/ui/layout/base.tsx b/packages/common/components/src/ui/layout/base.tsx index 19b64511f..1f2ad58a3 100644 --- a/packages/common/components/src/ui/layout/base.tsx +++ b/packages/common/components/src/ui/layout/base.tsx @@ -1,6 +1,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { LNB } from "./lnb"; +import { SidebarProvider } from "../sidebar"; +import { LNB } from "../lnb"; import { Header } from "../header"; import { Footer } from "./footer"; @@ -11,18 +12,20 @@ const queryClient = new QueryClient(); export function BaseLayout({ children }: { children: React.ReactNode }) { return ( -
-
-
- -
-
- {children} + +
+
+
+ +
+
+ {children} +
+
-
-
+ ); } diff --git a/packages/common/components/src/ui/layout/lnb.tsx b/packages/common/components/src/ui/layout/lnb.tsx deleted file mode 100644 index f7d3a9be8..000000000 --- a/packages/common/components/src/ui/layout/lnb.tsx +++ /dev/null @@ -1,104 +0,0 @@ -export function LNB() { - return ( -