Steps 步骤
示例
样式
可供选用的 ui
属性值:s
/ m
/ dot
/ vertical
/ label-vertical
。
stateless
属性可用于切换到纯展示的无状态样式。
3
Step 3
注册成功
dot
样式需要搭配 label-vertical
或 vertical
布局使用。
<template>
<article>
<section class="settings">
<veui-label>
Current step <veui-number-input
v-model="current"
ui="s"
:min="1"
:max="steps.length"
:step="1"
/>
</veui-label>
<veui-radio-button-group
v-model="style"
ui="s"
:items="styles"
/>
<veui-radio-button-group
v-model="size"
ui="s"
:items="sizes"
/>
<veui-radio-button-group
v-model="direction"
ui="s"
:items="directions"
/>
<veui-checkbox
v-model="stateless"
ui="s"
>
Stateless
</veui-checkbox>
</section>
<section>
<veui-steps
:ui="ui"
:steps="steps"
:current="current - 1"
:stateless="stateless"
/>
</section>
</article>
</template>
<script>
import { Steps, Label, NumberInput, RadioButtonGroup, Checkbox } from 'veui'
export default {
components: {
'veui-steps': Steps,
'veui-label': Label,
'veui-number-input': NumberInput,
'veui-radio-button-group': RadioButtonGroup,
'veui-checkbox': Checkbox
},
data () {
return {
current: 1,
size: 'm',
direction: '',
style: 'normal',
sizes: [
{
label: 's',
value: 's'
},
{
label: 'm',
value: 'm'
}
],
stateless: false,
directions: [
{
label: 'vertical',
value: 'vertical'
},
{
label: 'label-vertical',
value: 'label-vertical'
},
{
label: 'default',
value: ''
}
],
styles: [
{
label: 'normal',
value: 'normal'
},
{
label: 'dot',
value: 'dot'
}
],
steps: [
{ label: 'Step 1', desc: '填写信息' },
{ label: 'Step 2', desc: '验证身份' },
{ label: 'Step 3', desc: '注册成功' }
]
}
},
computed: {
ui () {
return [
this.style,
this.size,
this.style === 'dot' && this.direction === ''
? 'label-vertical'
: this.direction
].join(' ')
}
}
}
</script>
<style lang="less" scoped>
.settings {
display: flex;
margin-bottom: 32px;
gap: 16px;
align-items: center;
}
</style>
步骤状态
可以通过设置 steps
属性数据项的 status
自动值定义步骤状态,若步骤出错,可设置为 error
。
Current step
3
Step 3
注册成功
<template>
<article>
<section>
<h4>Current step</h4>
<veui-number-input
v-model="current"
:min="1"
:max="steps.length"
:step="1"
/>
</section>
<section>
<veui-steps
:steps="steps"
:current="current - 1"
/>
</section>
</article>
</template>
<script>
import { Steps, NumberInput } from 'veui'
export default {
components: {
'veui-steps': Steps,
'veui-number-input': NumberInput
},
data () {
return {
current: 2,
steps: [
{ label: 'Step 1', desc: '填写信息' },
{ label: 'Step 2', desc: '验证身份', status: 'error' },
{ label: 'Step 3', desc: '注册成功' }
]
}
}
}
</script>
<style lang="less" scoped>
h4 {
margin: 0 0 10px;
}
section {
margin-bottom: 10px;
}
section + section {
margin-top: 20px;
}
</style>
API
属性
名称 | 类型 | 默认值 | 描述 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ui | string | - | 预设样式。
| ||||||||||||
steps | Array | - | 步骤数据源。类型为 | ||||||||||||
current | number | - | 当前步骤的索引值。 | ||||||||||||
stateless | boolean | false | 是否启用无状态纯展示样式。 |
插槽
名称 | 描述 |
---|---|
default | 整个步骤项内容。 默认内容:序号/完成图标、步骤标题、描述等内容。 |
index | 序号部分内容,默认显示从 1 开始的序号,已完成的步骤显示完成图标,出错的步骤显示出错图标。位于 default 插槽内部,插槽参数同 default 插槽。 |
label | 步骤标题部分内容,默认显示 steps 中项目的 label 字段。位于 default 插槽内部,插槽参数同 default 插槽。 |
desc | 步骤描述部分内容,默认显示 steps 中项目的 desc 字段。位于 default 插槽内部,插槽参数同 default 插槽。 |
事件
名称 | 描述 |
---|---|
click | 任意步骤被点击后触发,回调参数为 (index: number, event: Event) 。其中 index 为被点击步骤的索引值,event 为相应的原生事件对象。 |
图标
名称 | 描述 |
---|---|
success | 已成功完成的步骤。 |
error | 出错的步骤。 |