Proyectos de Subversion LeadersLinked - SPA

Rev

Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3462 stevensc 1
import React, { useState } from 'react';
3469 stevensc 2
import { useNavigate } from 'react-router-dom';
3462 stevensc 3
import { useSelector } from 'react-redux';
4
import { IconButton, Menu, MenuItem, styled, Typography } from '@mui/material';
5
import { MoreVert } from '@mui/icons-material';
6
 
7
import { parse } from '@app/utils';
8
 
9
import { Card, CardContent, CardMedia } from '@shared/components';
10
 
11
const OptionsButton = styled(IconButton)(({ theme }) => ({
12
  position: 'absolute',
13
  top: theme.spacing(1),
14
  right: theme.spacing(1),
15
  zIndex: 1
16
}));
17
 
18
export function KnowledgeCard({
3469 stevensc 19
  knowledge: { link_delete, link_edit, link_view, category, description, image, title },
3462 stevensc 20
  onEdit,
21
  onDelete
22
}) {
23
  const labels = useSelector(({ intl }) => intl.labels);
24
  const [anchorEl, setAnchorEl] = useState();
3469 stevensc 25
  const navigate = useNavigate();
3462 stevensc 26
  const open = Boolean(anchorEl);
27
 
28
  const handleClick = (event) => {
29
    setAnchorEl(event.currentTarget);
30
  };
31
 
32
  const handleClose = () => {
33
    setAnchorEl(null);
34
  };
35
 
36
  const handleMenuItemClick = (onClick) => {
37
    handleClose();
38
    onClick();
39
  };
40
 
41
  return (
3469 stevensc 42
    <Card onClick={() => navigate(link_view)}>
3468 stevensc 43
      <OptionsButton onClick={handleClick}>
3462 stevensc 44
        <MoreVert />
45
      </OptionsButton>
46
      <Menu
47
        anchorEl={anchorEl}
48
        open={open}
49
        onClose={handleClose}
50
        anchorOrigin={{
3463 stevensc 51
          vertical: 'bottom',
52
          horizontal: 'left'
3462 stevensc 53
        }}
54
        transformOrigin={{
55
          vertical: 'top',
56
          horizontal: 'right'
57
        }}
58
      >
3469 stevensc 59
        <MenuItem onClick={() => handleMenuItemClick(() => onEdit(link_edit))}>
3462 stevensc 60
          {labels.edit}
61
        </MenuItem>
3469 stevensc 62
        <MenuItem onClick={() => handleMenuItemClick(() => onDelete(link_delete))}>
3462 stevensc 63
          {labels.delete}
64
        </MenuItem>
65
      </Menu>
66
 
67
      <CardMedia height={200} src={image} alt={`${title} image`} />
68
 
69
      <CardContent>
70
        <Typography variant='h2'>{title}</Typography>
71
        <Typography variant='overline'>{category}</Typography>
72
        <Typography>{parse(description)}</Typography>
73
      </CardContent>
74
    </Card>
75
  );
76
}