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 },
3475 stevensc 19
  onClick,
3462 stevensc 20
  onEdit,
21
  onDelete
22
}) {
23
  const labels = useSelector(({ intl }) => intl.labels);
24
  const [anchorEl, setAnchorEl] = useState();
25
  const open = Boolean(anchorEl);
26
 
27
  const handleClick = (event) => {
3472 stevensc 28
    event.stopPropagation();
3462 stevensc 29
    setAnchorEl(event.currentTarget);
30
  };
31
 
3472 stevensc 32
  const handleClose = (event) => {
33
    event.stopPropagation();
3462 stevensc 34
    setAnchorEl(null);
35
  };
36
 
3472 stevensc 37
  const handleMenuItemClick = (onClick, event) => {
38
    event.stopPropagation();
3462 stevensc 39
    handleClose();
40
    onClick();
41
  };
42
 
43
  return (
3476 stevensc 44
    <Card onClick={onClick} styles={{ cursor: 'pointer' }}>
3468 stevensc 45
      <OptionsButton onClick={handleClick}>
3462 stevensc 46
        <MoreVert />
47
      </OptionsButton>
48
      <Menu
49
        anchorEl={anchorEl}
50
        open={open}
51
        onClose={handleClose}
52
        anchorOrigin={{
3463 stevensc 53
          vertical: 'bottom',
54
          horizontal: 'left'
3462 stevensc 55
        }}
56
        transformOrigin={{
57
          vertical: 'top',
58
          horizontal: 'right'
59
        }}
60
      >
3472 stevensc 61
        <MenuItem onClick={(event) => handleMenuItemClick(onEdit, event)}>{labels.edit}</MenuItem>
62
        <MenuItem onClick={(event) => handleMenuItemClick(onDelete, event)}>
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
}