Skip to content

Feature: 点击 Dialog 遮罩层关闭弹窗 #3132

@androidfans

Description

@androidfans

功能描述

希望点击 Dialog 的半透明遮罩层(overlay)时能关闭弹窗,和点击右上角 X 按钮效果一致。

使用场景

Mac 触摸板用户在操作时经常需要快速关闭弹窗。触摸板精确定位到右上角的 X 按钮比较费力,而点击遮罩层的空白区域是一个更大更容易命中的目标。这是大多数 Web 应用的通用交互模式(如 Google Docs、Notion、NocoDB 等),用户已经形成了这个习惯。

当前行为

  • 点击遮罩层:无反应
  • 关闭弹窗只能:点 X 按钮 或 按 Esc

期望行为

  • 点击遮罩层:关闭弹窗(等同于点 X)
  • 适用于所有 Dialog 类型(expand record、link editor、create record 等)

补充

Teable 使用 Radix UI 的 Dialog 组件,Radix 默认支持点击 overlay 关闭,只需要不阻止 onInteractOutside 的默认行为即可。

目前 Modal.tsx 中有:

onPointerDownOutside={(e) => e.preventDefault()}
onInteractOutside={(e) => {
  e.stopPropagation();
  e.preventDefault();
}}

移除这些 preventDefault() 调用并添加 onClose 回调即可实现。

环境

  • Teable 版本:latest

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions