Dialog

用于在当前页面上方临时集中处理一项任务。

预览

编辑个人资料

打开姓名和用户名输入,通过取消或示例保存按钮关闭对话框。

打开后可测试焦点约束和按 Escape 关闭。

安装

首次使用此 Registry?请先完成 基础配置与共享样式安装 。

npx shadcn@latest add @neumorphism-ui/dialog

先安装一次共享 base,然后使用 CLI 添加组件及其依赖。

编辑个人资料

npx shadcn@latest add @neumorphism-ui/button @neumorphism-ui/dialog @neumorphism-ui/input @neumorphism-ui/label
Registry JSON

用法

在 Dialog 内组合 DialogTrigger 与 DialogContent,并提供标题和说明。取消使用 DialogClose,主要操作连接到应用的处理函数。

"use client";

import { Button } from "@/components/ui/button";
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog";

export default function Example() {
  return (
    <Dialog>
      <DialogTrigger render={<Button />}>Project details</DialogTrigger>
      <DialogContent>
        <DialogHeader>
          <DialogTitle>Team workspace</DialogTitle>
          <DialogDescription>Manage your projects in one place.</DialogDescription>
        </DialogHeader>
        <DialogFooter><DialogClose render={<Button />}>Close</DialogClose></DialogFooter>
      </DialogContent>
    </Dialog>
  );
}

API 参考

基于 Base UI Dialog 组合 Portal、Backdrop、Popup、标题、说明和关闭操作。Escape、点击外部、焦点约束及焦点返回均由 primitive 处理。

组件属性类型默认值说明
Dialogopen / defaultOpenbooleanfalse受控的打开状态或非受控初始状态。
DialogonOpenChange(open: boolean) => void—打开状态变化时调用。
Dialogmodalbooleantrue决定是否阻止背景交互并约束焦点。
DialogTrigger / DialogCloserenderReactElement | (props, state) => ReactElement—将触发或关闭行为组合到按钮或链接上。
DialogContentshowCloseButtonbooleantrue显示右上角的默认关闭按钮。
DialogContentoverlayClassNamestring | (state) => string—单独扩展 Backdrop 的颜色、模糊和过渡效果。
DialogdisablePointerDismissalbooleanfalse禁止通过外部 pointer press 关闭 Dialog。

无障碍

  • 01

    在 DialogContent 中提供 DialogTitle,并使用 DialogDescription 关联辅助说明。

  • 02

    Base UI 负责模态焦点约束、Escape 关闭,以及关闭后将焦点返回触发器。

  • 03

    使用 DialogClose 包裹 DialogFooter 中的取消按钮,提供明确的关闭操作。