Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev 3494 Rev 3498
Línea 2... Línea 2...
2
import { useSearchParams } from 'react-router-dom';
2
import { useSearchParams } from 'react-router-dom';
Línea 3... Línea 3...
3
 
3
 
4
import { useFetch } from './useFetch';
4
import { useFetch } from './useFetch';
Línea 5... Línea 5...
5
import { debounce } from '@utils';
5
import { debounce } from '@utils';
6
 
-
 
7
export function useSearch(
-
 
8
  url = '',
-
 
9
  config = {
-
 
10
    debounceDelay: 300,
-
 
11
    initialSearchTerm: '',
-
 
12
    params: undefined
-
 
13
  }
6
 
Línea 14... Línea -...
14
) {
-
 
15
  const [searchParams, setSearchParams] = useSearchParams();
-
 
16
 
7
export function useSearch(url = '', { debounceDelay = 300, initialParams = {} } = {}) {
17
  const search = searchParams.get('search') || config.initialSearchTerm || '';
-
 
18
  const debounceDelay = config.debounceDelay || 300;
8
  const [searchParams, setSearchParams] = useSearchParams();
19
  const params = config.params;
9
 
20
 
10
  const initialSearchURLParams = new URLSearchParams({
Línea -... Línea 11...
-
 
11
    ...Object.fromEntries(searchParams.entries()),
-
 
12
    ...initialParams
-
 
13
  });
-
 
14
 
-
 
15
  const { data, loading, refetch } = useFetch(url + '?' + initialSearchURLParams.toString());
-
 
16
 
-
 
17
  const updateSearchParams = useCallback(
-
 
18
    (newParams) => {
-
 
19
      setSearchParams(newParams, { replace: true });
-
 
20
    },
-
 
21
    [setSearchParams]
-
 
22
  );
-
 
23
 
-
 
24
  const setSearchParam = useCallback(
-
 
25
    (key, value) => {
-
 
26
      const newParams = new URLSearchParams(searchParams);
-
 
27
      if (value !== undefined && value !== null && value !== '') {
-
 
28
        newParams.set(key, value);
-
 
29
      } else {
-
 
30
        newParams.delete(key);
-
 
31
      }
-
 
32
      updateSearchParams(newParams);
21
  const { data, loading, refetch } = useFetch(url, {
33
    },
22
    params: { ...params, search }
34
    [searchParams, updateSearchParams]
23
  });
35
  );
24
 
-
 
25
  const handleSearch = useCallback(
36
 
26
    debounce((value) => {
37
  const search = useCallback(
27
      searchParams.set('search', value);
38
    debounce((value) => {
Línea 28... Línea 39...
28
      setSearchParams(searchParams);
39
      setSearchParam('search', value);
29
    }, debounceDelay),
40
    }, debounceDelay),
30
    [debounceDelay]
41
    [setSearchParam, debounceDelay]
31
  );
42
  );
32
 
43
 
33
  return {
-
 
34
    data,
44
  return {
35
    loading,
45
    data,