import { Fragment, useState } from 'react'; import { Button, Toolbar, ToolbarContent, ToolbarGroup, ToolbarItem, Pagination, PageSection, MenuToggle, MenuToggleElement, Label, Select, SelectOption, PaginationVariant } from '@patternfly/react-core'; import { Table, TableText, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table'; import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon'; import { DashboardWrapper } from '@patternfly/react-table/dist/esm/demos/DashboardWrapper'; import { rows, columns } from '@patternfly/react-table/dist/esm/demos/sampleData'; export const TableStaticBottomPagination: React.FunctionComponent = () => { const [isSelectOpen, setIsSelectOpen] = useState(false); const [page, setPage] = useState(1); const [perPage, setPerPage] = useState(10); const [paginatedRows, setPaginatedRows] = useState(rows.slice(0, 10)); const handleSetPage = ( _evt: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number, _perPage: number, startIdx: number, endIdx: number ) => { setPaginatedRows(rows.slice(startIdx, endIdx)); setPage(newPage); }; const handlePerPageSelect = ( _evt: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPerPage: number, newPage: number, startIdx: number, endIdx: number ) => { setPaginatedRows(rows.slice(startIdx, endIdx)); setPage(newPage); setPerPage(newPerPage); }; const renderPagination = (variant: PaginationVariant | 'bottom' | 'top', isCompact: boolean) => ( ); const renderLabel = (labelText: string) => { switch (labelText) { case 'Running': return ( {labelText} ); case 'Stopped': return ( {labelText} ); case 'Needs Maintenance': return ( {labelText} ); case 'Down': return ( {labelText} ); } }; const tableToolbar = ( ) => ( } ref={toggleRef} onClick={() => setIsSelectOpen(!isSelectOpen)} isExpanded={isSelectOpen} > Status )} isOpen={isSelectOpen} onOpenChange={(isOpen: boolean) => setIsSelectOpen(isOpen)} onSelect={() => setIsSelectOpen(!isSelectOpen)} > {[ Debug , Info , Warn , Error ]} Action {renderPagination('top', true)} ); return ( {tableToolbar} {columns.map((column, columnIndex) => ( {column} ))} {paginatedRows.map((row, rowIndex) => ( {row.name} {row.threads} {row.applications} {row.workspaces} {renderLabel(row.status)} {row.location} {row.lastModified} {row.url} ))} {renderPagination('bottom', false)} ); };