Sidebar侧边栏
查看源码components/sidebar.go应用导航#
点击菜单项切换调用方持有的当前页面。
rail := f.Slot().WidthPercent(42).MaxWidth(260).FillHeight()
items := tree.Sub(page, tree.Name("item"))
sidebar := components.BeginSidebar(canvas, theme, rail.Rect(), "Viva Studio")
sidebar.AddGroup("Workspace")
sidebar.AddMenuItem(components.SidebarMenuItem{
ID: items.At(0), Label: "Overview", Icon: "O", Active: selected == 0,
})
sidebar.AddMenuItem(components.SidebarMenuItem{
ID: items.At(1), Label: "Components", Icon: "C", Active: selected == 1,
})
if index, ok := canvas.ClickedIn(items); ok { selected = int(index) }浮动变体#
使用官方 Floating 表面与描边菜单项。
rail := f.Slot().WidthPercent(42).MaxWidth(260).FillHeight()
items := tree.Sub(page, tree.Name("item"))
sidebar := components.BeginSidebarWithOptions(canvas, theme, rail.Rect(), "Viva Studio",
components.SidebarOptions{Collapsible: components.SidebarFixed, Variant: components.SidebarFloating})
sidebar.AddGroup("Workspace")
sidebar.AddMenuItem(components.SidebarMenuItem{ID: items.At(0), Label: "Overview", Icon: "O"})
sidebar.AddMenuItem(components.SidebarMenuItem{
ID: items.At(1), Label: "Components", Icon: "C",
Variant: components.SidebarMenuOutline,
})图标折叠#
切换完整导航和桌面图标栏。
rail := f.Slot().FillHeight()
if collapsed {
rail.Width(theme.Metrics.ControlHeight + theme.Metrics.GapItem*2)
} else {
rail.WidthPercent(42).MaxWidth(260)
}
sidebar := components.BeginSidebarWithOptions(canvas, theme, rail.Rect(), "Viva Studio",
components.SidebarOptions{Collapsible: components.SidebarIcon, Collapsed: collapsed})
if f.Button(collapseID, "Toggle sidebar").Outline().Clicked() {
collapsed = !collapsed
}
sidebar.AddMenuItem(components.SidebarMenuItem{ID: tree.ID(page, "overview"), Label: "Overview", Icon: "O"})安装
将组件源码复制到自己的项目,直接修改。
go run ./cmd/viva add --out ./components/local sidebar源码组件用法#
此预览直接调用生产 Go 组件。稳定 ID、值与打开状态仍由应用持有;组件只负责绘制并声明交互语义。
- 标题旁的源码链接列出了全部选项与视觉决策。
- 请使用原生命令验证系统文本、焦点、无障碍与平台集成。
- 浏览器预览验证共享布局和场景行为,不代表原生性能。
验证边界#
示例覆盖当前 API 的代表性状态,但不表示每个桌面后端都已完成真机验证。
键盘操作
Tab 在控件间移动;Ctrl/⌘ K 搜索组件。进入预览后,键盘事件由 Go 运行时处理。