mirror of
https://github.com/sissbruecker/linkding.git
synced 2026-02-27 22:43:15 +08:00
63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
document.addEventListener("keydown", (event) => {
|
|
// Skip if event occurred within an input element
|
|
const targetNodeName = event.target.nodeName;
|
|
const isInputTarget =
|
|
targetNodeName === "INPUT" ||
|
|
targetNodeName === "SELECT" ||
|
|
targetNodeName === "TEXTAREA";
|
|
|
|
if (isInputTarget) {
|
|
return;
|
|
}
|
|
|
|
// Handle shortcuts for navigating bookmarks with arrow keys
|
|
const isArrowUp = event.key === "ArrowUp";
|
|
const isArrowDown = event.key === "ArrowDown";
|
|
if (isArrowUp || isArrowDown) {
|
|
event.preventDefault();
|
|
|
|
// Detect current bookmark list item
|
|
const items = [...document.querySelectorAll("ul.bookmark-list > li")];
|
|
const path = event.composedPath();
|
|
const currentItem = path.find((item) => items.includes(item));
|
|
|
|
// Find next item
|
|
let nextItem;
|
|
if (currentItem) {
|
|
nextItem = isArrowUp
|
|
? currentItem.previousElementSibling
|
|
: currentItem.nextElementSibling;
|
|
} else {
|
|
// Select first item
|
|
nextItem = items[0];
|
|
}
|
|
// Focus first link
|
|
if (nextItem) {
|
|
nextItem.querySelector("a").focus();
|
|
}
|
|
}
|
|
|
|
// Handle shortcut for toggling all notes
|
|
if (event.key === "e") {
|
|
const list = document.querySelector(".bookmark-list");
|
|
if (list) {
|
|
list.classList.toggle("show-notes");
|
|
}
|
|
}
|
|
|
|
// Handle shortcut for focusing search input
|
|
if (event.key === "s") {
|
|
const searchInput = document.querySelector('input[type="search"]');
|
|
|
|
if (searchInput) {
|
|
searchInput.focus();
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
|
|
// Handle shortcut for adding new bookmark
|
|
if (event.key === "n") {
|
|
window.location.assign("/bookmarks/new");
|
|
}
|
|
});
|