|
|
|
|
@ -2,10 +2,10 @@
@@ -2,10 +2,10 @@
|
|
|
|
|
import { t } from '../translations.svelte.js' |
|
|
|
|
import { tick } from "svelte"; |
|
|
|
|
|
|
|
|
|
let { getOptionsFor = text => [], onSelect = text => [] } = $props(); |
|
|
|
|
let { getOptionsFor = text => {}, onSelect = text => [] } = $props(); |
|
|
|
|
|
|
|
|
|
let text = $state('') |
|
|
|
|
let options = $state([]); |
|
|
|
|
let options = $state({}); |
|
|
|
|
|
|
|
|
|
async function onkeyup(evt){ |
|
|
|
|
var select = evt.target; |
|
|
|
|
@ -17,9 +17,12 @@
@@ -17,9 +17,12 @@
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (key == 'Enter'){ |
|
|
|
|
text = select.value; |
|
|
|
|
onSelect(text); |
|
|
|
|
options=[]; |
|
|
|
|
let key = select.value; |
|
|
|
|
text = options[key]; |
|
|
|
|
let result = {}; |
|
|
|
|
result[key]=text; |
|
|
|
|
options={}; |
|
|
|
|
onSelect(result); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (key == 'Backspace'){ |
|
|
|
|
@ -38,10 +41,10 @@
@@ -38,10 +41,10 @@
|
|
|
|
|
min-width: 200px; |
|
|
|
|
} |
|
|
|
|
</style> |
|
|
|
|
<select size={options.length<2?2:options.length+1} {onkeyup} autofocus width="40"> |
|
|
|
|
<select size={Object.keys(options).length<2?2:Object.keys(options).length+1} {onkeyup} autofocus width="40"> |
|
|
|
|
<option>{text}</option> |
|
|
|
|
{#each options as option,i} |
|
|
|
|
<option>{option}</option> |
|
|
|
|
{#each Object.entries(options) as [val,caption]} |
|
|
|
|
<option value={val}>{caption}</option> |
|
|
|
|
{/each} |
|
|
|
|
</select> |
|
|
|
|
|
|
|
|
|
|