一个覆盖在主窗口或其他对话框窗口之上的窗口,使其下方的内容变为非交互状态。
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 键自动关闭组件。
从命令行安装组件。
导入所有部件并将它们组装在一起。
包含对话框的所有部件。
打开对话框的按钮。
使用时,将您的 overlay (覆盖层) 和 content (内容) 部件传送到 body
中。
当对话框打开时,覆盖视图的非交互部分的图层。
包含要在打开的对话框中渲染的内容。
关闭对话框的按钮。
对话框打开时要宣告的可访问标题。
如果您想隐藏标题,请将其包裹在我们的 Visually Hidden 实用工具中,就像这样 <VisuallyHidden asChild>
。
对话框打开时要宣告的可选可访问描述。
如果您想隐藏描述,请将其包裹在我们的 Visually Hidden 实用工具中,就像这样 <VisuallyHidden asChild>
。如果您想完全移除描述,请移除此部分并将 aria-describedby={undefined}
传递给 Dialog.Content
。
使用受控属性在异步操作完成后以编程方式关闭对话框。
将内容移动到覆盖层内部以渲染带有溢出的对话框。
自定义您的对话框 portal 进入的元素。
通过将基本部件抽象到您自己的组件中来创建您自己的 API。
此示例抽象了 Dialog.Overlay
和 Dialog.Close
部件。