Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 677 | Rev 1659 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5 stevensc 1
import React, { useState } from 'react'
678 stevensc 2
import { Menu, MenuItem } from '@mui/material'
3
import styled, { css } from 'styled-components'
5 stevensc 4
import IconButton from '@mui/material/IconButton'
5
import MoreVertIcon from '@mui/icons-material/MoreVert'
6
 
7
const StyledOptionsButton = styled(IconButton)`
8
  position: absolute !important;
9
  right: ${(props) => props.right || '0'};
10
  top: ${(props) => props.top || '50%'};
11
  z-index: 100;
677 stevensc 12
  ${(props) =>
13
    !props.top &&
14
    css`
15
      transform: translateY(-50%);
16
    `}
5 stevensc 17
`
18
 
19
const Options = ({ options, right, top }) => {
20
  const [anchorEl, setAnchorEl] = useState(null)
21
  const open = Boolean(anchorEl)
22
 
23
  const handleClick = (event) => {
24
    setAnchorEl(event.currentTarget)
25
  }
26
 
27
  const handleClose = () => {
28
    setAnchorEl(null)
29
  }
30
 
31
  return (
32
    <>
33
      <StyledOptionsButton
34
        right={right}
35
        top={top}
36
        onClick={handleClick}
37
        aria-controls={open ? 'account-menu' : undefined}
677 stevensc 38
        aria-haspopup='true'
5 stevensc 39
        aria-expanded={open ? 'true' : undefined}
40
      >
41
        <MoreVertIcon />
42
      </StyledOptionsButton>
43
      <Menu
44
        anchorEl={anchorEl}
677 stevensc 45
        id='account-menu'
5 stevensc 46
        open={open}
47
        onClose={handleClose}
48
        onClick={handleClose}
49
        transformOrigin={{ horizontal: 'right', vertical: 'top' }}
50
        anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}
51
      >
52
        {options.map((option, index) => (
53
          <MenuItem
54
            key={index}
55
            onClick={() => {
56
              option.action()
57
              handleClose()
58
            }}
59
          >
60
            {option.label}
61
          </MenuItem>
62
        ))}
63
      </Menu>
64
    </>
65
  )
66
}
67
 
68
export default Options