Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6753 | Rev 6840 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 6753 Rev 6796
Línea 1... Línea 1...
1
import React, { useRef, useState } from 'react'
1
import React, { useRef, useState } from 'react'
-
 
2
import { Link } from 'react-router-dom'
2
import { axios } from '../../../utils'
3
import { axios } from '../../../utils'
3
import useOutsideClick from '../../../hooks/useOutsideClick'
4
import useOutsideClick from '../../../hooks/useOutsideClick'
Línea 4... Línea 5...
4
 
5
 
Línea 18... Línea 19...
18
}) => {
19
}) => {
19
  const [displayMenu, setDisplayMenu] = useState(false)
20
  const [displayMenu, setDisplayMenu] = useState(false)
20
  const menu = useRef(null)
21
  const menu = useRef(null)
21
  useOutsideClick(menu, () => setDisplayMenu(false))
22
  useOutsideClick(menu, () => setDisplayMenu(false))
Línea 22... Línea 23...
22
 
23
 
-
 
24
  const handleClick = (e) => {
23
  const handleClick = () => {
25
    e.preventDefault()
24
    setDisplayMenu(!displayMenu)
26
    setDisplayMenu(!displayMenu)
Línea 25... Línea 27...
25
  }
27
  }
26
 
28
 
-
 
29
  const handleAjaxRequest = async (e) => {
27
  const handleAjaxRequest = async () => {
30
    try {
28
    try {
31
      e.preventDefault()
29
      const { data } = await axios.get(url)
32
      const { data } = await axios.get(url)
30
      if (data.success) {
33
      if (data.success) {
31
        window.open(data.data, 'backend')
34
        window.open(data.data, 'backend')
Línea 35... Línea 38...
35
    }
38
    }
36
  }
39
  }
Línea 37... Línea 40...
37
 
40
 
38
  return (
41
  return (
39
    <li ref={menu} className={!isMobile && 'd-none d-lg-block'}>
42
    <li ref={menu} className={!isMobile && 'd-none d-lg-block'}>
40
      <a
43
      <Link
41
        href={`/${url}`}
44
        to={`/${url}`}
42
        className={`header__option ${isMobile && 'mobile'} ${
45
        className={`header__option ${isMobile && 'mobile'} ${
43
          displayMenu && 'active'
46
          displayMenu && 'active'
44
        }`}
47
        }`}
45
        onClick={(e) => {
-
 
46
          if (ajaxRequest) {
-
 
47
            e.preventDefault()
48
        onClick={(e) => {
48
            handleAjaxRequest()
-
 
49
            return
-
 
50
          }
49
          if (ajaxRequest) handleAjaxRequest(e)
51
          if (childs.length) {
-
 
52
            e.preventDefault()
-
 
53
            handleClick()
-
 
54
          }
50
          if (childs.length) handleClick(e)
55
        }}
-
 
56
        target="framename"
51
        }}
57
      >
52
      >
58
        {Icon && <Icon className="header__option-icon" />}
53
        {Icon && <Icon className="header__option-icon" />}
59
        <span>{title}</span>
54
        <span>{title}</span>
60
        <span
55
        <span
61
          className={`badge ${badgeCount ? 'd-block' : 'd-none'}`}
56
          className={`badge ${badgeCount ? 'd-block' : 'd-none'}`}
62
          style={{ top: '10px' }}
57
          style={{ top: '10px' }}
63
        >
58
        >
64
          {badgeCount}
59
          {badgeCount}
65
        </span>
60
        </span>
66
      </a>
61
      </Link>
67
      <ListItemDropdown isShow={displayMenu} options={childs} />
62
      <ListItemDropdown isShow={displayMenu} options={childs} />
68
    </li>
63
    </li>
69
  )
64
  )