Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3694 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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