import React, { useState } from "react"; import { Stack, TableBody, TableFooter, TablePagination, TableRow, Typography, } from "@mui/material"; import TablePaginationActions from "@mui/material/TablePagination/TablePaginationActions"; import { Table } from "../../../components/Table"; import { TableCell } from "../../../components/Table/TableCell"; import TableHead from "../../../components/Table/TableHead"; import TableHeading from "../../../components/Table/TableHeading"; import { useI18n } from "../../../contexts/I18nContext"; import { SubscriptionPeriod } from "../types/subscription"; import SubscriptionsListItem from "./SubscriptionsListItem"; export interface SubscriptionsListProps { periods: SubscriptionPeriod[] | null; refresh: () => void; } export const SubscriptionsList: React.FC = ({ periods }) => { const { t } = useI18n(); const [page, setPage] = useState(0); const [rowsPerPage, setRowsPerPage] = useState(3); // Avoid a layout jump when reaching the last page with empty rows. const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - (periods?.length ?? 0)) : 0; const handleChangePage = (_: React.MouseEvent | null, newPage: number) => { setPage(newPage); }; const handleChangeRowsPerPage = ( event: React.ChangeEvent, ) => { setRowsPerPage(Number.parseInt(event.target.value, 10)); setPage(0); }; if (periods == null || periods?.length === 0) return null; return ( <> {t("Payments")} {t("Payment date")} {t("Due date")} {t("Amount")} {t("#")} {t("Status")} {periods && (rowsPerPage > 0 ? periods.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) : periods ).map((row) => )} {emptyRows > 0 && ( )}
); }; export default SubscriptionsList;