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);