Components

工具条

用于分组一组控件的容器,例如按钮、切换组或下拉菜单。

import * as React from "react";
import { Toolbar } from "radix-ui";
import { StrikethroughIcon, TextAlignLeftIcon, TextAlignCenterIcon, TextAlignRightIcon, FontBoldIcon, FontItalicIcon, } from "@radix-ui/react-icons";
import "./styles.css";
const ToolbarDemo = () => (
<Toolbar.Root className="ToolbarRoot" aria-label="Formatting options">
<Toolbar.ToggleGroup type="multiple" aria-label="Text formatting">
<Toolbar.ToggleItem className="ToolbarToggleItem" value="bold" aria-label="Bold" >
<FontBoldIcon />
</Toolbar.ToggleItem>
<Toolbar.ToggleItem className="ToolbarToggleItem" value="italic" aria-label="Italic" >
<FontItalicIcon />
</Toolbar.ToggleItem>
<Toolbar.ToggleItem className="ToolbarToggleItem" value="strikethrough" aria-label="Strike through" >
<StrikethroughIcon />
</Toolbar.ToggleItem>
</Toolbar.ToggleGroup>
<Toolbar.Separator className="ToolbarSeparator" />
<Toolbar.ToggleGroup type="single" defaultValue="center" aria-label="Text alignment" >
<Toolbar.ToggleItem className="ToolbarToggleItem" value="left" aria-label="Left aligned" >
<TextAlignLeftIcon />
</Toolbar.ToggleItem>
<Toolbar.ToggleItem className="ToolbarToggleItem" value="center" aria-label="Center aligned" >
<TextAlignCenterIcon />
</Toolbar.ToggleItem>
<Toolbar.ToggleItem className="ToolbarToggleItem" value="right" aria-label="Right aligned" >
<TextAlignRightIcon />
</Toolbar.ToggleItem>
</Toolbar.ToggleGroup>
<Toolbar.Separator className="ToolbarSeparator" />
<Toolbar.Link className="ToolbarLink" href="#" target="_blank" style={{ marginRight: 10 }} >
Edited 2 hours ago
</Toolbar.Link>
<Toolbar.Button className="ToolbarButton" style={{ marginLeft: "auto" }}>
Share
</Toolbar.Button>
</Toolbar.Root>
);
export default ToolbarDemo;

Features

    完整的键盘导航。

安装

从命令行安装组件。

npm install @radix-ui/react-toolbar

解剖结构

导入组件。

import { Toolbar } from "radix-ui";
export default () => (
<Toolbar.Root>
<Toolbar.Button />
<Toolbar.Separator />
<Toolbar.Link />
<Toolbar.ToggleGroup>
<Toolbar.ToggleItem />
</Toolbar.ToggleGroup>
</Toolbar.Root>
);

API 参考

根部

包含所有工具条组件部分。

PropTypeDefault
asChild
boolean
false
orientation
enum
"horizontal"
dir
enum
No default value
loop
boolean
true
Data attributeValues
[data-orientation]"vertical" | "horizontal"

按钮

一个按钮项。

PropTypeDefault
asChild
boolean
false
Data attributeValues
[data-orientation]"vertical" | "horizontal"

链接

一个链接项。

PropTypeDefault
asChild
boolean
false

切换组

一组可以切换开启或关闭的二态按钮。

PropTypeDefault
asChild
boolean
false
type*
enum
No default value
value
string
No default value
defaultValue
string
No default value
onValueChange
function
No default value
value
string[]
[]
defaultValue
string[]
[]
onValueChange
function
No default value
disabled
boolean
false
Data attributeValues
[data-orientation]"vertical" | "horizontal"

切换项

组中的一个项目。

PropTypeDefault
asChild
boolean
false
value*
string
No default value
disabled
boolean
No default value
Data attributeValues
[data-state]"on" | "off"
[data-disabled]

被禁用时存在

[data-orientation]"vertical" | "horizontal"

分隔符

用于在工具条中视觉上分隔项目。

PropTypeDefault
asChild
boolean
false
Data attributeValues
[data-orientation]"vertical" | "horizontal"

示例

与其他原语一起使用

所有暴露 Trigger 部分的原语,例如 DialogAlertDialogPopoverDropdownMenu 可以通过使用 asChild 属性 在工具条中组合。

以下是使用我们的 DropdownMenu 原语的示例。

import { Toolbar, DropdownMenu } from "radix-ui";
export default () => (
<Toolbar.Root>
<Toolbar.Button>操作 1</Toolbar.Button>
<Toolbar.Separator />
<DropdownMenu.Root>
<Toolbar.Button asChild>
<DropdownMenu.Trigger>触发器</DropdownMenu.Trigger>
</Toolbar.Button>
<DropdownMenu.Content></DropdownMenu.Content>
</DropdownMenu.Root>
</Toolbar.Root>
);

可访问性

使用 游走的 tabindex 来管理项目之间的焦点移动。

键盘交互

KeyDescription
Tab
将焦点移动到组中的第一个项目。
Space
激活/停用该项目。
Enter
激活/停用该项目。
ArrowDown
根据 orientation 将焦点移动到下一个项目。
ArrowRight
根据 orientation 将焦点移动到下一个项目。
ArrowUp
根据 orientation 将焦点移动到上一个项目。
ArrowLeft
根据 orientation 将焦点移动到上一个项目。
Home
将焦点移动到第一个项目。
End
将焦点移动到最后一个项目。