import { FC, ReactNode, useState, useEffect } from 'react'; import SkeletonTable from '@patternfly/react-component-groups/dist/dynamic/SkeletonTable'; import { Table, Tbody, Td, Th, Tr, Thead } from '@patternfly/react-table'; import { Button, Stack, StackItem } from '@patternfly/react-core'; interface Repository { name: string; branches: string | null; prs: string | null; workspaces: string; lastCommit: string; } export const SkeletonTableExample: FC = () => { const [ isLoaded, setIsLoaded ] = useState(false); const loadData = () => { setIsLoaded(false); setTimeout(() => { setIsLoaded(true); }, 5000); }; 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' }; const table: ReactNode = !isLoaded ? ( ) : ( {repositories.map((repo) => ( ))}
{columnNames.name} {columnNames.branches} {columnNames.prs} {columnNames.workspaces} {columnNames.lastCommit}
{repo.name} {repo.branches || 'N/A'} {repo.prs || 'N/A'} {repo.workspaces} {repo.lastCommit}
); useEffect(() => { loadData(); }, []); return ( <> {table} ); };