(null)
const handleTextChange = useCallback(
(text: string) => {
setSearchText(text)
onSearch(text)
},
[onSearch]
)
const handleClear = useCallback(() => {
setSearchText('')
setSearchVisible(false)
onSearch('')
}, [onSearch])
useEffect(() => {
if (searchVisible && inputRef.current) {
inputRef.current.focus()
}
}, [searchVisible])
return (
handleTextChange(e.target.value)}
onKeyDown={(e) => {
if (e.key === 'Escape') {
e.stopPropagation()
handleTextChange('')
if (!searchText) setSearchVisible(false)
}
}}
onBlur={() => {
if (!searchText) setSearchVisible(false)
}}
onClear={handleClear}
style={{ width: '100%', ...style }}
/>
setSearchVisible(true)}>
{icon}
)
}
export default memo(CollapsibleSearchBar)