组件 · 数据录入

RadioGroup 单选组

互斥单选表单控件组。

入口 @selrux/ui/radio-group · 源码 src/components/radio-group/index.ts · 4 个组件 · 发布状态 preview

使用建议

  • 避免:与 Checkbox 混用互斥语义
  • 限制:属性与导出以 @selrux/ui 对应子路径 d.ts/源码为准,禁止臆造

引入

tsx
import {
  RadioGroup,
  RadioGroupButton,
  RadioGroupItem,
  RadioGroupLabel,
} from '@selrux/ui/radio-group';

演练场

调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。

配送方式

代码演示

基础用法

RadioGroupItem 组合,name 用于表单提交。

配送方式

按钮样式

optionType="button",buttonStyle 为 outline / solid,options 配置式传入。

密度(outline)
密度(solid)

受控与校验

value / onValueChange 受控;required、invalid 标记校验状态;disabled 禁用整组;size;dir 方向。

发票类型
value = null(必选)

按钮样式

RadioGroupButton 的 value、label 与 disabled。

API

属性覆盖:示例用到 18 / 18 个自有属性(100%)

由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。

  • RadioGroup.form:原生 form 关联(外部 form id),无可见效果

RadioGroup

解析尺寸与按钮外观,并将 options 展开为 styled 项后再交给行为层。

属性说明类型默认值
name *写到所有原生 radio;必填且非空,禁止随机字段名。string-
form下传每个 input 的 form,而非只给外层 div。string-
defaultValue受控时禁止初始值。string | null-
dir同步 DOM 与左右方向键;未传时继承。"ltr" | "rtl"-
disabled下传所有 input;优先于单项 disabled。boolean-
value当前选中值;null 表示未选。string | null-
onValueChange用户选择新项时通知;同值、reset、prop 更新不调用。((value: string) => void)-
required原生 radio 组校验:至少有可校验成员且未选时阻止提交。boolean-
orientation排版与主要导航方向,默认 vertical。"horizontal" | "vertical"vertical
invalid组与项的无效状态;显式 aria-invalid 优先。boolean-
options-readonly RadioGroupOption[]-
size显式尺寸优先于 Provider,最终回退 md。"xs" | "sm" | "md" | "lg" | "xl" | "2xl"-
optionType配置模式下项外观;复合 Button 组忽略此项的 default。"button" | "default"-
buttonStyle按钮描边或填底;仅按钮外观生效。"outline" | "solid"-

另有 275 项原生属性与事件继承自 HTMLAttributes,原样透传。

RadioGroupButton

按钮皮项:隐藏系统圆点,由 CSS 绘制分段按钮外观。

属性说明类型默认值
value *选择标识与提交值;组内唯一非空字符串。string-
label与原生 input 同处一个 label;省略时须提供 ARIA 名称。ReactNode-
disabled本项禁用。boolean-
childreninput 不接受子节点。undefined-

另有 298 项原生属性与事件继承自 HTMLAttributes / InputHTMLAttributes,原样透传。

RadioGroupItem

圆形项:添加尺寸类与强调样式钩子。

属性说明类型默认值
value *选择标识与提交值;组内唯一非空字符串。string-
label与原生 input 同处一个 label;省略时须提供 ARIA 名称。ReactNode-
disabled本项禁用。boolean-
childreninput 不接受子节点。undefined-

另有 298 项原生属性与事件继承自 HTMLAttributes / InputHTMLAttributes,原样透传。

RadioGroupLabel

为组名添加静态类名。

属性说明类型默认值
children组名称内容。ReactNode-

另有 279 项原生属性与事件继承自 HTMLAttributes,原样透传。

导出类型:HeadlessGroupWithoutOptions、RadioGroupButtonComponent、RadioGroupButtonProps、RadioGroupButtonStyle、RadioGroupControlledProps、RadioGroupItemComponent、RadioGroupItemProps、RadioGroupLabelComponent、RadioGroupLabelProps、RadioGroupOption、RadioGroupOptionType、RadioGroupOrientation、RadioGroupProps、RadioGroupSize、RadioGroupUncontrolledProps、RadioGroupVisualProps

无障碍

摘自源码 JSDoc。

  • RadioGroup.dir:同步 DOM 与左右方向键;未传时继承。
  • RadioGroup.invalid:组与项的无效状态;显式 aria-invalid 优先。
  • RadioGroupButton.label:与原生 input 同处一个 label;省略时须提供 ARIA 名称。
  • RadioGroupItem.label:与原生 input 同处一个 label;省略时须提供 ARIA 名称。