UI编辑器一批细节优化 #278
@@ -99,7 +99,7 @@ export default function UiEditorPage({
|
||||
|
k88936 marked this conversation as resolved
|
||||
};
|
||||
const onKeyDown = (event: KeyboardEvent) => {
|
||||
if (
|
||||
event.key === 'Delete' &&
|
||||
|
k88936 marked this conversation as resolved
kdletters
commented
完成通知弹窗打开时,页面级 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
kdletters
commented
完成通知弹窗打开时,页面级 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
kdletters
commented
完成通知弹窗打开时,页面级 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;同时补充弹窗打开时快捷键不改变编辑状态的测试。
kdletters
commented
完成通知弹窗打开时,页面级 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;同时补充弹窗打开时快捷键不改变编辑状态的测试。
|
||||
完成通知弹窗打开时,页面级 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;同时补充弹窗打开时快捷键不改变编辑状态的测试。