Skip to content

Radio Group 单选组 ​

基于 reka-ui 的 RadioGroup 原语构建的新粗野主义风格单选组,用于单项选择。

预览 ​

Preview
默认
次要
危险

自定义 aria-label

默认
舒适
紧凑

安装 ​

pnpm dlx brutx-vue@latest add radio-group

用法 ​

vue
<script setup>
import { ref } from 'vue'
import { RadioGroup, RadioGroupItem, Label } from 'brutx-ui-vue'

const selected = ref('comfortable')
</script>

<template>
    <RadioGroup v-model="selected">
        <div class="flex items-center gap-3">
            <RadioGroupItem value="default" />
            <Label for="default">Default</Label>
        </div>
        <div class="flex items-center gap-3">
            <RadioGroupItem value="comfortable" />
            <Label for="comfortable">Comfortable</Label>
        </div>
        <div class="flex items-center gap-3">
            <RadioGroupItem value="compact" />
            <Label for="compact">Compact</Label>
        </div>
    </RadioGroup>
</template>

可访问性标签 ​

通过 ariaLabel 为单选组提供可读名称,便于屏幕阅读器识别分组用途。当没有可见的分组标题(如 Label 或字段集标题)时尤为有用。

vue
<script setup>
import { ref } from 'vue'
import { RadioGroup, RadioGroupItem } from 'brutx-ui-vue'

const density = ref('comfortable')
</script>

<template>
    <RadioGroup v-model="density" aria-label="布局密度">
        <div class="flex items-center gap-3">
            <RadioGroupItem value="default" />
            <span class="text-sm font-bold">默认</span>
        </div>
        <div class="flex items-center gap-3">
            <RadioGroupItem value="comfortable" />
            <span class="text-sm font-bold">舒适</span>
        </div>
        <div class="flex items-center gap-3">
            <RadioGroupItem value="compact" />
            <span class="text-sm font-bold">紧凑</span>
        </div>
    </RadioGroup>
</template>

变体 ​

变体说明
default默认风格,选中时使用 Primary(珊瑚色)背景
secondary选中时使用 Secondary 背景
accent选中时使用 Accent 背景
success选中时使用 Success 背景
danger选中时使用 Danger 背景
vue
<template>
    <RadioGroupItem value="option" variant="danger" />
</template>

尺寸 ​

尺寸说明
sm小尺寸(20 × 20)
default默认尺寸(24 × 24)
lg大尺寸(28 × 28)

子组件 ​

组件说明
RadioGroup根容器,管理选中状态和键盘导航
RadioGroupItem单选项,每个选项对应一个可选值

API 参考 ​

RadioGroup

RadioGroup — 属性
名称类型默认值说明
modelValue
string | undefined
—
当前选中的字符串值,可通过 v-model 受控同步。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

RadioGroup.vue:7

packages/ui/src/components/radio-group/RadioGroup.vue

name
string | undefined
—
传递给单选组原语的表单字段名称。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

RadioGroup.vue:8

packages/ui/src/components/radio-group/RadioGroup.vue

disabled
boolean | undefined
—
禁用组内所有单选项。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

RadioGroup.vue:9

packages/ui/src/components/radio-group/RadioGroup.vue

orientation
"vertical" | "horizontal" | undefined
—
设置选项排列方向;vertical 为纵向,horizontal 为可换行的横向排列,默认纵向。
详情

声明类型

"vertical" | "horizontal" | undefined

字面量

  • "horizontal"
  • "vertical"

默认值详情

未声明默认值
—

来源

RadioGroup.vue:10

packages/ui/src/components/radio-group/RadioGroup.vue

class
string | undefined
—
追加到单选组根容器的 CSS 类。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

RadioGroup.vue:11

packages/ui/src/components/radio-group/RadioGroup.vue

ariaLabel
string | undefined
—
为整个单选组提供屏幕阅读器可读的无障碍名称。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

RadioGroup.vue:13

packages/ui/src/components/radio-group/RadioGroup.vue

RadioGroup — 事件
名称签名或类型说明
@update:modelValue
[value: string]
所选值变化时发出新字符串值,用于同步 v-model。
详情

声明类型

[value: string]

来源

RadioGroup.vue

packages/ui/src/components/radio-group/RadioGroup.vue

RadioGroup — 插槽
名称签名或类型说明
#default
{}
放置属于此组的 RadioGroupItem 子项。
详情

声明类型

{}

来源

RadioGroup.vue

packages/ui/src/components/radio-group/RadioGroup.vue

RadioGroupItem

RadioGroupItem — 属性
名称类型默认值说明
value
必填
string
—
此选项对应的字符串值;被选中时作为 RadioGroup 的 modelValue。
详情

声明类型

string

默认值详情

未声明默认值
—

来源

RadioGroupItem.vue:12

packages/ui/src/components/radio-group/RadioGroupItem.vue

disabled
boolean | undefined
false
禁用此选项;未禁用的其他组内选项仍可交互。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

RadioGroupItem.vue:13

packages/ui/src/components/radio-group/RadioGroupItem.vue

class
string | undefined
undefined
追加到单选项按钮根元素的 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

RadioGroupItem.vue:14

packages/ui/src/components/radio-group/RadioGroupItem.vue

variant
"accent" | "danger" | "default" | "secondary" | "success" | undefined
"default"
设置单选项及其选中指示器的颜色变体。
详情

声明类型

NonNullable<"default" | "secondary" | "success" | "danger" | "accent" | null | undefined> | undefined

字面量

  • "accent"
  • "danger"
  • "default"
  • "secondary"
  • "success"

默认值详情

解析值
"default"

来源

RadioGroupItem.vue:15

packages/ui/src/components/radio-group/RadioGroupItem.vue

size
"default" | "lg" | "sm" | undefined
"default"
设置单选按钮和选中指示图标的尺寸。
详情

声明类型

NonNullable<"default" | "lg" | "sm" | null | undefined> | undefined

字面量

  • "default"
  • "lg"
  • "sm"

默认值详情

解析值
"default"

来源

RadioGroupItem.vue:16

packages/ui/src/components/radio-group/RadioGroupItem.vue

可访问性 ​

  • 键盘操作:方向键在单选项之间导航,空格键选中当前聚焦项
  • ARIA 属性:选中项使用 aria-checked="true",支持通过 ariaLabel 为分组提供可读名称
  • 焦点管理:Tab 键聚焦到选中项或第一项,方向键在选项间循环移动焦点

蛮力铸就。