import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { ScrollArea } from '@/components/ui/scroll-area'; import { getQueryParams } from '@/lib/route'; import { SharedData } from '@/types/global'; import { router, usePage } from '@inertiajs/react'; interface Props { className: string; routeName: string; paginationKey?: string; routeParams?: Record; paginationInfo: Pagination; } const TableFooter = (props: Props) => { const { paginationInfo, paginationKey = 'page' } = props; const { current_page, last_page, first_page_url, last_page_url, next_page_url, prev_page_url } = paginationInfo; const page = usePage(); const urlParams = getQueryParams(page.url); const dropdownList = []; if (last_page > 0) { for (let i = 1; i <= last_page; i++) { dropdownList.push({ key: `${i}`, value: i, }); } } else { dropdownList.push({ key: '1', value: 1, }); } const gotoPage = (pageNumber: number) => { router.get( route(props.routeName, { ...(props.routeParams || {}), ...urlParams, [paginationKey]: pageNumber, }), {}, { preserveState: true }, ); }; const gotoRoute = (path: string) => { const pathParams = getQueryParams(path); router.get( route(props.routeName, { ...(props.routeParams || {}), ...urlParams, [paginationKey]: pathParams.page, }), {}, { preserveState: true }, ); }; const menuItem = (e: number) => { return `text-center py-1 ${current_page === e && 'bg-primary-50'}`; }; return (
{current_page} of {last_page} | Go to page: {dropdownList.map((item) => ( gotoPage(item.value)} className={menuItem(item.value)}> {item.value} ))}
); }; export default TableFooter;