prevent jump to first item when focusing because of mouse

This commit is contained in:
Jan Prochazka
2024-12-18 09:37:40 +01:00
parent a6f473b8ed
commit 9cfd5af704

View File

@@ -16,6 +16,7 @@
let isListFocused = false; let isListFocused = false;
let domDiv = null; let domDiv = null;
let lastInputMethod = null;
export let hideContent = false; export let hideContent = false;
function handleKeyDown(ev) { function handleKeyDown(ev) {
@@ -25,6 +26,11 @@
const selected = getSelectedObject(); const selected = getSelectedObject();
const index = _.findIndex(listInstance, x => selectedObjectMatcher(x, selected)); const index = _.findIndex(listInstance, x => selectedObjectMatcher(x, selected));
if (index < 0) {
focusFirst();
return;
}
if (index == 0 && diff < 0) { if (index == 0 && diff < 0) {
onFocusFilterBox?.(); onFocusFilterBox?.();
return; return;
@@ -115,12 +121,13 @@
} }
} }
async function handleFocus() { async function handleFocus(e) {
isListFocused = true; isListFocused = true;
// await tick(); if (lastInputMethod == 'mouse') {
await sleep(100); return;
// console.log('ON FOCUS AFTER SLEEP'); }
const listInstance = _.isFunction(list) ? list() : list; const listInstance = _.isFunction(list) ? list() : list;
const selected = getSelectedObject(); const selected = getSelectedObject();
const index = _.findIndex(listInstance, x => selectedObjectMatcher(x, selected)); const index = _.findIndex(listInstance, x => selectedObjectMatcher(x, selected));
@@ -139,6 +146,15 @@
} }
</script> </script>
<svelte:window
on:keydown={() => {
lastInputMethod = 'keyboard';
}}
on:mousedown={() => {
lastInputMethod = 'mouse';
}}
/>
<div <div
tabindex="0" tabindex="0"
on:keydown={handleKeyDown} on:keydown={handleKeyDown}