Newer
Older
import {
VStack,
TableContainer,
Table,
Thead,
Tr,
Th,
Tbody,
Td,
Text,
TableCaption,
Tooltip,
HStack,
Icon,
IconButton,
import { GetPatternsQuery } from './query-builder'
import { RemovePatternButton } from './remove-pattern'
import { FaTrash } from 'react-icons/fa'
import { AddImplementationModal } from '../implementations/add-implementation'
export const Patterns: React.FC = () => {
const patternsQuery = GetPatternsQuery.useQuery({})
<TableCaption>Patrones disponibles</TableCaption>
<Thead>
<Tr>
{tableHeaders.map((header, index) => (
<Th color="gray.500" key={`th-${index}`}>
{header}
</Th>
{match(patternsQuery)
.with({ status: 'success', data: [] }, () => (
<Text>No se encontraron patrones</Text>
))
.with({ status: 'success' }, ({ data }) =>
data.map((pattern, index) => (
<Tr key={`pattern-${pattern.name}-${index}`}>
</Link>
</Td>
<Td>
<Tooltip label={pattern.description} hasArrow>
<Text isTruncated maxW="sm">
{pattern.description}
</Text>
</Tooltip>
</Td>
<Td>
<ActionsRow pattern={pattern} />
</Td>
</Tr>
))
)
.with({ status: 'loading' }, () => (
<Tr>
<Td colSpan={tableHeaders.length}>
<HStack justifyContent="center">
<Spinner />
</HStack>
</Td>
</Tr>
))
<HStack w="full" justifyContent="flex-end">
<AddPatternButton />
</HStack>
</VStack>
)
}
type ActionsRowProps = {
pattern: Pattern
}
const ActionsRow: React.FC<ActionsRowProps> = ({ pattern }) => {
<Tooltip
hasArrow
shouldWrapChildren
label={<Text>Ver detalles</Text>}
>
<IconButton
aria-label="view pattern"
variant="unstyled"
icon={<Icon as={FaEye} />}
/>
</Tooltip>
</Link>
<Tooltip
hasArrow
shouldWrapChildren
label={<Text>Agregar implementacion</Text>}
>
</Tooltip>
<Tooltip hasArrow shouldWrapChildren label={<Text>Editar</Text>}>
<IconButton
aria-label="edit pattern"
variant="unstyled"
<RemovePatternButton pattern={pattern} hasTooltip={true}>
<IconButton
aria-label="remove pattern"
variant="unstyled"
icon={<Icon as={FaTrash} />}
/>
</RemovePatternButton>
</HStack>
{editPatternDisclosure.isOpen && (
<EditPatternModal
disclosure={editPatternDisclosure}
pattern={pattern}
{addImplementationDisclosure.isOpen && (
<AddImplementationModal
disclosure={addImplementationDisclosure}
pattern={pattern}
/>
)}