import { KeyboardEvent, useRef } from 'react'; import { IoClose, IoSearch } from 'react-icons/io5'; import IconButton from '../../../common/components/buttons/IconButton'; import Input from '../../../common/components/input/input/Input'; import style from './SettingsSearch.module.scss'; interface SettingsSearchProps { query: string; onQueryChange: (query: string) => void; onSubmit: () => void; } export default function SettingsSearch({ query, onQueryChange, onSubmit }: SettingsSearchProps) { const searchRef = useRef(null); const isSearching = query.trim().length > 0; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape' && isSearching) { // Do not let the settings panel close while the user is clearing a search. event.stopPropagation(); onQueryChange(''); return; } if (event.key === 'Enter') { onSubmit(); } }; return (
onQueryChange(event.target.value)} onKeyDown={handleKeyDown} placeholder='Search settings' className={style.input} fluid /> {isSearching && ( { onQueryChange(''); searchRef.current?.focus(); }} > )}
); }