功能描述
希望点击 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 回调即可实现。
环境
功能描述
希望点击 Dialog 的半透明遮罩层(overlay)时能关闭弹窗,和点击右上角 X 按钮效果一致。
使用场景
Mac 触摸板用户在操作时经常需要快速关闭弹窗。触摸板精确定位到右上角的 X 按钮比较费力,而点击遮罩层的空白区域是一个更大更容易命中的目标。这是大多数 Web 应用的通用交互模式(如 Google Docs、Notion、NocoDB 等),用户已经形成了这个习惯。
当前行为
期望行为
补充
Teable 使用 Radix UI 的 Dialog 组件,Radix 默认支持点击 overlay 关闭,只需要不阻止
onInteractOutside的默认行为即可。目前
Modal.tsx中有:移除这些
preventDefault()调用并添加onClose回调即可实现。环境