Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3694 stevensc 1
import React, { useState } from 'react';
2
import Search from '@mui/icons-material/Search';
3
import { Box, styled } from '@mui/material';
4
import { useSelector } from 'react-redux';
5 stevensc 5
 
3694 stevensc 6
import { debounce } from '@utils';
7
import { useFetch, useSearchQuery } from '@hooks';
2780 stevensc 8
 
3694 stevensc 9
import Spinner from '../../components/UI/Spinner';
10
import Input from '../../components/UI/inputs/Input';
11
import ProfileItem from '../../components/profile/ProfileItem';
12
import EmptySection from '../../components/UI/EmptySection';
13
import TitleSection from '../../components/UI/TitleSection';
14
import Pagination from '@components/common/Pagination';
5 stevensc 15
 
16
const ImpersonatePage = () => {
3694 stevensc 17
  const { getParam, setParam } = useSearchQuery();
18
  const { data, isLoading } = useFetch('/impersonate?search=' + getParam('search'));
19
  const labels = useSelector(({ intl }) => intl.labels);
5 stevensc 20
 
3694 stevensc 21
  const handleSearch = debounce((value) => setParam('keyword', value), 500);
5 stevensc 22
 
1619 stevensc 23
  return (
2806 stevensc 24
    <>
3432 stevensc 25
      <TitleSection title='Usuarios disponibles a personalizar' />
5 stevensc 26
 
3432 stevensc 27
      <Input icon={<Search />} onChange={handleSearch} variant='search' />
5 stevensc 28
 
3432 stevensc 29
      {isLoading ? (
2864 stevensc 30
        <Spinner />
1619 stevensc 31
      ) : (
3432 stevensc 32
        <ul className='companies-list mt-3'>
1620 stevensc 33
          {data.current?.items?.length > 0 ? (
3694 stevensc 34
            data.current?.items?.map(({ image, name, email, network, link_impersonate }, id) => (
35
              <ProfileItem
36
                isTopData
37
                key={id}
38
                image={image}
39
                name={name}
40
                email={email}
41
                network={network}
42
                link_impersonate={link_impersonate}
43
              />
44
            ))
1619 stevensc 45
          ) : (
3694 stevensc 46
            <EmptySection align='left' message={labels.datatable_szerorecords} />
1619 stevensc 47
          )}
48
        </ul>
49
      )}
2964 stevensc 50
      <Pagination
1620 stevensc 51
        pages={data.total?.pages}
2964 stevensc 52
        page={data.current?.page}
3432 stevensc 53
        onChange={(newPage) => setParam('page', newPage)}
1619 stevensc 54
      />
2806 stevensc 55
    </>
3694 stevensc 56
  );
57
};
5 stevensc 58
 
3694 stevensc 59
export default ImpersonatePage;