Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
3506 stevensc 1
/* eslint-disable react/prop-types */
1 www 2
import React from "react";
3
import { useEffect, useState } from "react";
2443 stevensc 4
import { axios } from "../../../utils";
1 www 5
 
3897 stevensc 6
const CompanyFollowers = ({ companyId }) => {
1 www 7
 
8
  const [companyFollowers, setCompanyFollowers] = useState([]);
3897 stevensc 9
  const [showFollowersModal, setShowFollowersModal] = useState(false);
1696 steven 10
  const [lookMore, setLookMore] = useState(false);
3506 stevensc 11
 
1 www 12
  useEffect(() => {
3506 stevensc 13
    axios.get(`/helpers/company-follower/${companyId}`)
14
      .then(({ data }) => {
15
        if (data.success) setCompanyFollowers(data.data)
16
      })
1 www 17
  }, []);
1696 steven 18
 
19
  const getData = () => {
20
    let infoFollows = [...companyFollowers]
2443 stevensc 21
    if (!lookMore) {
2943 stevensc 22
      infoFollows = infoFollows.slice(0, 3);
1696 steven 23
    }
24
    return infoFollows
25
  }
3892 stevensc 26
 
1 www 27
  return (
3897 stevensc 28
    <>
29
      <div className="peopleYouMayKnow">
30
        <div className="sd-title d-flex align-items-center justify-content-between">
31
          <h3>Seguidores:</h3>
32
          <a href="#"
33
            onClick={(e) => {
34
              e.preventDefault()
35
              setLookMore(!lookMore)
36
            }}
37
          >
38
            {lookMore ? 'Ver menos' : 'Ver mas'}
39
          </a>
40
        </div>
41
        <div className="suggest-list">
42
          {companyFollowers.length
43
            ? getData().map((follower) =>
44
              <CompanyFollowers.Template
45
                key={follower.id}
46
                follower={follower}
47
              />
48
            )
49
            : <div className="view-more">Sin seguidores</div>
50
          }
51
        </div>
52
      </div>
53
      <button
54
        onClick={() => setShowFollowersModal(!showFollowersModal)}
55
        className="btn btn-primary btn-sm w-100 d-md-none"
56
      >
57
        Ver seguidores
58
      </button>
59
      <CompanyFollowers.Modal
60
        isShow={showFollowersModal}
61
        followers={getData()}
62
        handleClose={() => setShowFollowersModal(false)}
63
      />
64
    </>
65
  );
66
};
67
 
68
const Template = ({ follower }) => {
69
  const { name, image, profile } = follower
70
 
71
  return (
72
    <div className='user'>
73
      <div className="w-100 d-flex align-items-center" style={{ gap: '.5rem' }}>
74
        <a href={profile} target="_blank" rel="noreferrer">
75
          <img src={image} alt={`${name} profile image`} />
76
        </a>
77
        <h4>{name}</h4>
78
      </div>
79
      <div className="w-100 d-flex align-items-center justify-content-start" style={{ gap: '.5rem' }}>
80
        <a
81
          href={profile}
82
          className="btn btn-primary"
83
          target='_blank'
84
          rel="noreferrer"
2945 stevensc 85
        >
3897 stevensc 86
          Ver perfil
2945 stevensc 87
        </a>
2443 stevensc 88
      </div>
3896 stevensc 89
    </div>
3897 stevensc 90
  )
91
}
1 www 92
 
3897 stevensc 93
const Modal = ({
94
  isShow = false,
95
  followers = [],
96
  handleClose = function () { }
97
}) => {
98
  return (
99
    <Modal show={isShow} onHide={handleClose}>
100
      <Modal.Header closeButton>
101
        <h3>Seguidores</h3>
102
      </Modal.Header>
103
      <Modal.Body>
104
        {followers.map((follower) =>
105
          <CompanyFollowers.Template
106
            key={follower.id}
107
            follower={follower}
108
          />
109
        )}
110
      </Modal.Body>
111
    </Modal>
112
  )
113
}
114
 
115
CompanyFollowers.Template = Template
116
CompanyFollowers.Modal = Modal
117
 
118
export default CompanyFollowers;