Skip to content

Timeline

Timeline 用于按时间顺序展示事件、审批、物流、发布记录等信息。组件采用 MUI Timeline 的结构模型:Timeline.ItemTimeline.OppositeContentTimeline.SeparatorTimeline.DotTimeline.ConnectorTimeline.Content;同时补充本库常用的 items 数据式 API、sx 样式入口,以及 pending / reverse 等状态展示能力。

Basic

最小可用示例使用 items 渲染事件列表。oppositeContent 通常放时间、阶段或来源信息,content 放主要内容。

常见场景

位置与交替排布

position 对齐 MUI 命名,支持 leftrightalternatealternate-reverse。单个 item.position 可覆盖根组件位置。

组合式 API

复杂节点可使用组合式 API,显式控制 Dot、Connector、Content 与 OppositeContent。

处理中与倒序

pending 用于追加一个处理中节点;reverse 会反转数据式列表顺序,适合“最新在上”的记录流。

SX Custom

sx 可用于根节点样式,也可以通过 .timeline-content.timeline-dot 等内部类定制局部。

Usage

tsx
import { Timeline } from "@ldkj/web-ui";

export function Example() {
  return (
    <Timeline
      position="alternate"
      items={[
        {
          oppositeContent: "09:30",
          content: "创建采购申请",
        },
        {
          oppositeContent: "10:15",
          content: "部门负责人审批通过",
          color: "success",
        },
        {
          oppositeContent: "11:40",
          content: "等待财务复核",
          color: "warning",
        },
      ]}
      pending="财务正在处理"
    />
  );
}

组合式写法:

tsx
import { Timeline } from "@ldkj/web-ui";

export function Example() {
  return (
    <Timeline position="right">
      <Timeline.Item>
        <Timeline.OppositeContent>09:30</Timeline.OppositeContent>
        <Timeline.Separator>
          <Timeline.Dot color="success" />
          <Timeline.Connector />
        </Timeline.Separator>
        <Timeline.Content>审批通过</Timeline.Content>
      </Timeline.Item>
    </Timeline>
  );
}

API

Timeline

属性说明类型默认值
items数据式事件配置TimelineItemConfig[]-
position内容相对时间轴的位置"left" | "right" | "alternate" | "alternate-reverse""right"
size尺寸密度"sm" | "md" | "lg""md"
variant默认节点样式"filled" | "outlined" | "soft""filled"
color默认节点颜色TimelineColor"primary"
reverse是否反转 items 渲染顺序booleanfalse
pending追加处理中节点boolean | React.ReactNodefalse
pendingDot自定义处理中节点 DotReact.ReactNode-
hideLastConnector是否隐藏最后一个连接线booleantrue
renderDot数据式 API 下自定义 Dot(item, state) => React.ReactNode-
renderItem数据式 API 下自定义整项渲染(item, state, node) => React.ReactNode-
className / class根节点类名string-
style根节点样式React.CSSProperties-
sx根节点 sx 样式SxProps-
...rest原生 ol 属性透传React.ComponentPropsWithoutRef<"ol">-

TimelineItemConfig

属性说明类型
key列表唯一标识React.Key
oppositeContent轴线另一侧内容,常用于时间或阶段React.ReactNode
content / children主内容React.ReactNode
dot完整自定义 Dot 节点React.ReactNode
iconDot 内部图标或文本React.ReactNode
color覆盖当前节点颜色TimelineColor
variant覆盖当前节点样式TimelineVariant
position覆盖当前节点位置"left" | "right"
loading当前节点 Dot 显示加载态boolean
disabled降低当前节点可用性视觉boolean
hideConnector隐藏当前节点连接线boolean
itemProps透传给 Timeline.ItemTimelineItemProps
dotProps透传给 Timeline.DotTimelineDotProps
connectorProps透传给 Timeline.ConnectorTimelineConnectorProps
contentProps透传给 Timeline.ContentTimelineContentProps
oppositeContentProps透传给 Timeline.OppositeContentTimelineOppositeContentProps
separatorProps透传给 Timeline.SeparatorTimelineSeparatorProps

Compound API

子组件说明
Timeline.Item单个事件容器,渲染为 li
Timeline.OppositeContent时间轴另一侧内容
Timeline.SeparatorDot 与 Connector 的容器
Timeline.Dot时间节点,支持 colorvariantloading
Timeline.Connector节点之间的连接线
Timeline.Content主内容区域

行为规则 / 优先级

  1. items 存在时优先使用数据式渲染;否则渲染 children 组合式内容。
  2. item.position 优先级高于根组件 position
  3. item.color / item.variant 优先级高于根组件 color / variant
  4. renderDot 优先级高于 item.dotitem.icon 和默认 Dot。
  5. hideConnector 优先级高于 hideLastConnector
  6. pending 只影响 items 数据式渲染,会追加一个加载态节点;reverse 会连同 pending 节点一起反转。

A11Y

  • 根节点使用 ol,事件项使用 li,默认 aria-label="时间线"
  • Timeline.Dot 默认是装饰性元素;如果 Dot 内部传入有语义的图标或文本,应由业务侧补充可理解的文本内容。
  • 时间、阶段、来源等辅助信息建议放在 oppositeContent,不要只依赖颜色表达状态。

Notes

  • Timeline 只负责事件展示,不内置展开、筛选、分页或流程推进逻辑。
  • 需要流程状态控制、可点击步骤或线性跳转时优先使用 Stepper
  • 长文本建议保持 position="right";交替布局更适合短标题、短描述的时间轴。
  • 自定义颜色可以传 CSS 颜色值或 CSS 变量,例如 color="var(--ldkj-color-secondary)"