import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { getQueryParams } from '@/lib/route'; import { SharedData } from '@/types/global'; import { router, usePage } from '@inertiajs/react'; import { ChevronsUpDown } from 'lucide-react'; interface Props { className?: string; pageSizeKey?: string; pageData: Pagination; dropdownList: number[]; routeName: string; routeParams?: Record; } const TablePageSize = (props: Props) => { const page = usePage(); const urlParams = getQueryParams(page.url); const { pageData, dropdownList, className, routeName, routeParams, pageSizeKey = 'per_page' } = props; const { per_page } = pageData; const gotoPage = (size: number) => { router.get( route(routeName, { ...(routeParams || {}), ...urlParams, [pageSizeKey]: size, }), {}, { preserveState: true }, ); }; return (
{dropdownList.map((item) => ( gotoPage(item)} className={`text-center ${per_page === item && 'bg-muted'}`}> {item} ))}
); }; export default TablePageSize;