Stepper 步骤面板
步骤驱动的分步内容面板一体机:头部步骤条(可点击跳步)+ 联动内容面板(仅当前步显示),适合向导 / 表单分步 / 结账流程等场景。双组件配套使用:oas-stepper 管步骤头、oas-stepper-panel 管内容、value 关联显示(同构 oas-tabs / oas-tab-panel 模式)。
基础用法
steps 传步骤数组({title, description?, icon?, disabled?, status?},语义对齐 oas-steps),内容面板按序号 value 关联,current 指定当前步。
基础用法
第一步:填写收货地址与订单信息。
第二步:选择支付方式完成付款。
第三步:等待卖家发货并确认收货。
可点击跳步
clickable 默认开启:点击任意可点步骤即跳转(整步可点,键盘 Enter/Space 可达),点击派发 oas-change(detail 为 { index })并写回 current。
点击步骤切换
订单信息填写区
支付方式选择区
发货进度区
线性模式(禁跳步)
linear 开启后仅允许跳转 index <= current 的步骤:已过步骤可回跳、当前步可停留、未来步骤禁点(aria-disabled + 视觉弱化,点击/键盘静默)。
linear 禁跳未完成步
资料填写表单
实名认证流程
开通成功提示
禁用步骤
每步的 disabled 字段禁用该步:不可点击、键盘跳过、视觉弱化;显式 status 仍正常显示。
disabled 步骤
证件上传区
人脸核验区
审核结果区(禁用中)
状态标记
每步的 status 字段显式指定状态:finish 完成(成功色 + ✓)/ error 错误(危险色 + ✕);缺省按 current 推导(前序 finish / 当前 process / 后续 wait)。
finish / process / error / wait
资源下载完成
数据解析中…
解析异常,请重试
流程结束
竖向排列
direction="vertical" 将步骤头转为纵向排列(指示器在左、标题在右、连接线走左侧),内容面板仍位于下方。
竖向步骤
资料表单
证件上传
审核结果
面板联动(受控 current)
current 双向:点击跳步写回 current,外部设置 current 即时同步 aria-selected 与面板显隐。prev/next 按钮不内置,宿主用按钮设置 current 即可。
外部按钮控制跳步
自定义步骤内容
每步的 icon 字段(图标注册表键)在指示器位置渲染图标(显式 icon 优先于状态默认图标);面板内容走默认插槽,可自由组合任意内容。
图标步骤 + 富内容面板
键盘与无障碍
步骤头为 role="tablist" + 每步 role="tab"(aria-selected / aria-disabled 同步),面板为 role="tabpanel" + aria-labelledby 关联。roving tabindex:Tab 进入落在当前步,方向键在步骤间移动焦点(横向 ←/→、纵向 ↑/↓,禁步跳过)、Home/End 跳首末,Enter/Space 激活跳步。
键盘导航
焦点落在第一步,按 → 或 Enter 体验键盘导航。
第二步内容
第三步内容
第四步内容
尺寸档位
size 五档(xs / small / medium / large / xl)调节标题字号密度;非法值回落 medium 并在 dev 下告警。
size 五档
API
oas-stepper
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
clickable | 步骤可点击跳步(默认 true;clickable="false" 关闭:点击/键盘静默,键盘仍可移动焦点) | string | true |
current | 当前步骤索引(0 起,双向:点击跳步写回、外部设置即时同步 aria-selected 与面板显隐);非法值回落 0,越界夹取 | string | 0 |
direction | 方向:horizontal(默认,横向排列)/ vertical(纵向排列,指示器左/标题右) | string | horizontal |
linear | 线性模式:仅允许跳转 index <= current 的步骤(未来步 aria-disabled + 视觉弱化,点击/键盘静默) | boolean | — |
size | 尺寸档位:xs/small/medium/large/xl(标题字号密度;非法值回落 medium + dev 告警,同值去重) | string | medium |
steps | 步骤数据 JSON [{ title, description?, icon?, disabled?, status? }](语义对齐 oas-steps 的 StepItem 减去面板无关项);非法/空回落 [] | StepperStep[] | string | [] |
事件
| 事件 | 说明 |
|---|---|
oas-change | 可点击跳步时触发(点击步骤 / 键盘 Enter/Space);detail: { index }(0 起,bubbles + composed,写回 current) |
插槽
| 名称 | 说明 |
|---|---|
| 默认 | 内容面板投影区(<oas-stepper-panel> 直接子元素);面板按 value 关联步骤序号,仅 current 匹配者可见 |
oas-stepper-panel
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
value | 关联步骤序号字符串(如 value="0");仅 current 匹配的面板可见(hidden 由 oas-stepper 驱动) | — | — |
插槽
| 名称 | 说明 |
|---|---|
| 默认 | 面板内容(默认插槽) |