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: ( + toggle + ), + label: 'VORKOUT', + style: { fontSize: '20px' }, + }, + { + key: '/process-diagram', + icon: ( + process diagram + ), + label: 'Схемы процессов', + }, + { + key: '/running-processes', + icon: ( + running processes + ), + 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: settings, + 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 ( - {menuItems} - + 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' }} >