Skip to content

Sidebar 布局侧栏

应用级侧栏 RdSidebar;Logo / 用户区经插槽接入 RdLogo、RdSidebarUser。不依赖 vue-router,跳转与退出由业务处理。

基础用法 ​

#logo 放 RdLogo;#footer 放 RdSidebarUser 并监听 @logout。

RdSidebar ​

属性名说明类型默认值
collapsed是否折叠侧栏boolean—
groups导航分组(RdNavGroup[])RdNavGroup[]—
active-path当前高亮 path(由业务传入,通常等于 route.path)string''
show-collapse是否显示折叠按钮booleantrue
事件名说明类型
update:collapsed折叠状态变更(支持 v-model:collapsed)(value: boolean)
toggle-collapse点击折叠按钮—
select叶子菜单点击,回传 RdNavItem;跳转由业务处理(item: RdNavItem)
logo-clickLogo 区点击;首页跳转由业务处理()
插槽名说明
logoLogo 区(有槽才显示);作用域 collapsed;放 RdLogo
footer底部区;作用域 collapsed;可放 RdSidebarUser

RdSidebarUser ​

属性名说明类型默认值
collapsed侧栏折叠态booleanfalse
name用户显示名string—
role角色 / 副标题string''
avatarText头像文字;默认 name 首字string—
事件名说明类型
logout点击退出登录()

Peer 依赖 ​

包用途
element-plusElMenu / ElSubMenu / ElMenuItem
@lucide/vue折叠 / 退出图标;菜单 icon 也可传 Lucide

不需要 vue-router。业务在 @select 里 router.push,在 RdSidebarUser 的 @logout 里清登录态。

数据契约 ​

ts
interface RdNavItem {
  name: string
  icon?: Component
  path?: string
  external?: boolean
  badge?: number
  children?: RdNavItem[]
}

interface RdNavGroup {
  label: string
  items: RdNavItem[]
}

工具函数:getNavIndex / hasChildren / resolveActiveMenu / resolveMenuOpeneds。

与 RdListPageSidebar(列表页左栏树)不同,本组件是应用布局侧栏。