diff --git a/apps/web/src/widgets/SearchBox.tsx b/apps/web/src/widgets/SearchBox.tsx index 3f85e8f..5ed94dc 100644 --- a/apps/web/src/widgets/SearchBox.tsx +++ b/apps/web/src/widgets/SearchBox.tsx @@ -38,6 +38,7 @@ export function SearchBox({ align = 'center' }: { align?: 'left' | 'center' | 'r const [open, setOpen] = useState(false); const [active, setActive] = useState(-1); const [focused, setFocused] = useState(false); + const blurTimer = useRef>(undefined); // Свёрнут в круглую кнопку, пока не нужен: раскрывается по клику, «/» или Ctrl+K. const expanded = focused || q !== ''; @@ -167,12 +168,14 @@ export function SearchBox({ align = 'center' }: { align?: 'left' | 'center' | 'r setActive(-1); }} onFocus={() => { + // Вернулись в поле раньше, чем сработало закрытие по blur, — подсказки не прячем. + clearTimeout(blurTimer.current); setFocused(true); setOpen(true); }} onBlur={() => { setFocused(false); - setTimeout(close, 120); + blurTimer.current = setTimeout(close, 120); }} onKeyDown={onKeyDown} />