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