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;
|
||||
}
|
||||
|
||||
// Arrow up/down — navigate entries in vault
|
||||
if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !isInput && document.getElementById('authSection').classList.contains('hidden')) {
|
||||
// Arrow keys — navigate entries in vault
|
||||
if ((e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight') && !isInput && document.getElementById('authSection').classList.contains('hidden')) {
|
||||
e.preventDefault();
|
||||
const filtered = getFilteredEntries();
|
||||
if (!filtered.length) return;
|
||||
const isNext = e.key === 'ArrowDown' || e.key === 'ArrowRight';
|
||||
let idx = -1;
|
||||
if (selectedIds.size > 0) {
|
||||
const firstId = [...selectedIds][0];
|
||||
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;
|
||||
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');
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user