UI编辑器一批细节优化 #278

Merged
kdletters merged 44 commits from fix/ui-editor-minor-adjusts into master 2026-09-08 11:56:36 +08:00
Showing only changes of commit 21aa894871 - Show all commits
@@ -99,7 +99,7 @@ export default function UiEditorPage({
k88936 marked this conversation as resolved
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。
};
const onKeyDown = (event: KeyboardEvent) => {
if (
event.key === 'Delete' &&
k88936 marked this conversation as resolved
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。
(event.key === 'Delete' || event.key === 'Backspace') &&
k88936 marked this conversation as resolved
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。
!event.repeat &&
!event.defaultPrevented &&
!event.ctrlKey &&
k88936 marked this conversation as resolved
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。
Review

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。

完成通知弹窗打开时,页面级 keydown 监听仍会处理 Ctrl/Cmd+Z/Y:onKeyDown 只排除了可编辑元素,没有排除当前 role=dialog/弹窗内焦点。因此用户在弹窗的关闭按钮上按 Ctrl+Z(或 Ctrl+Shift+Z/Ctrl+Y)会直接撤销/重做底层 UI 编辑,弹窗声称阻塞工作台交互但状态仍被修改。建议在快捷键处理前检测 event.target 是否位于 role=dialog(或维护 modal-open 状态)并直接 return;同时补充弹窗打开时快捷键不改变编辑状态的测试。