diff --git a/web/src/pages/Patterns/patterns.tsx b/web/src/pages/Patterns/patterns.tsx index 0664c8beffded4361e1c271e63c46c572664c8f5..4c9f54d24e32e3a31627c5d08ad9211e3ced9d6b 100644 --- a/web/src/pages/Patterns/patterns.tsx +++ b/web/src/pages/Patterns/patterns.tsx @@ -124,7 +124,7 @@ const ActionsRow: React.FC<ActionsRowProps> = ({ pattern }) => { variant="unstyled" icon={<Icon as={FaEdit} />} /> - <RemovePatternIconButton patternId={pattern.id} /> + <RemovePatternIconButton pattern={pattern} /> </HStack> ) } diff --git a/web/src/pages/Patterns/remove-pattern/remove-pattern-icon-button.tsx b/web/src/pages/Patterns/remove-pattern/remove-pattern-icon-button.tsx index 67799fc20c093e20f5d897aa80c8f2e5e8f5c1e6..73d8f4984cae2476183d445f46e7de13b7f1b60d 100644 --- a/web/src/pages/Patterns/remove-pattern/remove-pattern-icon-button.tsx +++ b/web/src/pages/Patterns/remove-pattern/remove-pattern-icon-button.tsx @@ -1,18 +1,34 @@ import React from 'react' -import { IconButtonProps, IconButton, Icon } from '@chakra-ui/react' +import { + IconButtonProps, + IconButton, + Icon, + useDisclosure, + AlertDialog, + AlertDialogOverlay, + AlertDialogContent, + AlertDialogHeader, + AlertDialogBody, + AlertDialogFooter, + Button, + Text, +} from '@chakra-ui/react' import { FaTrash } from 'react-icons/fa' import { DeletePatternMutation, GetPatternsQuery } from '../query-builder' import { useQueryClient } from 'react-query' +import { Pattern } from 'src/models' export type RemovePatternIconButtonProps = { - patternId: string + pattern: Pattern } & Partial<IconButtonProps> export const RemovePatternIconButton: React.FC< RemovePatternIconButtonProps -> = ({ patternId, ...props }) => { +> = ({ pattern, ...props }) => { const queryClient = useQueryClient() + const { isOpen, onOpen, onClose } = useDisclosure() + const cancelRef = React.useRef<HTMLButtonElement>(null) const deletePatternMutation = DeletePatternMutation.useMutation({ onSuccess: () => { @@ -21,15 +37,44 @@ export const RemovePatternIconButton: React.FC< }) const handleDeletePattern = () => { - deletePatternMutation.mutate({ id: patternId }) + deletePatternMutation.mutate({ id: pattern.id }) } return ( - <IconButton - aria-label="view pattern" - variant="unstyled" - icon={<Icon as={FaTrash} />} - {...props} - onClick={handleDeletePattern} - /> + <> + <IconButton + aria-label="view pattern" + variant="unstyled" + icon={<Icon as={FaTrash} />} + {...props} + onClick={onOpen} + /> + <AlertDialog + isOpen={isOpen} + onClose={onClose} + leastDestructiveRef={cancelRef} + > + <AlertDialogOverlay> + <AlertDialogContent> + <AlertDialogHeader fontSize="lg" fontWeight="bold"> + Eliminar este patron? + </AlertDialogHeader> + <AlertDialogBody> + <Text> + Si eliminas el patron <Text as="b">{pattern.title}</Text> todos + sus datos asociados seran eliminados. + </Text> + </AlertDialogBody> + <AlertDialogFooter> + <Button ref={cancelRef} variant="ghost" onClick={onClose}> + Cancelar + </Button> + <Button variant="solid" onClick={handleDeletePattern} ml="3"> + Eliminar + </Button> + </AlertDialogFooter> + </AlertDialogContent> + </AlertDialogOverlay> + </AlertDialog> + </> ) }