diff --git a/src/pages/ideContainer/index.tsx b/src/pages/ideContainer/index.tsx index 2e461df..5ff08e0 100644 --- a/src/pages/ideContainer/index.tsx +++ b/src/pages/ideContainer/index.tsx @@ -190,25 +190,6 @@ function IDEContainer() { identity={urlParams.identity} />
- -
- 子菜单区域 -
-
-
{/*顶部导航栏*/} = ({ onMenuSelect, selectedKey, identity }) => { const [menu, setMenu] = useState([]); + const [subMenuWidth, setSubMenuWidth] = useState(200); // 子菜单宽度状态 + const [isSubMenuCollapsed, setIsSubMenuCollapsed] = useState(false); // 子菜单收起状态 function getMenuData(): MenuItemType[] { switch (identity) { @@ -31,6 +34,36 @@ const SideBar: React.FC = ({ onMenuSelect, selectedKey, identity } } } + // 处理子菜单区域的拖拽调整大小 + const handleSubMenuResize = (e: MouseEvent, { width }: { width: number }) => { + setSubMenuWidth(width); + }; + + // 切换子菜单区域的收起/展开状态 + const toggleSubMenu = () => { + setIsSubMenuCollapsed(!isSubMenuCollapsed); + setSubMenuWidth(isSubMenuCollapsed ? 200 : 0); + }; + + // 处理菜单项点击事件 + const handleMenuItemClick = (item: MenuItemType) => { + console.log("item:",item); + // 如果点击的是当前已激活的菜单项,则切换子菜单的展开/收起状态 + if (selectedKey === `${item.key}`) { + toggleSubMenu(); + } + else { + // 如果点击的是其他菜单项,则展开子菜单(如果已收起) + if (isSubMenuCollapsed) { + setIsSubMenuCollapsed(false); + setSubMenuWidth(200); + } + } + + // 调用外部传入的菜单选择处理函数 + onMenuSelect?.({ currentPath: item.path, currentKey: `${item.key}` }); + }; + useEffect(() => { setMenu(getMenuData()); }, [identity]); @@ -44,9 +77,7 @@ const SideBar: React.FC = ({ onMenuSelect, selectedKey, identity }
{ - onMenuSelect?.({ currentPath: item.path, currentKey: `${item.key}` }); - }} + onClick={() => handleMenuItemClick(item)} >
@@ -59,6 +90,25 @@ const SideBar: React.FC = ({ onMenuSelect, selectedKey, identity }
))}
+ +
+ 子菜单区域 +
+
); }; diff --git a/src/pages/ideContainer/style/sideBar.module.less b/src/pages/ideContainer/style/sideBar.module.less index a1915ae..71e73af 100644 --- a/src/pages/ideContainer/style/sideBar.module.less +++ b/src/pages/ideContainer/style/sideBar.module.less @@ -1,4 +1,6 @@ .sider { + display: flex; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.08); transition: all 0.3s ease-in-out; background-color: var(--color-bg-2);