Arrow left/right navigate entries; Shift+arrow extends multi-selection
This commit is contained in:
@@ -1409,19 +1409,30 @@ document.addEventListener('keydown', function(e) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Arrow up/down — navigate entries in vault
|
// Arrow keys — navigate entries in vault
|
||||||
if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !isInput && document.getElementById('authSection').classList.contains('hidden')) {
|
if ((e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight') && !isInput && document.getElementById('authSection').classList.contains('hidden')) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const filtered = getFilteredEntries();
|
const filtered = getFilteredEntries();
|
||||||
if (!filtered.length) return;
|
if (!filtered.length) return;
|
||||||
|
const isNext = e.key === 'ArrowDown' || e.key === 'ArrowRight';
|
||||||
let idx = -1;
|
let idx = -1;
|
||||||
if (selectedIds.size > 0) {
|
if (selectedIds.size > 0) {
|
||||||
const firstId = [...selectedIds][0];
|
const firstId = [...selectedIds][0];
|
||||||
idx = filtered.findIndex(e => e.id == firstId);
|
idx = filtered.findIndex(e => e.id == firstId);
|
||||||
}
|
}
|
||||||
if (e.key === 'ArrowDown') idx = idx < filtered.length - 1 ? idx + 1 : 0;
|
if (isNext) idx = idx < filtered.length - 1 ? idx + 1 : 0;
|
||||||
else idx = idx > 0 ? idx - 1 : filtered.length - 1;
|
else idx = idx > 0 ? idx - 1 : filtered.length - 1;
|
||||||
selectedIds.clear(); selectedIds.add(filtered[idx].id);
|
if (e.shiftKey) {
|
||||||
|
const anchorId = lastSelectedId !== null ? lastSelectedId : filtered[idx].id;
|
||||||
|
const anchor = filtered.findIndex(e => e.id == anchorId);
|
||||||
|
const start = Math.min(anchor, idx), end = Math.max(anchor, idx);
|
||||||
|
selectedIds.clear();
|
||||||
|
for (let i = start; i <= end; i++) selectedIds.add(filtered[i].id);
|
||||||
|
} else {
|
||||||
|
selectedIds.clear();
|
||||||
|
selectedIds.add(filtered[idx].id);
|
||||||
|
lastSelectedId = filtered[idx].id;
|
||||||
|
}
|
||||||
updateBatchBar(); render(); playSound('click');
|
updateBatchBar(); render(); playSound('click');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user