Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
4250 stevensc 1
/* eslint-disable react/prop-types */
4678 stevensc 2
import React, { useEffect, useRef, useState } from 'react'
4250 stevensc 3
import Avatar from '../../../shared/Avatar/Avatar'
4251 stevensc 4
import axios from '../../../utils/axios'
5
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
4250 stevensc 6
 
7
const UserOptions = ({
8
    image = '',
9
    name = '',
10
    adminUrl = '',
11
    impersonateUrl = '',
4964 stevensc 12
    defaultNetwork = 'y'
4250 stevensc 13
}) => {
4251 stevensc 14
    const [displayOptions, setDisplayOptions] = useState(false)
4678 stevensc 15
    const userDropdownContainer = useRef(null);
4251 stevensc 16
 
4678 stevensc 17
    useEffect(() => {
18
        const handleClickOutside = (event) => {
4849 stevensc 19
            if (userDropdownContainer?.current && !userDropdownContainer?.current?.contains(event.target)) {
4678 stevensc 20
                setDisplayOptions(false)
21
            }
22
        }
23
        document.addEventListener("mousedown", handleClickOutside);
24
 
25
        return () => {
26
            document.removeEventListener("mousedown", handleClickOutside);
27
        };
28
    }, [userDropdownContainer]);
29
 
4251 stevensc 30
    const handleDisplay = async (e) => {
31
        e.preventDefault()
32
        setDisplayOptions(!displayOptions)
33
    }
34
 
35
    const getAdminUrl = async (e) => {
36
        e.preventDefault()
37
        try {
38
            const { data } = await axios.get('/backend/signin-admin')
39
            if (data.success) return window.open(data.data);
40
        } catch (error) {
41
            console.log('>>: error > ', error)
42
        }
43
    }
44
 
4250 stevensc 45
    return (
46
        <li>
4251 stevensc 47
            <a
48
                href="#"
4742 stevensc 49
                className="header__option mobile"
4251 stevensc 50
                onClick={handleDisplay}
51
            >
52
                <Avatar
53
                    imageUrl={image}
54
                    name={name}
55
                    size='md'
56
                />
4257 stevensc 57
                <span>Me <ArrowDropDownIcon className='user__option-icon' /></span>
4251 stevensc 58
            </a>
4678 stevensc 59
            <div className={`user__options-dropdown ${displayOptions ? 'fadeIn' : 'fadeOut'}`} ref={userDropdownContainer}>
4257 stevensc 60
                <div className='user__options-description'>
61
                    <div className='user__options-info'>
62
                        <Avatar
63
                            imageUrl={image}
64
                            name={name}
4260 stevensc 65
                            size='xl'
4257 stevensc 66
                        />
67
                        <h3>{name}</h3>
68
                    </div>
4710 stevensc 69
                    {/* <a href='#' className='btn__profile'>
4257 stevensc 70
                        View profile
4710 stevensc 71
                    </a> */}
4257 stevensc 72
                </div>
4261 stevensc 73
                {(adminUrl || impersonateUrl) &&
74
                    <div className='user__options-item'>
75
                        <h3>Admin</h3>
76
                        <ul>
77
                            {adminUrl &&
78
                                <li>
79
                                    <a href="#" onClick={getAdminUrl} >Administración</a>
80
                                </li>
81
                            }
82
                            {impersonateUrl &&
83
                                <li>
84
                                    <a href="/impersonate">Personificar otro usuario</a>
85
                                </li>
86
                            }
87
                        </ul>
88
                    </div>
89
                }
4262 stevensc 90
                <div className='user__options-item'>
91
                    <h3>Cuenta</h3>
92
                    <ul>
93
                        <li>
4763 stevensc 94
                            <a href="/account-settings" target='secondary'>Configuración de la cuenta</a>
4262 stevensc 95
                        </li>
4964 stevensc 96
                        {defaultNetwork === 'y' &&
97
                            <>
98
                                <li>
99
                                    <a href="/privacy-policy" target='secondary'>Política de privacidad</a>
100
                                </li>
101
                                <li>
102
                                    <a href="/cookies" target='secondary'>Política de cookies</a>
103
                                </li>
104
                            </>
105
                        }
4262 stevensc 106
                    </ul>
107
                </div>
108
                <div className='user__options-item'>
109
                    <ul>
110
                        <li className='logOutContainer'>
111
                            <a className='logOutContainer__a' href="/signout">
112
                                Cerrar sesión
113
                            </a>
114
                        </li>
115
                    </ul>
116
                </div>
4251 stevensc 117
            </div >
4262 stevensc 118
        </li >
4250 stevensc 119
    )
120
}
121
 
122
export default UserOptions