叠加在主窗口或另一个对话框窗口上的窗口, 使下面的内容变得无效。
import * as React from "react";import { Dialog } from "radix-ui";import { Cross2Icon } from "@radix-ui/react-icons";import "./styles.css";const DialogDemo = () => (<Dialog.Root><Dialog.Trigger asChild><button className="Button violet">Edit profile</button></Dialog.Trigger><Dialog.Portal><Dialog.Overlay className="DialogOverlay" /><Dialog.Content className="DialogContent"><Dialog.Title className="DialogTitle">Edit profile</Dialog.Title><Dialog.Description className="DialogDescription">Make changes to your profile here. Click save when you're done.</Dialog.Description><fieldset className="Fieldset"><label className="Label" htmlFor="name">Name</label><input className="Input" id="name" defaultValue="Pedro Duarte" /></fieldset><fieldset className="Fieldset"><label className="Label" htmlFor="username">Username</label><input className="Input" id="username" defaultValue="@peduarte" /></fieldset><div style={{ display: "flex", marginTop: 25, justifyContent: "flex-end" }} ><Dialog.Close asChild><button className="Button green">Save changes</button></Dialog.Close></div><Dialog.Close asChild><button className="IconButton" aria-label="Close"><Cross2Icon /></button></Dialog.Close></Dialog.Content></Dialog.Portal></Dialog.Root>);export default DialogDemo;
支持模态和非模态模式。
焦点会自动被限制在模态内部。
可以是受控或非受控。
通过 Title
和 Description
组件管理屏幕阅读器的公告。
Esc 键会自动关闭组件。
从命令行安装组件。
导入所有部件并将它们组合在一起。
包含对话框的所有部分。
打开对话框的按钮。
使用时,将您的叠加和内容部分传送到 body
中。
当对话框打开时,覆盖视图的无效部分的层。
包含在打开对话框中渲染的内容。
关闭对话框的按钮。
一个可访问的标题,在打开对话框时被宣布。
如果您想隐藏标题,请将其包装在我们的 视觉隐藏 工具中,例如 <VisuallyHidden asChild>
。
一个可选的可访问描述,在打开对话框时被宣布。
如果您想隐藏描述,请将其包装在我们的 视觉隐藏 工具中,例如 <VisuallyHidden asChild>
。如果您完全想要移除描述,请删除此部分并将 aria-describedby={undefined}
传递给 Dialog.Content
。
使用受控属性在异步操作完成后以编程方式关闭 Dialog。
将内容移动到覆盖层内以渲染一个具有溢出的对话框。
自定义您的对话框传送到的元素。
通过将基本部件抽象为您自己的组件来创建您自己的 API。
此示例抽象了 Dialog.Overlay
和 Dialog.Close
部分。