import { Fragment, useState } from 'react'; import { ToggleGroup, ToggleGroupItem, ToggleGroupItemProps } from '@patternfly/react-core'; import { Table, Caption, Thead, Tr, Th, Tbody, Td } from '@patternfly/react-table'; interface Repository { name: string; branches: string | null; prs: string | null; workspaces: string; lastCommit: string; } type ExampleType = 'compact' | 'compactBorderless'; export const TableBasic: React.FunctionComponent = () => { // In real usage, this data would come from some external source like an API via props. const repositories: Repository[] = [ { name: 'one', branches: 'two', prs: 'three', workspaces: 'four', lastCommit: 'five' }, { name: 'one - 2', branches: null, prs: null, workspaces: 'four - 2', lastCommit: 'five - 2' }, { name: 'one - 3', branches: 'two - 3', prs: 'three - 3', workspaces: 'four - 3', lastCommit: 'five - 3' } ]; const columnNames = { name: 'Repositories', branches: 'Branches', prs: 'Pull requests', workspaces: 'Workspaces', lastCommit: 'Last commit' }; // This state is just for the ToggleGroup in this example and isn't necessary for Table usage. const [exampleChoice, setExampleChoice] = useState(''); const onExampleTypeChange: ToggleGroupItemProps['onChange'] = (event, _isSelected) => { const id = event.currentTarget.id; // Allow toggling off if clicking the already selected item setExampleChoice(exampleChoice === id ? '' : (id as ExampleType)); }; return ( {repositories.map((repo) => ( ))}
Simple table using composable components
{columnNames.name} {columnNames.branches} {columnNames.prs} {columnNames.workspaces} {columnNames.lastCommit}
{repo.name} {repo.branches} {repo.prs} {repo.workspaces} {repo.lastCommit}
); };