Files
aurora-admin/site/sources/mixednavigation/jsx.txt
T
aurora-admin c65a69c34e
Deploy to GitHub Pages / deploy (push) Failing after 16s
Regression / regression (push) Failing after 15m2s
feat(P4): precompute移植+app.js sources双向回填+回归1003/1003+验收体积/文件/data.json
2026-09-12 14:18:41 +08:00

53 lines
1.8 KiB
Plaintext

import React, { useState } from 'react';
import './MixedNavigation.css';
const DEFAULT_MENU = [
{ name: '工作台', items: [{ name: '概览', desc: '数据看板总览' }, { name: '待办', desc: '我的待处理任务' }, { name: '报表', desc: '统计报表入口' }] },
{ name: '系统管理', items: [{ name: '用户管理', desc: '用户增删改查' }, { name: '角色管理', desc: '角色与权限分配' }, { name: '菜单管理', desc: '导航菜单配置' }] },
{ name: '业务中心', items: [{ name: '订单', desc: '订单列表与详情' }, { name: '商品', desc: '商品上下架' }, { name: '库存', desc: '库存预警' }] }
];
export default function MixedNavigation({ menu = DEFAULT_MENU }) {
const [topIdx, setTopIdx] = useState(0);
const [sideIdx, setSideIdx] = useState(0);
const cur = menu[topIdx];
return (
<div className="aa-mixed">
<div className="aa-mixed-top">
{menu.map((m, i) => (
<div
key={i}
className={'aa-mixed-topitem' + (topIdx === i ? ' is-active' : '')}
onClick={() => {
setTopIdx(i);
setSideIdx(0);
}}
>
{m.name}
</div>
))}
</div>
<div className="aa-mixed-body">
<div className="aa-mixed-side">
{cur.items.map((it, i) => (
<div
key={i}
className={'aa-mixed-sideitem' + (sideIdx === i ? ' is-active' : '')}
onClick={() => setSideIdx(i)}
>
{it.name}
</div>
))}
</div>
<div className="aa-mixed-content">
<h4>
{cur.name} / {cur.items[sideIdx].name}
</h4>
<div>{cur.items[sideIdx].desc}</div>
</div>
</div>
</div>
);
}