SegmentedControl Props
| 名称 | 类型 | 默认值 | 说明 |
|---|
modelValue | string | - | 当前选中分段的取值,必填,支持 v-model。与它相等的那个分段就是选中项。 |
label | string | - | 单选组的无障碍名称,写入 aria-label,不在页面上渲染,必填。 |
size | SegmentedControlSize | 'md' | 控件尺寸,决定每个分段的高度,可选 sm、md、lg。 |
layout | SegmentedControlLayout | 'hug' | 分段占用宽度的方式。hug 按内容取宽并受容器限制,标签过窄时截断;fill 让分段平均分摊容器宽度。 |
isDisabled | boolean | false | 是否禁用整个控件。所有分段都不能被选择,控件退出 Tab 顺序。 |
disabledMessage | string | - | 禁用原因,在悬停和键盘聚焦时以提示气泡显示。与 isDisabled 一起使用时,控件保持 aria-disabled 而不是完全不可聚焦,让原因能被键盘和辅助技术读到,选择仍然被阻止。请用它代替把禁用控件包进 Tooltip。 |
SegmentedControl 事件
| 名称 | 说明 |
|---|
update:modelValue | 选中项变化时触发,用于 v-model 的双向绑定。点击已经选中的分段不会触发。 |
change | 选中项变化时触发,适合在切换后执行加载数据等操作。 |
SegmentedControl Slots
| 名称 | 说明 |
|---|
default | 放置 SegmentedControlItem 的默认插槽,顺序即分段的显示顺序。 |
SegmentedControlItem Props
| 名称 | 类型 | 默认值 | 说明 |
|---|
value | string | - | 该分段的唯一取值,与控件的 v-model 比较,相等即为选中项,必填。 |
label | string | - | 分段名称,渲染为可见文字;隐藏标签时作为无障碍名称,必填。 |
isLabelHidden | boolean | false | 是否在视觉上隐藏标签,只显示图标。标签仍会写入 aria-label。 |
isDisabled | boolean | false | 是否禁用这单独一个分段。它仍占据原来的位置,但不能被选择,方向键和 Tab 顺序都会跳过它。 |
SegmentedControlItem Slots
| 名称 | 说明 |
|---|
icon | 显示在标签前的图标,通常是一个图标类或你自己的 SVG。它对辅助技术隐藏(分段自身已经提供了名称)。 |
原生属性
根元素为 div,每个分段为 button。
以下内容传入根元素:
- HTML 属性。
aria-* 属性(aria-label、aria-disabled、aria-describedby 由组件根据 label 和 isDisabled 推导,不可覆盖)。data-* 属性。class。style。
SegmentedControlItem 上的 class 会与组件自身的类名合并。role、aria-checked、aria-disabled、aria-label、tabindex 和 data-value 由组件计算(aria-label 只在 isLabelHidden 时写入 label),并覆盖同名的原生属性。