fix(combo-box): reset values when manually clearing input field (#992)

This commit is contained in:
Eric Liu 2022-01-10 13:05:32 -10:00 committed by GitHub
commit f6eb958732
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -108,11 +108,12 @@
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
let selectedId = undefined; let selectedId = undefined;
let selectedItem = undefined;
let inputValue = value; let inputValue = value;
let prevInputValue = undefined;
let prevSelectedIndex = undefined;
let highlightedIndex = -1; let highlightedIndex = -1;
let selectedItem;
function change(dir) { function change(dir) {
let index = highlightedIndex + dir; let index = highlightedIndex + dir;
let _items = !filteredItems?.length ? items : filteredItems; let _items = !filteredItems?.length ? items : filteredItems;
@ -132,13 +133,13 @@
selectedIndex = -1; selectedIndex = -1;
highlightedIndex = -1; highlightedIndex = -1;
highlightedId = undefined; highlightedId = undefined;
selectedId = undefined;
selectedItem = undefined; selectedItem = undefined;
open = false; open = false;
inputValue = ""; inputValue = "";
ref?.focus(); ref?.focus();
} }
let prevInputValue;
afterUpdate(() => { afterUpdate(() => {
if (open) { if (open) {
ref.focus(); ref.focus();
@ -156,7 +157,6 @@
} }
}); });
let prevSelectedIndex;
$: if (selectedIndex > -1 && prevSelectedIndex !== selectedIndex) { $: if (selectedIndex > -1 && prevSelectedIndex !== selectedIndex) {
prevSelectedIndex = selectedIndex; prevSelectedIndex = selectedIndex;
if (filteredItems?.length === 1 && open) { if (filteredItems?.length === 1 && open) {
@ -250,6 +250,10 @@
} }
inputValue = target.value; inputValue = target.value;
if (!inputValue.length) {
clear();
open = true;
}
}}" }}"
on:keydown on:keydown
on:keydown|stopPropagation="{({ key }) => { on:keydown|stopPropagation="{({ key }) => {