77 getSortedRowModel ,
88 useReactTable ,
99} from '@tanstack/react-table'
10- import { ChevronDown } from 'lucide-react'
1110import { useServerFn } from '@tanstack/react-start'
1211import { useQuery } from '@tanstack/react-query'
1312import { createToast } from 'vercel-toast'
@@ -19,17 +18,10 @@ import type {
1918 Row ,
2019 RowData ,
2120 SortingState ,
22- VisibilityState ,
2321} from '@tanstack/react-table'
2422import type { Priority , Prisma } from '@prisma/client'
2523import { useLocalStorage } from 'usehooks-ts'
2624import { Button } from '@/components/ui/button'
27- import {
28- DropdownMenu ,
29- DropdownMenuCheckboxItem ,
30- DropdownMenuContent ,
31- DropdownMenuTrigger ,
32- } from '@/components/ui/dropdown-menu'
3325import {
3426 Table ,
3527 TableBody ,
@@ -190,7 +182,6 @@ function App() {
190182 'employees.table' ,
191183 [ ] ,
192184 )
193- const [ columnVisibility , setColumnVisibility ] = useState < VisibilityState > ( { } )
194185 const [ _ , setReviewQueue ] = useAtom ( reviewQueueAtom )
195186
196187 const getEmployeesFn = useServerFn ( getEmployees )
@@ -428,11 +419,13 @@ function App() {
428419 getCoreRowModel : getCoreRowModel ( ) ,
429420 getSortedRowModel : getSortedRowModel ( ) ,
430421 getFilteredRowModel : getFilteredRowModel ( ) ,
431- onColumnVisibilityChange : setColumnVisibility ,
432422 state : {
433423 sorting,
434424 columnFilters,
435- columnVisibility,
425+ columnVisibility : {
426+ changePercentage : false ,
427+ level : false ,
428+ } ,
436429 } ,
437430 filterFns : { } ,
438431 } )
@@ -461,32 +454,6 @@ function App() {
461454 >
462455 Review visible employees
463456 </ Button >
464- < DropdownMenu >
465- < DropdownMenuTrigger asChild >
466- < Button variant = "outline" className = "ml-auto" >
467- Columns < ChevronDown />
468- </ Button >
469- </ DropdownMenuTrigger >
470- < DropdownMenuContent align = "end" >
471- { table
472- . getAllColumns ( )
473- . filter ( ( column ) => column . getCanHide ( ) )
474- . map ( ( column ) => {
475- return (
476- < DropdownMenuCheckboxItem
477- key = { column . id }
478- className = "capitalize"
479- checked = { column . getIsVisible ( ) }
480- onCheckedChange = { ( value ) =>
481- column . toggleVisibility ( ! ! value )
482- }
483- >
484- { column . id }
485- </ DropdownMenuCheckboxItem >
486- )
487- } ) }
488- </ DropdownMenuContent >
489- </ DropdownMenu >
490457 </ div >
491458 </ div >
492459 < TableFilters table = { table } />
@@ -495,36 +462,24 @@ function App() {
495462 < TableHeader >
496463 { table . getHeaderGroups ( ) . map ( ( headerGroup ) => (
497464 < TableRow key = { headerGroup . id } >
498- { headerGroup . headers
499- . filter (
500- ( header ) =>
501- header . column . id !== 'level' &&
502- header . column . id !== 'changePercentage' ,
465+ { headerGroup . headers . map ( ( header ) => {
466+ return (
467+ < TableHead key = { header . id } >
468+ { header . isPlaceholder
469+ ? null
470+ : flexRender (
471+ header . column . columnDef . header ,
472+ header . getContext ( ) ,
473+ ) }
474+ { header . column . getCanFilter ( ) ? (
475+ < div className = "hidden" >
476+ { /* for some reason removing the filters cause infinite re-renders */ }
477+ < Filter column = { header . column } />
478+ </ div >
479+ ) : null }
480+ </ TableHead >
503481 )
504- . map ( ( header ) => {
505- return (
506- < TableHead key = { header . id } >
507- { header . isPlaceholder
508- ? null
509- : flexRender (
510- header . column . columnDef . header ,
511- header . getContext ( ) ,
512- ) }
513- { header . column . getCanFilter ( ) &&
514- header . column . id !== 'name' &&
515- header . column . id !== 'level' &&
516- header . column . id !== 'stepLevel' &&
517- header . column . id !== 'priority' &&
518- header . column . id !== 'reviewer' &&
519- header . column . id !== 'reviewed' &&
520- header . column . id !== 'lastChange' ? (
521- < div >
522- < Filter column = { header . column } />
523- </ div >
524- ) : null }
525- </ TableHead >
526- )
527- } ) }
482+ } ) }
528483 </ TableRow >
529484 ) ) }
530485 </ TableHeader >
0 commit comments