@@ -29,6 +29,7 @@ import MenuIcon from '@material-ui/icons/Menu';
2929import AddIcon from '@material-ui/icons/Add' ;
3030import RemoveIcon from '@material-ui/icons/Remove' ;
3131import IconButton from '@material-ui/core/IconButton' ;
32+ import ClearIcon from '@material-ui/icons/Clear' ;
3233import ChevronRightIcon from '@material-ui/icons/ChevronRight' ;
3334import Logo from './logo.jsx' ;
3435
@@ -40,7 +41,7 @@ class MenuBar extends Component {
4041 super ( props )
4142 this . state = {
4243 activePkg : null ,
43- filter : null ,
44+ filter : '' ,
4445 found : { }
4546 } ;
4647 }
@@ -109,6 +110,7 @@ class MenuBar extends Component {
109110 this . state . filter &&
110111 ! this . state . found [ pkgPath ]
111112 ) {
113+ // Case: Filter does not match package or parent namespace
112114 return null ;
113115 }
114116 return (
@@ -172,16 +174,21 @@ class MenuBar extends Component {
172174 found
173175 } ) ;
174176 } else {
175- const keys = Object . keys ( this . state . found ) ;
176- const newState = { } ;
177- for ( let i = 0 ; i < keys . length ; i ++ ) {
178- newState [ keys [ i ] ] = false ;
179- }
180- this . setState ( {
181- ... newState ,
182- found : { }
183- } ) ;
177+ this . resetFilter ( ) ;
178+ }
179+ }
180+
181+ resetFilter = ( ) => {
182+ const keys = Object . keys ( this . state . found ) ;
183+ const newState = { } ;
184+ for ( let i = 0 ; i < keys . length ; i ++ ) {
185+ newState [ keys [ i ] ] = false ;
184186 }
187+ this . setState ( {
188+ ...newState ,
189+ filter : '' ,
190+ found : { }
191+ } ) ;
185192 }
186193
187194 checkFilter ( state , docs , path , filter ) {
@@ -242,12 +249,19 @@ class MenuBar extends Component {
242249 < select className = "side-menu-version-select" id = "lang" onChange = { this . props . onVersionChange } value = { this . state . version } >
243250 < option value = "v0.0.87" > v0.0.87</ option >
244251 </ select >
245- < input
246- className = "side-menu-filter-input"
247- type = "text"
248- onChange = { this . handleFilterChange }
249- placeholder = "Type here to filter menu..."
250- />
252+ < div className = "side-menu-filter" >
253+ < input
254+ className = "side-menu-filter-input"
255+ type = "text"
256+ onChange = { this . handleFilterChange }
257+ value = { this . state . filter }
258+ placeholder = "Type here to filter menu..."
259+ />
260+ { this . state . filter ? < ClearIcon
261+ className = "side-menu-filter-clear"
262+ onClick = { this . resetFilter }
263+ /> : null }
264+ </ div >
251265 < div className = "side-menu-list-wrapper" >
252266 < List disablePadding >
253267 { this . props . packageTree ?
0 commit comments