diff --git a/client/src/components/SiderMenu.tsx b/client/src/components/SiderMenu.tsx
index a80bced..cada106 100644
--- a/client/src/components/SiderMenu.tsx
+++ b/client/src/components/SiderMenu.tsx
@@ -12,75 +12,75 @@ export default function SiderMenu({
selectedKey,
hangleMenuClick,
}: SiderMenuProps) {
- const menuItems = (
-
-
+ const menuItems = [
+ {
+ key: 'toggle',
+ icon: (
+
+ ),
+ label: 'VORKOUT',
+ style: { fontSize: '20px' },
+ },
+ {
+ key: '/process-diagram',
+ icon: (
+
+ ),
+ label: 'Схемы процессов',
+ },
+ {
+ key: '/running-processes',
+ icon: (
+
+ ),
+ label: 'Запущенные процессы',
+ },
+ !collapsed
+ ? {
+ key: 'divider',
+ label: ,
+ style: {
+ marginBottom: '-16px',
+ marginTop: '-4px',
+ cursor: 'default',
+ },
+ disabled: true,
}
- style={{ fontSize: '20px' }}
- >
- VORKOUT
-
-
-
- }
- >
- Схемы процессов
-
-
-
- }
- >
- Запущенные процессы
-
-
- {!collapsed && }
-
- }
- title="Настройки"
- expandIcon={false}
- >
-
- Учетные записи
-
-
- Справочник событий
-
-
- Конфигурация
-
-
-
- );
+ : null,
+ {
+ key: 'sub1',
+ icon:
,
+ label: 'Настройки',
+ className: 'no-expand-icon',
+ children: [
+ {
+ key: '/accounts',
+ label: 'Учетные записи',
+ style: { fontSize: '12px', paddingLeft: '52px' },
+ },
+ {
+ key: '/events-list',
+ label: 'Справочник событий',
+ style: { fontSize: '12px', paddingLeft: '52px' },
+ },
+ {
+ key: '/configuration',
+ label: 'Конфигурация',
+ style: { fontSize: '12px', paddingLeft: '52px' },
+ },
+ ],
+ },
+ ];
return (
+ items={menuItems}
+ />
);
}
diff --git a/client/src/index.css b/client/src/index.css
index ee20a4e..46693ff 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -25,3 +25,11 @@ code {
border: none;
color: #548d10;
}
+
+.sider {
+ background-color: #f2f2f2;
+}
+
+.no-expand-icon .ant-menu-submenu-arrow {
+ display: none !important;
+}
diff --git a/client/src/pages/MainLayout.tsx b/client/src/pages/MainLayout.tsx
index 604e343..2933a89 100644
--- a/client/src/pages/MainLayout.tsx
+++ b/client/src/pages/MainLayout.tsx
@@ -16,22 +16,39 @@ export default function MainLayout() {
const [collapsed, setCollapsed] = useState(false);
const [selectedKey, setSelectedKey] = useState('1');
+ const [width, setWidth] = useState('15%');
+ const [collapsedWidth, setCollapsedWidth] = useState(50);
+
+ const calculateWidths = () => {
+ const windowWidth = window.innerWidth;
+ const expanded = Math.min(Math.max(windowWidth * 0.15, 180), 240);
+ const collapsed = Math.max(windowWidth * 0.038, 50);
+ setWidth(expanded);
+ setCollapsedWidth(collapsed);
+ };
+
+ useEffect(() => {
+ calculateWidths();
+ window.addEventListener('resize', calculateWidths);
+ return () => window.removeEventListener('resize', calculateWidths);
+ }, []);
+
useEffect(() => {
if (location.pathname === '/') {
navigate('/process-diagram');
}
- }, [location.pathname]);
-
- useEffect(() => {
setSelectedKey(location.pathname);
- });
+ }, [location.pathname]);
function hangleMenuClick(e: any) {
const key = e.key;
- if (key === '0') {
+ if (key === 'toggle') {
setCollapsed(!collapsed);
return;
}
+ if (key === 'divider') {
+ return;
+ }
setSelectedKey(key);
navigate(key);
@@ -40,14 +57,14 @@ export default function MainLayout() {
return (
setCollapsed(value)}
theme="light"
- width={'15%'}
- collapsedWidth={'3.8%'}
+ width={width}
+ collapsedWidth={collapsedWidth}
trigger={null}
- style={{ backgroundColor: '#f2f2f2' }}
>