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';
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({
3473 stevensc 18
  knowledge: { category, description, image, title },
3462 stevensc 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) => {
3472 stevensc 27
    event.stopPropagation();
3462 stevensc 28
    setAnchorEl(event.currentTarget);
29
  };
30
 
3472 stevensc 31
  const handleClose = (event) => {
32
    event.stopPropagation();
3462 stevensc 33
    setAnchorEl(null);
34
  };
35
 
3472 stevensc 36
  const handleMenuItemClick = (onClick, event) => {
37
    event.stopPropagation();
3462 stevensc 38
    handleClose();
39
    onClick();
40
  };
41
 
42
  return (
3473 stevensc 43
    <Card>
3468 stevensc 44
      <OptionsButton onClick={handleClick}>
3462 stevensc 45
        <MoreVert />
46
      </OptionsButton>
47
      <Menu
48
        anchorEl={anchorEl}
49
        open={open}
50
        onClose={handleClose}
51
        anchorOrigin={{
3463 stevensc 52
          vertical: 'bottom',
53
          horizontal: 'left'
3462 stevensc 54
        }}
55
        transformOrigin={{
56
          vertical: 'top',
57
          horizontal: 'right'
58
        }}
59
      >
3472 stevensc 60
        <MenuItem onClick={(event) => handleMenuItemClick(onEdit, event)}>{labels.edit}</MenuItem>
61
        <MenuItem onClick={(event) => handleMenuItemClick(onDelete, event)}>
3462 stevensc 62
          {labels.delete}
63
        </MenuItem>
64
      </Menu>
65
 
66
      <CardMedia height={200} src={image} alt={`${title} image`} />
67
 
68
      <CardContent>
69
        <Typography variant='h2'>{title}</Typography>
70
        <Typography variant='overline'>{category}</Typography>
71
        <Typography>{parse(description)}</Typography>
72
      </CardContent>
73
    </Card>
74
  );
75
}