SxNavMenu UI 设计规范

自动生成时间: 2026-02-04 组件路径: src/NextUI.Blazor/Components/SxNavMenu.razor

1. 组件概述

  • 组件包含 6 个参数,0 个回调,3 个公开方法。
  • 内部组合组件:SxButton, SxIcon, SxNavMenuActionArgs, SxPopover, SxSearch。
  • 依赖注入: NavigationManager NavigationManager, INextUILocalizer L。

2. 组件模式

模式 条件 说明
条件渲染 Collapsible && ExpanderPosition == NavMenuExpanderPosition.Bottom 影响局部渲染块
条件渲染 ShowTopExpander 影响局部渲染块
条件渲染 ShowFilter 影响局部渲染块
条件渲染 ExpanderContent != null 影响局部渲染块

3. 表单字段

字段组件 绑定
- -

4. 操作按钮

外观 动作/链接 禁用条件
@(IsFiltering ? ButtonAppearance.Accent : ButtonAppearance.Stealth) ToggleFilterEnabled -
@(IsFiltering ? ButtonAppearance.Accent : ButtonAppearance.Stealth) ToggleFilterEnabled -
@(IsFiltering ? ButtonAppearance.Accent : ButtonAppearance.Stealth) ToggleFilterEnabled -

5. 验证规则

未检测到显式验证标记。

6. 状态与流程

内部状态字段: 未检测到明确状态字段。

7. 公共 API

7.1 Parameters

参数 类型 默认值 说明
Orientation Orientation Orientation.Vertical
Expanded bool true
ShowFilter bool true Whether to show the filter/search box. Default is true.
ExpanderPosition NavMenuExpanderPosition NavMenuExpanderPosition.Top Position of the expander button (Top, Bottom, or None).
TextOverflow NavMenuTextOverflow NavMenuTextOverflow.Truncate Text overflow behavior for menu items. Truncate: single line with ellipsis (default). Wrap: allow text to wrap to multiple lines.
MaxTextLines int 2 Maximum number of lines when TextOverflow is Wrap. Text exceeding this limit will be truncated with ellipsis. Default is 2.

7.2 Public Methods

  • ExpandAsync: Task
  • CollapseAsync: Task
  • ToggleAsync: Task

7.3 Events/Callbacks

无回调事件。

8. 典型使用场景 (Use Cases)

8.1 UC-1: 基础渲染

  1. 组件渲染默认状态
  2. 关键区域可见
  3. 无异常

9. 状态不变性测试 (State Invariants)

  • 同一参数重复设置不应触发非必要 UI 改变
  • 与表单字段无关的操作不应影响字段值

10. 测试检查点

  • 条件 Collapsible && ExpanderPosition == NavMenuExpanderPosition.Bottom 下渲染正确
  • 条件 ShowTopExpander 下渲染正确
  • 条件 ShowFilter 下渲染正确
  • 条件 ExpanderContent != null 下渲染正确

11. Fluent UI 对齐

对应 Fluent UI Blazor 组件:FluentNavMenu 源码:src/Core/Components/NavMenu/FluentNavMenu.razor(.cs) 对齐要点:

  • Expanded 控制折叠与否,折叠时宽度固定为 40px。
  • Collapsible 控制是否显示折叠/展开;支持 Enter/ArrowRight/ArrowLeft 键盘切换。
  • CollapsedChildNavigation 决定折叠时子项导航是否弹出。 关键参数/事件:
  • ExpandedExpandedChangedCollapsibleCollapsedChildNavigationWidthMargin。 差异与扩展:
  • SxNavMenu 自定义折叠触发(CustomToggle)需与 Expanded 状态保持一致。

12. 参考文档摘要

  • docs/plans/2026-02-03-workbench-restructure-implementation.md: NextUI Workbench 重构实施计划 > For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
  • docs/components/SxUserBar.md: SxUserBar (用户栏) - Implemented
  • docs/components/SxNavMenu.md: SxNavMenu (导航菜单) 用于应用侧边栏的树形导航菜单组件,对齐 Microsoft Fluent UI Blazor NavMenuTree 的结构与行为。

13. 规范合规检查

  • 可能存在硬编码样式: 存在 px 硬编码

14. 变更历史

  • 2026-02-04: 深度分析填充规范。