1
1
const { createElement } = react ;
2
2
3
3
export const UsersSection = ( { users, showUser, handleUserSelected } ) => {
4
+ let selectedUserId = users [ showUser ] ?. id ;
5
+
6
+ const handleClick = ( userId ) => {
7
+ selectedUserId = userId ;
8
+ document . querySelectorAll ( '.user_card' ) . forEach ( card => {
9
+ if ( card . dataset . key === userId ) {
10
+ card . classList . add ( 'active_tab' ) ;
11
+ } else {
12
+ card . classList . remove ( 'active_tab' ) ;
13
+ }
14
+ } ) ;
15
+
16
+ const selectedUser = users . find ( user => user . id === userId ) ;
17
+
18
+ const detailsSection = document . querySelector ( '.user_details_section' ) ;
19
+ if ( detailsSection && selectedUser ) {
20
+ detailsSection . querySelectorAll ( '.user_details_field' ) . forEach ( field => {
21
+ const label = field . querySelector ( 'span:first-child' ) ?. textContent ;
22
+ const valueSpan = field . querySelector ( 'span:last-child' ) ;
23
+ const link = field . querySelector ( 'a' ) ;
24
+
25
+ switch ( label ) {
26
+ case 'Name: ' :
27
+ if ( valueSpan ) valueSpan . textContent = selectedUser . first_name ;
28
+ break ;
29
+ case 'Username: ' :
30
+ if ( valueSpan ) valueSpan . textContent = selectedUser . username ;
31
+ break ;
32
+ case 'Discord ID: ' :
33
+ if ( valueSpan ) valueSpan . textContent = selectedUser . discordId ;
34
+ break ;
35
+ case 'Joined RDS server on: ' :
36
+ if ( valueSpan ) valueSpan . textContent = new Date ( selectedUser . discordJoinedAt ) . toUTCString ( ) ;
37
+ break ;
38
+ case 'User Management: ' :
39
+ if ( link ) {
40
+ link . href = `${ USER_MANAGEMENT_URL } ${ selectedUser . username } ` ;
41
+ link . textContent = `${ USER_MANAGEMENT_URL } ${ selectedUser . username } ` ;
42
+ }
43
+ break ;
44
+ }
45
+ } ) ;
46
+ }
47
+
48
+ handleUserSelected ( userId ) ;
49
+ } ;
50
+
4
51
return createElement (
5
52
'aside' ,
6
53
{
7
54
class : 'users_section' ,
8
-
9
55
'data-testid' : 'users-section' ,
10
56
} ,
11
57
users ?. map ( ( user ) => {
12
58
return createElement (
13
59
'div' ,
14
60
{
15
- class : `user_card ${
16
- users [ showUser ] . id === user . id ? 'active_tab' : ''
17
- } `,
61
+ class : `user_card ${ selectedUserId === user . id ? 'active_tab' : '' } ` ,
18
62
'data-testid' : `user-card-${ user . id } ` ,
19
63
'data-key' : user . id ,
20
- onclick : ( ) => handleUserSelected ( user . id ) ,
64
+ onclick : ( ) => handleClick ( user . id ) ,
21
65
} ,
22
66
[
23
67
createElement ( 'img' , {
@@ -29,4 +73,4 @@ export const UsersSection = ({ users, showUser, handleUserSelected }) => {
29
73
) ;
30
74
} ) ,
31
75
) ;
32
- } ;
76
+ } ;
0 commit comments