时间线 timeline
数据展示组件。三层同源:无头内核给出解剖与状态机,Vue 组件与自定义元素只是它的两层外壳,行为完全一致。
示例
基础用法
一条竖向的事件流:每条一个圆点,圆点之间连一截线,末条的线自动收掉
- 订单已创建下单来源:网页端
- 已发货承运商已揽收
- 已签收本人签收
逐条语气
tone 写在条目上,只给这一条的圆点上色;不写 tone 的条目是中性圆点
- 收到请求队列长度 3
- 开始构建拉取依赖
- 两条依赖有告警已按锁文件继续
- 单元测试失败3 个用例未通过
- 重跑后通过产物已上传
内容在哪一侧
placement 决定内容落在线的哪一侧;alternate 是逐条交替,线走中间
默认(内容在结束侧)
- 立项需求评审通过
- 开发三个迭代
- 上线灰度两周
start(内容在起始侧)
- 立项需求评审通过
- 开发三个迭代
- 上线灰度两周
alternate(逐条交替)
- 立项需求评审通过
- 开发三个迭代
- 上线灰度两周
横排
orientation="horizontal" 把事件从左往右摆,连线随之转成横的一条
- 内测
- 公测
- 商业化
- 海外版
尺寸
size 换的是圆点直径、条目间距与字号,不传 size 即默认档
小
- 提交12 个文件
- 合并两条评审意见
默认
- 提交12 个文件
- 合并两条评审意见
大
- 提交12 个文件
- 合并两条评审意见
产物
| 层 | 值 |
|---|---|
| 自定义元素 | <xh-timeline> |
| Vue 组件 | XhTimelineConnector XhTimelineContent XhTimelineDescription XhTimelineIndicator XhTimelineItem XhTimelineRoot XhTimelineTime XhTimelineTitle |
| 状态机 | 无,connect 直接由 props 算属性 |
| 皮肤 | @xihan-ui/styles/timeline.css |
解剖
部件名即 data-part 属性值,也是皮肤的选择器。加粗的是必备部件,不渲染它组件不工作(Web Components 适配器会在诊断通道上报 wc.missing-part)。
data-scope="timeline":root · item · indicator · connector · content · title · description · time
Props
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
orientation | Orientation | 事件排列方向:vertical 自上而下、horizontal 自起点向终点,缺省 vertical。 | |
placement | TimelinePlacement | 内容在线的哪一侧:start / end / alternate,不写则内容落在结束侧。 | |
size | Size | 尺寸:sm / md / lg,决定圆点直径、条目间距与字号。 |
connect API
connect 产出的对象。getXxxProps() 铺到对应部件的宿主元素上,其余是可读状态与操作入口。
| 成员 | 类型 | 说明 |
|---|---|---|
getRootProps | () => T['element'] | |
getItemProps | () => T['element'] | |
getIndicatorProps | (props: TimelineItemProps) => T['element'] | 圆点的语气取自它所属的条目。 |
getConnectorProps | () => T['element'] | |
getContentProps | () => T['element'] | |
getTitleProps | () => T['element'] | |
getDescriptionProps | () => T['element'] | |
getTimeProps | () => T['element'] |
键盘
规格出处:W3C APG
无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。
