uiUI 组件系统
对比

模态对话框

Dialog / Modal

在当前页面上完成聚焦任务或查看补充内容。

交互预览实时预览

离开这份草稿?

当前演示不会修改任何真实内容。

打开后可用 Esc 关闭
使用代码安装指南 ↗
app.mjs
import { mount } from '@sofish/ui/browser';

const view = mount(
  document.querySelector('#example'),
  'dialog'
);

view.element.addEventListener('ui:open', event => {
  console.log(event.detail.value);
});

// view.update({ ...nextProps });
// view.destroy();

什么时候用

一个短任务需要暂时独立的注意力和操作空间。

什么时候不用

能在原位展示的小提示优先就地呈现。

COMPONENT API

属性与事件

传入业务数据,通过事件连接你的应用。

属性默认值
title"离开这份草稿?"
content"当前演示不会修改任何真实内容。"
triggerLabel"打开示例弹层"
closeLabel"返回编辑"

事件

ui:open ui:close

安装、生命周期与完整 API ↗

INTERACTION NOTES

交互与可访问性

  • 对话框有标题,管理进入与退出的焦点。
  • 明确关闭方式,避免键盘陷阱。

和相似组件的区别

模态 Dialog 阻隔背景交互;Popover 通常是锚定控件的轻量内容。

RESEARCH & ALTERNATIVES

官方实现映射

以下是上游生态对同类交互的实现。上方运行的是 UI 自己的组件。

shadcn/uiDialog
官方提供

聚焦任务的对话框。

Ant DesignModal
官方提供

提供模态对话框与确认接口。

Reka UIDialog
官方提供

Vue 无样式对话框,区分模态与非模态。

Bits UIDialog
官方提供

Svelte 对话框部件与焦点行为。

SkeletonDialog
官方提供

Svelte 框架组件,对话内容由应用定义。

官方提供

提供弹层与 sheet 变体,使用其框架生命周期。

关键状态

关闭打开表单错误提交中返回原处

React / Next.js、Vue / Nuxt、Svelte / SvelteKit、Angular、Web Components · 来源核验

一起了解

审批与人工接管 ↗表单与字段 ↗