Toggle Group
切换按钮组把若干 Toggle 组合成一个单选或多选集合。下方预览由 pingo 引擎实时渲染——可以点按切换、用方向键在项间移动,并跟随站点主题切换明暗。
用法
import { createElement } from "@dopejs/pingo";
import { ToggleGroup, ToggleGroupItem } from "@dopejs/pingo-ui";
root.render(
createElement(ToggleGroup, {
type: "single",
defaultValue: ["center"],
onValueChange: (value) => console.log(value),
children: [
createElement(ToggleGroupItem, { value: "left", children: "左对齐" }),
createElement(ToggleGroupItem, { value: "center", children: "居中" }),
createElement(ToggleGroupItem, { value: "right", children: "右对齐" }),
],
}),
);
ToggleGroup 通过 context 向 ToggleGroupItem 发布选中集合,两者都必须用 createElement 以组件形式挂载。type: "single" 时新选择会清掉上一个;"multiple" 时逐项累加。
示例
多选
type="multiple" 允许同时按下多项,如文本格式工具栏。
Props
ToggleGroup
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
type |
"single" | "multiple" |
"single" |
单选清掉上一个选择;多选逐项累加 |
value |
readonly string[] |
— | 受控选中值集合 |
defaultValue |
readonly string[] |
[] |
非受控初始选中集合 |
onValueChange |
(value: readonly string[]) => void |
— | 选中集合变化回调 |
children |
PingoNode |
— | ToggleGroupItem 列表(必填) |
className |
string |
— | 追加在组件类名之后 |
ToggleGroupItem
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
value |
string |
— | 项值(必填) |
children |
string |
— | 项文本(必填) |
disabled |
boolean |
false |
禁用单项 |
className |
string |
— | 追加在组件类名之后 |
无障碍
组容器带 group 语义,各项继承 Toggle 的 button 语义与 on / off 语义值。键盘处理集中在组上:←/→ 把焦点移到相邻项,Enter/空格 切换当前项——项的增删不影响这套导航。