一个覆盖在主窗口或其他对话框窗口上的窗口,使下面的内容处于非活动状态。
import React from 'react';import * as Dialog from '@radix-ui/react-dialog';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
部分。