工具栏
功能
- 完整的键盘导航。
安装
从命令行安装此组件。
$ npm add reka-ui结构
导入组件。
<script setup lang="ts">
import {
ToolbarButton,
ToolbarLink,
ToolbarRoot,
ToolbarSeparator,
ToolbarToggleGroup,
ToolbarToggleItem,
} from 'reka-ui'
</script>
<template>
<ToolbarRoot>
<ToolbarButton />
<ToolbarSeparator />
<ToolbarLink />
<ToolbarToggleGroup>
<ToolbarToggleItem />
</ToolbarToggleGroup>
</ToolbarRoot>
</template>API 参考
根组件
包含所有工具栏组件部分。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'div' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
dir | 'ltr' | 'rtl'适用时,组合框的阅读方向。 | |
loop | 布尔值当为 | |
orientation | 'horizontal' | 'vertical' | 'horizontal'工具栏的方向 |
| 数据属性 | 值 |
|---|---|
[data-orientation] | "垂直" | "水平" |
按钮
一个按钮项。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'button' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
disabled | 布尔值 |
| 数据属性 | 值 |
|---|---|
[data-orientation] | "垂直" | "水平" |
链接
一个链接项。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'a' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 |
切换组
一组可切换开/关的双状态按钮。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'div' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
defaultValue | AcceptableValue | AcceptableValue[]项的默认活动值。 当您不需要控制项的状态时使用。 | |
dir | 'ltr' | 'rtl'适用时,组合框的阅读方向。 | |
disabled | 布尔值当为 | |
loop | 布尔值当 | |
modelValue | AcceptableValue | AcceptableValue[]活动项的受控值。 当您需要控制项的状态时使用此项。可以通过 | |
name | string字段的名称。随其所属的表单一起作为名称/值对提交。 | |
orientation | 'vertical' | 'horizontal'组件的方向,决定了焦点如何移动: | |
required | 布尔值当为 | |
rovingFocus | 布尔值当 `false` 时,禁用使用箭头键在项目间导航。 | |
type | 'single' | 'multiple'确定一次可以选择“单个”或“多个”项。 此属性将覆盖从 |
| 事件触发 | 载荷 |
|---|---|
update:modelValue | [payload: AcceptableValue | AcceptableValue[]]当切换组件的值改变时调用的事件处理程序。 |
| 数据属性 | 值 |
|---|---|
[data-orientation] | "垂直" | "水平" |
切换项
组中的一个项。
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'div' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 | |
disabled | 布尔值当为 | |
值* | AcceptableValue切换组项的字符串值。切换组中的所有项都应使用唯一值。 |
| 数据属性 | 值 |
|---|---|
[data-state] | "on" | "off" |
[data-disabled] | 禁用时存在 |
[data-orientation] | "垂直" | "水平" |
分隔符
用于在工具栏中视觉上分隔各项
| 属性 | 默认 | 类型 |
|---|---|---|
as | 'div' | AsTag | Component此组件应渲染为的元素或组件。可通过 |
asChild | 布尔值更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。 阅读我们的 组合指南了解更多详情。 |
| 数据属性 | 值 |
|---|---|
[data-orientation] | "垂直" | "水平" |
示例
与其他基本组件一起使用
我们所有暴露 Trigger 部分的基本组件,例如 Dialog、AlertDialog、Popover、DropdownMenu,都可以通过使用 asChild prop 在工具栏中进行组合。
这是一个使用我们的 DropdownMenu 基本组件的示例。
<script setup lang="ts">
import {
DropdownMenuContent,
DropdownMenuRoot,
DropdownMenuTrigger,
ToolbarButton,
ToolbarLink,
ToolbarRoot,
ToolbarSeparator,
ToolbarToggleGroup,
ToolbarToggleItem,
} from 'reka-ui'
</script>
<template>
<ToolbarRoot>
<ToolbarButton>Action 1</ToolbarButton>
<ToolbarSeparator />
<DropdownMenuRoot>
<ToolbarButton as-child>
<DropdownMenuTrigger>Trigger</DropdownMenuTrigger>
</ToolbarButton>
<DropdownMenuContent>…</DropdownMenuContent>
</DropdownMenuRoot>
</ToolbarRoot>
</template>可访问性
使用 roving tabindex 来管理项之间的焦点移动。
键盘交互
| 键 | 描述 |
|---|---|
Tab 键 | 将焦点移动到组中的第一个项。 |
空格键 | 激活/取消激活该项。 |
回车键 | 激活/取消激活该项。 |
向下箭头键 | 根据 orientation 移动焦点到下一项。 |
向右箭头 | 根据 orientation 移动焦点到下一项。 |
向上箭头键 | 根据 orientation 移动焦点到上一项。 |
向左箭头 | 根据 orientation 移动焦点到上一项。 |
Home 键 | 将焦点移动到第一个项。 |
End 键 | 将焦点移动到最后一个项。 |
