Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

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