Select item with arrow keys

This commit is contained in:
Daoud Clarke 2021-12-20 21:28:01 +00:00
parent 2d7bb0efd7
commit 5e7c5a905e
2 changed files with 53 additions and 7 deletions

View file

@ -55,6 +55,10 @@ div .result:hover {
background: #f0f0ff;
}
div .selected {
background: #f0f0ff;
}
div .result {
padding: 10px;
}

View file

@ -1,4 +1,7 @@
ts = {
selected: null
};
window.onload = (event) => {
const searchInput = document.getElementById('search');
@ -17,27 +20,65 @@ window.onload = (event) => {
console.log(response);
response.json().then(content => {
console.log(content);
content.forEach(element => {
addResult(element.title, element.extract, element.url);
})
for (const [i, element] of content.entries()) {
addResult(element.title, element.extract, element.url, i);
};
ts.selected = null;
});
});
} else if (e.key == 'ArrowDown') {
}
});
document.addEventListener('keyup', (e) => {
if (e.key == 'ArrowDown') {
selectNextItem();
} else if (e.key == 'ArrowUp') {
selectPreviousItem();
}
});
};
function selectNextItem() {
if (ts.selected === null) {
ts.selected = 0;
} else {
ts.selected++;
}
updateSelected();
}
function selectPreviousItem() {
if (ts.selected === null) {
ts.selected = 0;
} else {
ts.selected--;
}
updateSelected();
}
function updateSelected() {
const results = document.querySelectorAll('.result');
results.forEach(child => {
child.classList.remove('selected');
});
const selectedResult = document.getElementById(ts.selected.toString());
selectedResult.classList.add('selected');
}
function clearResults() {
const results = document.getElementById('results');
results.innerHTML = '';
}
function addResult(title, extract, url) {
function addResult(title, extract, url, id) {
const par = document.createElement("p");
const titleText = createBoldedSpan(title);
@ -53,6 +94,7 @@ function addResult(title, extract, url) {
const div = document.createElement("div");
div.classList.add('result');
div.id = id.toString();
const urlPar = document.createElement("p");
const urlText = document.createTextNode(url);