diff --git a/frontend/src/Components/Autocomplete.svelte b/frontend/src/Components/Autocomplete.svelte
index 64133f3b..30ade901 100644
--- a/frontend/src/Components/Autocomplete.svelte
+++ b/frontend/src/Components/Autocomplete.svelte
@@ -14,7 +14,7 @@
const ignore = ['ArrowLeft','ArrowRight'];
//let candidate = $state({ display : '' });
- let selected = $state([]);
+ let selected = $state(null);
let candidates = $state([]);
let timer = null;
@@ -53,12 +53,13 @@
const idx = select.value;
candidate = candidates[idx];
candidates = [];
- selected = [];
+ selected = null;
onSelect(candidate);
}
async function fetchCandidates(){
candidates = await getCandidates(candidate.display);
+ selected = null;
if (selected>candidates.length) selected = candidates.length;
}
@@ -66,28 +67,28 @@
if (ignore.includes(ev.key)) return;
if (ev.key == 'ArrowDown'){
ev.preventDefault();
- selected = selected.length < 1 ? [0] : [selected[0]+1]
- if (selected[0] >= candidates.length) selected = [0];
+ selected = selected == null ? 0: selected +1;
+ if (selected >= candidates.length) selected = 0;
return false;
}
if (ev.key == 'ArrowUp'){
ev.preventDefault();
- selected = selected.length < 1 ? [-1] : [selected[0]-1]
- if (selected[0] < 0) selected = [candidates.length-1];
+ selected = selected == null ? candidates.length -1 : selected -1;
+ if (selected < 0) selected = candidates.length -1;
return false;
}
if (ev.key == 'Enter'|| ev.key == 'Tab'){
ev.preventDefault();
- if (selected.length>0) {
- candidate = candidates[selected[0]];
+ if (selected != null && selected < candidates.length) {
+ candidate = candidates[selected];
candidates = [];
- selected = [];
+ selected = null;
onSelect(candidate);
return false;
}
if (ev.key == 'Enter') {
candidates = [];
- selected = [];
+ selected = null;
if (onCommit(candidate)) candidate = { display : '' };
}
return false;
@@ -95,7 +96,7 @@
if (ev.key == 'Escape'){
ev.preventDefault();
candidates = [];
- selected = [];
+ selected = null;
return false;
}
@@ -104,23 +105,42 @@
timer = setTimeout(fetchCandidates,400);
return false;
}
+
+ function select(index){
+ candidate = candidates[index];
+ selected = null;
+ candidates = [];
+ onSelect(candidate);
+
+ }
-
+
{#if candidates && candidates.length > 0}
-
+
{/if}
-
\ No newline at end of file
+