{ if (e.target === e.currentTarget) enterEditMode(false); }} > {#if editMode} { ddIdx = -1; onChange(e.target.value); }} onkeydown={(e) => { if (matches.length) { if (e.key === "ArrowDown") { e.preventDefault(); ddIdx = (ddIdx + 1) % matches.length; return; } if (e.key === "ArrowUp") { e.preventDefault(); ddIdx = ddIdx <= 0 ? matches.length - 1 : ddIdx - 1; return; } if (e.key === "Enter" && ddIdx >= 0) { e.preventDefault(); e.stopPropagation(); pick(matches[ddIdx]); return; } } if (e.key === "Enter" || e.key === "Escape") { e.preventDefault(); e.stopPropagation(); editMode = false; } }} onfocus={() => { focused = true; }} onblur={() => { focused = false; editMode = false; ddIdx = -1; }} /> {:else} {#each chips as chip, i} / {/each} { focused = true; }} onblur={() => { focused = false; ddIdx = -1; }} /> {/if}
{#if focused && matches.length}
{#each matches as m, i}
{ e.preventDefault(); pick(m); }} > {m}
{/each}
{/if}