@@ -10,7 +10,7 @@ import {
1010 GridToolbarExport
1111} from '@mui/x-data-grid' ;
1212import ScopedCssBaseline from '@material-ui/core/ScopedCssBaseline' ;
13- import FilterListIcon from '@material-ui/icons/FilterList ' ;
13+ import SearchIcon from '@material-ui/icons/Search ' ;
1414import React , { useEffect , useState } from 'react' ;
1515import { getConf } from '@jbrowse/core/configuration' ;
1616import { AppBar , Box , Button , Dialog , Paper , Popover , Toolbar , Tooltip , Typography } from '@material-ui/core' ;
@@ -174,12 +174,12 @@ const VariantTableWidget = observer(props => {
174174 < GridToolbarContainer >
175175 < GridToolbarColumnsButton />
176176 < Button
177- startIcon = { < FilterListIcon /> }
177+ startIcon = { < SearchIcon /> }
178178 size = "small"
179179 color = "primary"
180180 onClick = { ( ) => setFilterModalOpen ( true ) }
181181 >
182- Filter
182+ Search
183183 </ Button >
184184 < GridToolbarDensitySelector />
185185 < GridToolbarExport />
@@ -216,6 +216,7 @@ const VariantTableWidget = observer(props => {
216216 const [ filterModalOpen , setFilterModalOpen ] = useState ( false ) ;
217217 const [ filters , setFilters ] = useState ( [ ] ) ;
218218 const [ fieldTypeInfo , setFieldTypeInfo ] = useState < FieldModel [ ] > ( [ ] ) ;
219+ const [ hiddenColumns , setHiddenColumns ] = useState ( [ ] ) ;
219220
220221 const [ adapter , setAdapter ] = useState < EVAdapterClass | undefined > ( undefined )
221222
@@ -358,15 +359,27 @@ const VariantTableWidget = observer(props => {
358359 }
359360 }
360361
362+ const columnsWithLocalHideState = columns . map ( col => ( {
363+ ...col ,
364+ hide : hiddenColumns . includes ( col . field ) ,
365+ } ) ) ;
366+
361367 const gridElement = (
362368 < DataGrid
363- columns = { [ ...columns , actionsCol ] }
369+ columns = { [ ...columnsWithLocalHideState , actionsCol ] }
364370 rows = { features }
365371 components = { { Toolbar : ToolbarWithProps } }
366372 rowsPerPageOptions = { [ 10 , 25 , 50 , 100 ] }
367373 pageSize = { pageSize }
368374 density = "comfortable"
369375 onPageSizeChange = { ( newPageSize ) => setPageSize ( newPageSize ) }
376+ onColumnVisibilityChange = { ( params ) => {
377+ if ( params . isVisible ) {
378+ setHiddenColumns ( prev => prev . filter ( field => field !== params . field ) ) ;
379+ } else {
380+ setHiddenColumns ( prev => [ ...prev , params . field ] ) ;
381+ }
382+ } }
370383 />
371384 )
372385
0 commit comments