Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5904 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5285 stevensc 1
import React, { useEffect, useState } from 'react'
2
import axios from '../../../../utils/axios'
3
import Avatar from '../../../../shared/Avatar/Avatar'
4
import EmptySection from '../../../../shared/empty-section/EmptySection'
5
import ExpandLessIcon from '@mui/icons-material/ExpandLess'
6
import ExpandMoreIcon from '@mui/icons-material/ExpandMore'
7110 stevensc 7
import { useSelector } from 'react-redux'
8
import { Link } from 'react-router-dom'
5285 stevensc 9
 
10
const GroupsInfo = ({
11
  url = '/helpers/my-groups',
12
  title = 'Mis grupos',
5904 stevensc 13
  display = false,
5285 stevensc 14
}) => {
15
  const [widgetData, setWidgetData] = useState([])
16
  const [displayMenu, setDisplayMenu] = useState(display)
7110 stevensc 17
  const labels = useSelector(({ intl }) => intl.labels)
5285 stevensc 18
  const [lookMore, setLookMore] = useState(false)
19
 
20
  const getData = () => {
5904 stevensc 21
    axios.get(url).then(({ data: response }) => {
22
      const { success, data } = response
23
      if (success) {
24
        setWidgetData(data.sort((a, b) => a.priority - b.priority).reverse())
25
      }
26
    })
5285 stevensc 27
  }
28
 
7110 stevensc 29
  const toggleMenu = () => {
30
    setDisplayMenu(!displayMenu)
31
  }
5285 stevensc 32
 
33
  const dataSlice = () => {
34
    let infoFollows = [...widgetData]
35
    if (!lookMore) {
36
      infoFollows = infoFollows.slice(0, 3)
37
    }
38
    return infoFollows
39
  }
40
 
7110 stevensc 41
  useEffect(() => {
42
    getData()
43
  }, [])
44
 
5285 stevensc 45
  return (
5904 stevensc 46
    <div className="sidebar__recent-item__container">
47
      <section className="sidebar__recent-item">
5285 stevensc 48
        <p>{title}</p>
7110 stevensc 49
        <button className="sidebar__recent-icon" onClick={toggleMenu}>
5285 stevensc 50
          {displayMenu ? <ExpandLessIcon /> : <ExpandMoreIcon />}
51
        </button>
52
      </section>
53
 
54
      <ul className={`helper__list ${displayMenu ? 'show' : 'hide'}`}>
5904 stevensc 55
        {widgetData.length ? (
56
          dataSlice().map(({ id, name, profile, image }) => (
5285 stevensc 57
            <li key={id}>
7110 stevensc 58
              <Link
5904 stevensc 59
                href={profile}
60
                className="helper__list-item"
61
                target="secondary"
62
              >
63
                <Avatar imageUrl={image} size="md" name={name} />
5285 stevensc 64
                <span>{name}</span>
7110 stevensc 65
              </Link>
5285 stevensc 66
            </li>
5904 stevensc 67
          ))
68
        ) : (
7110 stevensc 69
          <EmptySection message={labels.datatable_empty} />
5904 stevensc 70
        )}
5285 stevensc 71
 
5904 stevensc 72
        {widgetData.length >= 3 && (
73
          <li
74
            className="helper__list-item justify-content-center cursor-pointer py-2"
75
            onClick={() => setLookMore(!lookMore)}
76
          >
7110 stevensc 77
            <span>{lookMore ? labels.view_less : labels.view_more}</span>
5285 stevensc 78
          </li>
5904 stevensc 79
        )}
5285 stevensc 80
      </ul>
81
    </div>
82
  )
83
}
84
 
85
export default GroupsInfo