import React from 'react'; import { Models } from 'appwrite'; import SearchBar from './SearchBar'; import DataTable, { Column } from './DataTable'; import Pagination from './Pagination'; import TableActions from './TableActions'; interface CategoriaListProps { categorias: Models.Document[]; loading: boolean; isChangingPage?: boolean; error: string | null; totalCategorias: number; currentPage: number; pageSize: number; onEdit: (lab: Models.Document) => void; onDelete: (id: string) => Promise; onPrevPage: () => void; onNextPage: () => void; onSearch: (nome: string) => void; } const CategoriaList: React.FC = ({ categorias, loading, isChangingPage = false, error, totalCategorias, currentPage, pageSize, onEdit, onDelete, onPrevPage, onNextPage, onSearch }) => { const totalPages = Math.ceil(totalCategorias / pageSize); const startItem = (currentPage - 1) * pageSize + 1; const endItem = Math.min(currentPage * pageSize, totalCategorias); const [search, setSearch] = React.useState(''); const handleSearch = () => { onSearch(search); }; const handleDelete = async (id: string) => { if (confirm('Tem certeza que deseja deletar esta categoria?')) { await onDelete(id); } }; const columns: Column[] = [ { key: 'nome', header: 'Nome' }, { key: '$id', header: 'ID' }, { key: '$createdAt', header: 'Data de Criação', render: row => new Date(row.$createdAt).toLocaleDateString('pt-BR') }, ]; return (
{error && (
{error}
)} {isChangingPage && (
Carregando página...
)} {loading ? (
Carregando categorias...
) : ( <> ( onEdit(lab)} onDelete={() => handleDelete(lab.$id)} /> )} />
{totalCategorias > 0 ? ( <>Mostrando {startItem} - {endItem} de {totalCategorias} categorias ) : ( 'Total de categorias: 0' )}
)}
); }; export default CategoriaList;