fix: 双击编辑器冲突 — 延迟区分单击/双击
This commit is contained in:
+25
-19
@@ -100,18 +100,35 @@
|
||||
}
|
||||
|
||||
// ── P2-2/P2-3: Event delegation ──
|
||||
let _clickTimer=null;
|
||||
const fileListEl=document.getElementById('fileList');
|
||||
fileListEl.addEventListener('click',e=>{
|
||||
const btn=e.target.closest('[data-action]');
|
||||
if(!btn)return;
|
||||
const action=btn.dataset.action,path=btn.dataset.path||'',name=btn.dataset.name||'',isDir=btn.dataset.isDir==='true';
|
||||
if(action==='browse')browseDir(path);
|
||||
else if(action==='rename')doRename(path,name);
|
||||
else if(action==='delete')doDelete(path,isDir);
|
||||
else if(action==='download')doDownload(path,name);
|
||||
else if(action==='preview')doPreview(path);
|
||||
else if(action==='select')toggleSelect(btn,path);
|
||||
else if(action==='select-all')toggleSelectAll(btn);
|
||||
// Delay single-click to allow dblclick to cancel it
|
||||
clearTimeout(_clickTimer);
|
||||
_clickTimer=setTimeout(()=>{
|
||||
const action=btn.dataset.action,path=btn.dataset.path||'',name=btn.dataset.name||'',isDir=btn.dataset.isDir==='true';
|
||||
if(action==='browse')browseDir(path);
|
||||
else if(action==='rename')doRename(path,name);
|
||||
else if(action==='delete')doDelete(path,isDir);
|
||||
else if(action==='download')doDownload(path,name);
|
||||
else if(action==='preview')doPreview(path);
|
||||
else if(action==='select')toggleSelect(btn,path);
|
||||
else if(action==='select-all')toggleSelectAll(btn);
|
||||
},250);
|
||||
});
|
||||
|
||||
// ── Double-click: open editor for files, browse for directories ──
|
||||
fileListEl.addEventListener('dblclick',e=>{
|
||||
clearTimeout(_clickTimer); // Cancel single-click action
|
||||
const row=e.target.closest('.file-row');
|
||||
if(!row)return;
|
||||
const pathBtn=row.querySelector('[data-action="rename"]');
|
||||
if(!pathBtn)return;
|
||||
const path=pathBtn.dataset.path;
|
||||
const isDir=!!row.querySelector('[data-action="browse"]');
|
||||
if(isDir){browseDir(path)}else{doPreview(path)}
|
||||
});
|
||||
|
||||
/** H-29: HTML-escape a string for safe innerHTML insertion */
|
||||
@@ -124,17 +141,6 @@
|
||||
fileListEl.innerHTML='<div class="px-4 py-12 text-center text-slate-500"><div class="text-4xl mb-3">📂</div><p>点击「浏览」查看目录</p></div>';
|
||||
}
|
||||
|
||||
// ── Double-click: open editor for files, browse for directories ──
|
||||
fileListEl.addEventListener('dblclick',e=>{
|
||||
const row=e.target.closest('.file-row');
|
||||
if(!row)return;
|
||||
const pathEl=row.querySelector('[data-path]');
|
||||
if(!pathEl)return;
|
||||
const path=pathEl.dataset.path;
|
||||
const isDir=!!row.querySelector('[data-action="browse"]');
|
||||
if(isDir){browseDir(path)}else{doPreview(path)}
|
||||
});
|
||||
|
||||
// ── Modal system (P2-9) ──
|
||||
let _modalResolve=null;
|
||||
function showModal({title,text,input,textarea,inputDefault,textareaValue,confirmText,danger,onConfirm}){
|
||||
|
||||
Reference in New Issue
Block a user