Files
edr-platform/apps/edr-passenger-web/backoffice/src/lib/use-pagination.ts
2026-07-22 08:02:23 +03:00

19 lines
583 B
TypeScript

import { useState, useMemo } from 'react';
export function usePagination<T>(items: T[], pageSize = 20) {
const [page, setPage] = useState(1);
const totalPages = Math.max(1, Math.ceil(items.length / pageSize));
const safePage = Math.min(page, totalPages);
const paged = useMemo(
() => items.slice((safePage - 1) * pageSize, safePage * pageSize),
[items, safePage, pageSize],
);
// Reset to page 1 whenever the source list changes length (e.g. after a filter)
const reset = () => setPage(1);
return { paged, page: safePage, totalPages, setPage, reset };
}