@@ -7,6 +7,7 @@ import { Commission } from "@/types/aliases";
7
7
import { Schema } from "@/types/schema" ;
8
8
import Link from "next/link" ;
9
9
import { useRouter } from "next/router" ;
10
+ import { useState } from "react" ;
10
11
11
12
function DropdownMenu ( {
12
13
head : button ,
@@ -18,32 +19,72 @@ function DropdownMenu({
18
19
className ?: string ;
19
20
} ) {
20
21
return (
21
- < div className = { styles . dropdownMenuItem + " " + ( className || "" ) } >
22
+ < div className = { styles . dropdownMenu + " " + ( className || "" ) } >
22
23
{ button }
23
24
< div className = { styles . content } > { children } </ div >
24
25
</ div >
25
26
) ;
26
27
}
27
28
29
+ function SideMenu ( {
30
+ headToggle : toggle ,
31
+ children,
32
+ visible,
33
+ className,
34
+ } : {
35
+ headToggle : any ;
36
+ children : any ;
37
+ visible : boolean ;
38
+ className ?: string ;
39
+ } ) {
40
+ return (
41
+ < >
42
+ < Burger
43
+ className = { styles . burger + " " + styles . sidemenuHead }
44
+ onClick = { toggle }
45
+ />
46
+ < div
47
+ className = { styles . sideMenu + " " + ( className || "" ) }
48
+ style = { { display : visible ? "flex" : "none" } }
49
+ >
50
+ { children }
51
+ </ div >
52
+ </ >
53
+ ) ;
54
+ }
55
+
28
56
export default function NavigationBar ( props : {
29
57
commissions ?: Commission [ ] ;
30
58
langs : Schema [ "languages" ] ;
31
59
} ) {
60
+ const [ menuVisible , setMenuVisible ] = useState ( false ) ;
61
+ const toggleMenu = ( ) => {
62
+ setMenuVisible ( ( v ) => ! v ) ;
63
+ } ;
64
+
32
65
const router = useRouter ( ) ;
33
66
const entries = [
34
- < Link className = { styles . menuItem } href = "/association" >
67
+ < Link
68
+ className = { styles . sidemenuItem }
69
+ href = "/association"
70
+ onClick = { toggleMenu }
71
+ >
35
72
{ translate ( "association" , locale ( router ) , {
36
73
capitalize : true ,
37
74
plural : false ,
38
75
} ) }
39
76
</ Link > ,
40
- < Link className = { styles . menuItem } href = "/commissions" >
77
+ < Link
78
+ className = { styles . sidemenuItem }
79
+ href = "/commissions"
80
+ onClick = { toggleMenu }
81
+ >
41
82
{ translate ( "commission" , locale ( router ) , {
42
83
capitalize : true ,
43
84
plural : true ,
44
85
} ) }
45
86
</ Link > ,
46
- < Link className = { styles . menuItem } href = "/news" >
87
+ < Link className = { styles . sidemenuItem } href = "/news" onClick = { toggleMenu } >
47
88
{ translate ( "news" , locale ( router ) , {
48
89
capitalize : true ,
49
90
plural : false ,
@@ -138,14 +179,13 @@ export default function NavigationBar(props: {
138
179
< > </ >
139
180
) }
140
181
141
- < DropdownMenu
142
- head = {
143
- < Burger className = { styles . burger + " " + styles . dropdownHead } />
144
- }
182
+ < SideMenu
183
+ headToggle = { toggleMenu }
184
+ visible = { menuVisible }
145
185
className = { styles . burgerContainer }
146
186
>
147
187
{ entries }
148
- </ DropdownMenu >
188
+ </ SideMenu >
149
189
</ div >
150
190
</ div >
151
191
) ;
0 commit comments