diff --git a/web/routes/uix/components/search-field/+page.svelte b/web/routes/uix/components/search-field/+page.svelte index 2409fc329..7cb8a4e62 100644 --- a/web/routes/uix/components/search-field/+page.svelte +++ b/web/routes/uix/components/search-field/+page.svelte @@ -37,6 +37,19 @@ let stageRef = $state(null); let resultsOpen = $state(false); let inputRef = $state(null); + // Set briefly after committing a pick so the input refocus doesn't + // re-open the popover we just closed via `onfocusin` on the anchor. + let justCommitted = false; + + function commitPick(name: string) { + value = name; + resultsOpen = false; + justCommitted = true; + inputRef?.focus(); + queueMicrotask(() => { + justCommitted = false; + }); + } const compiled = compileMorfo(searchFieldMorfo); const partsList = $derived([...compiled.parts.byKebab.values()]); @@ -193,7 +206,7 @@ { - if (!disabled && !readonly) resultsOpen = true; + if (!disabled && !readonly && !justCommitted) resultsOpen = true; }} > { - value = item.name; - resultsOpen = false; - inputRef?.focus(); - }} + onclick={() => commitPick(item.name)} > {item.name} {item.group}