Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6753 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React from 'react'
import { axios } from '../../../../utils'
import { Link } from 'react-router-dom'

const LinkItem = ({ href, ajax, childs, icon, label }) => {
  const handleAjaxRequest = async (event, url) => {
    event.preventDefault()
    try {
      const { data } = await axios.get(url)
      if (data.success) window.open(data.data, '_backend')
    } catch (error) {
      console.log('>>: error > ', error)
      throw new Error(error)
    }
  }

  return (
    <>
      <Link
        to={`/${href}`}
        onClick={(e) => {
          if (ajax) {
            handleAjaxRequest(e, href)
            return
          }

          if (childs.length) {
            e.preventDefault()
          }
        }}
      >
        {icon}
        <p>{label}</p>
      </Link>
      {Boolean(childs.length) && (
        <nav className="navLinkDropdown">
          <ul>
            {childs.map((child, _i) => (
              <li key={_i}>
                <Link
                  to={`/${child.href}`}
                  onClick={(e) => child.childs?.length && e.preventDefault()}
                >
                  {child.label}
                  {Boolean(child.childs?.length) && (
                    <i className="fa fa-angle-right" />
                  )}
                </Link>
                {Boolean(child.childs?.length) && (
                  <nav className="navigation-level_three">
                    <ul>
                      {child.childs?.map((levelThree, index) => (
                        <li key={index}>
                          <Link to={`/${levelThree.href}`}>
                            {levelThree.label}
                          </Link>
                        </li>
                      ))}
                    </ul>
                  </nav>
                )}
              </li>
            ))}
          </ul>
        </nav>
      )}
    </>
  )
}

export default LinkItem