Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

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