@@ -194,9 +194,15 @@ const Autocomplete = ({ drawerOpen }: Props): ReactElement => {
194194 setOpen ( false ) ;
195195 } ;
196196
197+ const handleClickAway = ( ) => {
198+ setOpen ( false ) ;
199+ setOpenFilter ( false ) ;
200+ } ;
201+
197202 const handleOnChange = ( query : string ) => {
198203 setQuery ( query ) ;
199204 setSelected ( null ) ;
205+ setOpenFilter ( false ) ;
200206 if ( query !== '' ) {
201207 setLoading ( true ) ;
202208 } else {
@@ -214,7 +220,6 @@ const Autocomplete = ({ drawerOpen }: Props): ReactElement => {
214220 < ClickAwayListener
215221 onClickAway = { ( ) => {
216222 setOpen ( false ) ;
217- setOpenFilter ( false ) ;
218223 } }
219224 >
220225 < div >
@@ -354,33 +359,48 @@ const Autocomplete = ({ drawerOpen }: Props): ReactElement => {
354359
355360 return (
356361 < div style = { { position : 'relative' , width : drawerOpen ? '100%' : '65%' } } >
357- < div className = { searchBarRow } >
358- < TextField
359- fullWidth
360- ref = { inputRef }
361- value = { query }
362- placeholder = { placeholderText }
363- className = { text }
364- variant = "outlined"
365- style = { {
366- borderRadius : '10px' ,
367- width : ! isMobile ? '100%' : '98%' ,
368- } }
369- onKeyDown = { textFieldHandleListKeyDown }
370- onChange = { ( event ) => {
371- const value = event . target . value ;
372- if ( value !== '' || value !== null ) {
373- handleOnChange ( value ) ;
374- }
375- } }
376- InputProps = { getInputProps ( ) }
377- />
378- < IconButton onClick = { handleToggleFilter } className = { filterIconBackground } disableRipple >
379- < img src = { filterIcon } alt = { 'filter-icon' } style = { { width : '21.4px' , height : '21.4px' } } />
380- </ IconButton >
381- </ div >
382- < Menu />
383- < FilterSection filters = { filters } onChange = { handleFilterChange } open = { openFilter } />
362+ < ClickAwayListener onClickAway = { handleClickAway } >
363+ < div >
364+ < div className = { searchBarRow } >
365+ < TextField
366+ fullWidth
367+ ref = { inputRef }
368+ value = { query }
369+ placeholder = { placeholderText }
370+ className = { text }
371+ variant = "outlined"
372+ style = { {
373+ borderRadius : '10px' ,
374+ width : ! isMobile ? '100%' : '98%' ,
375+ } }
376+ onKeyDown = { textFieldHandleListKeyDown }
377+ onChange = { ( event ) => {
378+ const value = event . target . value ;
379+ if ( value !== '' || value !== null ) {
380+ handleOnChange ( value ) ;
381+ }
382+ } }
383+ InputProps = { getInputProps ( ) }
384+ />
385+ < IconButton
386+ onClick = { ( e ) => {
387+ e . stopPropagation ( ) ; // Prevent click from triggering ClickAwayListener
388+ handleToggleFilter ( ) ;
389+ } }
390+ className = { filterIconBackground }
391+ disableRipple
392+ >
393+ < img
394+ src = { filterIcon }
395+ alt = { 'filter-icon' }
396+ style = { { width : '21.4px' , height : '21.4px' } }
397+ />
398+ </ IconButton >
399+ </ div >
400+ < Menu />
401+ < FilterSection filters = { filters } onChange = { handleFilterChange } open = { openFilter } />
402+ </ div >
403+ </ ClickAwayListener >
384404 </ div >
385405 ) ;
386406} ;
0 commit comments