Select item with arrow keys
This commit is contained in:
parent
2d7bb0efd7
commit
5e7c5a905e
2 changed files with 53 additions and 7 deletions
|
@ -55,6 +55,10 @@ div .result:hover {
|
|||
background: #f0f0ff;
|
||||
}
|
||||
|
||||
div .selected {
|
||||
background: #f0f0ff;
|
||||
}
|
||||
|
||||
div .result {
|
||||
padding: 10px;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue