DirectSurface UIDirectSurface UI
开始使用
组件/导航和工作区组件

导航和工作区组件 / COMPONENT

StatusBar

RenderStatusBar 是应用或工作区底部状态栏。它按 left/right 分组展示短文本、徽标、分隔符和自定义 child,适合连接状态、当前用户、任务进度、坐标、选中数量、版本号等低干扰信息。

文档 READY示例 1
PUBLIC APIRenderStatusBar

FUNCTION EXPLORER

可运行示例与完整源码。

这里始终保留组件的主运行入口;文档中的示例用于补充具体功能说明。

LIVE EXAMPLE STATUS BAR
全屏
正在启动 DirectSurface UI 运行时…

StatusBar 状态栏

通用布局能力RenderStatusBar 实例统一支持 widthheight、min/max、margin 和槽位对齐;状态项分组和内部间距仍由状态栏配置管理。详见组件通用布局属性

RenderStatusBar 是应用或工作区底部状态栏。它按 left/right 分组展示短文本、徽标、分隔符和自定义 child,适合连接状态、当前用户、任务进度、坐标、选中数量、版本号等低干扰信息。

LIVE CANVAS可运行组件示例
ON-DEMAND RUNTIME交互式示例将在进入视区时启动避免文档首屏同时初始化多个 Canvas Runtime

API 总览

import {  RenderProgressBar,  RenderStatusBar,  type BadgeAppearance,  type BadgeStatus,  type StatusBarAlign,  type StatusBarGroup,  type StatusBarItem,  type StatusBarTextTone,} from 'ds-ui'
API 类型 用途
RenderStatusBar class 底部状态栏,管理左右分组、可见项、文本压缩和自定义 child。
StatusBarGroup type 状态栏分组,包含 idalignvisibleitems
StatusBarItem type 状态栏项联合类型,支持 text、badge、separator、custom。
StatusBarAlign type 分组对齐方向:leftright
StatusBarTextTone type 文本语气色。
BadgeStatus / BadgeAppearance type badge 项的状态和视觉样式。

最小装配顺序是:准备 StatusBarGroup[],创建 RenderStatusBar({ groups })。需要动态替换状态时优先调用 setGroups(),自定义 child 的 parent 和 dispose 由状态栏管理。

何时使用

使用 StatusBar:

  • 应用底部需要长期展示低优先级状态。
  • 左侧显示上下文、选择数量、坐标,右侧显示连接、版本、用户或任务状态。
  • 需要把进度条、短 badge 或自定义只读组件嵌入状态栏。

不要使用:

  • 重要错误或确认流程,使用 ModalNotification
  • 页面主导航或操作区,使用 NavigationMenu、Toolbar 或 PageHeader。
  • 大块文本、复杂表单或可滚动内容。

最小示例

import { RenderStatusBar } from 'ds-ui' const statusBar = new RenderStatusBar({  groups: [    {      id: 'left',      align: 'left',      items: [        { id: 'selection', kind: 'text', text: '已选择 3 项', tone: 'secondary' },      ],    },    {      id: 'right',      align: 'right',      items: [        { id: 'sync', kind: 'badge', value: '在线', status: 'success' },      ],    },  ],})

构造参数

new RenderStatusBar(options?)options

参数 类型 默认值 说明
groups StatusBarGroup[] [] 初始分组。构造时会复制数组,并把 custom 项的 child 接入状态栏管理。

options 可以省略,此时创建空状态栏,后续通过 addGroup()setGroups()clearGroups() 管理内容。运行时替换 groups 时优先用 setGroups(groups),不要直接修改 groups getter 返回的只读数组。

自定义进度项

import { RenderProgressBar, RenderStatusBar } from 'ds-ui' const importProgress = new RenderProgressBar({  value: 0.42,  label: '导入中',  height: 14,}) const statusBar = new RenderStatusBar({  groups: [{    id: 'tasks',    align: 'right',    items: [      { id: 'separator', kind: 'separator' },      { id: 'import-progress', kind: 'custom', child: importProgress },    ],  }],})

custom 项的 child 会成为 StatusBar 的内容子节点。移除 group 或替换 groups 时,旧 child 会解除 parent;StatusBar dispose 时会 dispose 当前 custom children。

分组和项目

StatusBarGroup

字段 类型 说明
id string 分组稳定标识。
align StatusBarAlign leftright
visible boolean 设为 false 时整组隐藏。
items StatusBarItem[] 分组内项目。

StatusBarItemkind 支持:

kind 字段 说明
text idtexttone?visible? 短文本状态。左侧空间不足时会优先压缩较长文本。
badge idvalue?status?appearance?dot?max?visible? 徽标状态。
separator idvisible? 垂直分隔线。
custom idchildvisible? 自定义只读 child。

属性和方法

API 类型 / 返回值 说明
groups readonly StatusBarGroup[] 当前分组。
addGroup(group) void 追加分组并请求布局。
removeGroup(id) void 按 id 删除分组。
setGroups(groups) void 替换全部分组,并同步 custom children。
clearGroups() void 清空分组。
itemRect(id) Rect | null 返回已布局项的本地矩形。
debugState() object 返回可见左右分组和可见 item id。
dispose() void dispose 当前 custom children 并释放自身。

布局和尺寸

  • 状态栏高度来自主题。
  • 左右分组分别贴左、贴右,中间保留 section gap。
  • 右侧分组优先保留完整宽度。
  • 空间不足时,左侧较长 text item 会被压缩并裁剪绘制。
  • badge、separator、custom item 不会自动压缩。
  • 状态栏不提供滚动,也不换行。

交互边界

StatusBar 是只读展示组件,本身不处理点击、键盘或焦点导航,也不触发 onChange 类回调。需要可点击状态项时,应把可交互控件作为 custom child 放入状态栏,并由该 child 自己处理鼠标、键盘和焦点。

相关组件