diff --git a/packages/web/src/elements/SearchInput.svelte b/packages/web/src/elements/SearchInput.svelte index 94524bf76..0606ad449 100644 --- a/packages/web/src/elements/SearchInput.svelte +++ b/packages/web/src/elements/SearchInput.svelte @@ -7,6 +7,7 @@ $: searchValue = value || ''; export let isDebounced = false; + export let onFocusFilteredList = null; let domInput; @@ -14,9 +15,17 @@ if (e.keyCode == keycodes.escape) { value = ''; } + if (e.keyCode == keycodes.downArrow) { + onFocusFilteredList?.(); + e.preventDefault(); + } } const debouncedSet = _.debounce(x => (value = x), 500); + + export function focus() { + domInput.focus(); + } selectedObjectMatcher(x, selected)); + + if (index == 0 && diff < 0) { + onFocusFilterBox?.(); + return; + } + if (index >= 0) { let newIndex = index + diff; if (newIndex >= list.length) { @@ -30,8 +38,8 @@ module.handleObjectClick(list[newIndex], { tabPreviewMode: true }); } - if (newIndex == 0 && onScrollTop) { - onScrollTop(); + if (newIndex == 0) { + onScrollTop?.(); } } } @@ -69,6 +77,15 @@ } } } + + export function focusFirst() { + domDiv?.focus(); + if (list[0]) { + selectedObjectStore.set(list[0]); + module.handleObjectClick(list[0], { tabPreviewMode: true }); + onScrollTop?.(); + } + }