MIF_E31221222/sigap-website/app/_hooks/use-pagination.ts

34 lines
1.0 KiB
TypeScript

import { useState, useEffect } from 'react';
export function usePagination(availableMonths: string[]) {
const [paginationState, setPaginationState] = useState<
Record<string, number>
>({});
useEffect(() => {
if (availableMonths && availableMonths.length > 0) {
const initialState: Record<string, number> = {};
availableMonths.forEach((month) => {
initialState[month] = 0; // Start at page 0 for each month
});
setPaginationState(initialState);
}
}, [availableMonths]);
// Pagination handler for a specific month
const handlePageChange = (monthKey: string, direction: 'next' | 'prev') => {
setPaginationState((prev) => {
const currentPage = prev[monthKey] || 0;
if (direction === 'next') {
return { ...prev, [monthKey]: currentPage + 1 };
} else if (direction === 'prev' && currentPage > 0) {
return { ...prev, [monthKey]: currentPage - 1 };
}
return prev;
});
};
return { paginationState, handlePageChange };
}