| import { Cross2Icon } from '@radix-ui/react-icons'; | |
| import { Table } from '@tanstack/react-table'; | |
| import { useTranslation } from 'react-i18next'; | |
| import { Button } from '@/components/ui/button'; | |
| import { Input } from '@/components/ui/input'; | |
| interface DataTableToolbarProps<TData> { | |
| table: Table<TData>; | |
| } | |
| export function DataTableToolbar<TData>({ table }: DataTableToolbarProps<TData>) { | |
| const { t } = useTranslation(); | |
| const isFiltered = table.getState().columnFilters.length > 0; | |
| return ( | |
| <div className='flex items-center justify-between'> | |
| <div className='flex flex-1 flex-col-reverse items-start gap-y-2 sm:flex-row sm:items-center sm:space-x-2'> | |
| <Input | |
| placeholder={t('projects.searchProjects')} | |
| value={(table.getColumn('search')?.getFilterValue() as string) ?? ''} | |
| onChange={(event) => table.getColumn('search')?.setFilterValue(event.target.value)} | |
| className='h-8 w-[150px] lg:w-[300px]' | |
| /> | |
| {isFiltered && ( | |
| <Button | |
| variant='ghost' | |
| onClick={() => table.resetColumnFilters()} | |
| className='h-8 px-2 lg:px-3' | |
| > | |
| {t('common.filters.reset')} | |
| <Cross2Icon className='ml-2 h-4 w-4' /> | |
| </Button> | |
| )} | |
| </div> | |
| </div> | |
| ); | |
| } | |