44 <a
55 role =" button"
66 class =" navbar-burger burger"
7+ :class =" { 'is-active': isMobileMenuActive }"
78 aria-label =" menu"
89 aria-expanded =" false"
9- data-target = " header-navbar "
10+ @click = " toggleMobileMenu "
1011 >
1112 <span aria-hidden =" true" />
1213 <span aria-hidden =" true" />
1314 <span aria-hidden =" true" />
1415 </a >
1516 </div >
1617
18+ <div class =" navbar-menu is-hidden-desktop mobile-menu" :class =" { 'is-active': isMobileMenuActive }" >
19+ <router-link class =" navbar-item" :to =" { name: 'feed' }" >
20+ <b-icon pack =" fab" icon =" twitter" />
21+ <span >Feed</span >
22+ </router-link >
23+
24+ <router-link class =" navbar-item" :to =" { name: 'user-page', params: { id: user.id }}" >
25+ <b-icon pack =" fab" icon =" twitter-square" />
26+ <span >My feed</span >
27+ </router-link >
28+
29+ <hr class =" navbar-divider" >
30+
31+ <router-link class =" navbar-item" :to =" { name: 'profile' }" >
32+ <b-icon pack =" fa" icon =" cog" />
33+ <span >Settings</span >
34+ </router-link >
35+
36+
37+ <a class =" navbar-item" @click =" onSignOut" >
38+ <b-icon pack =" fa" icon =" sign-out-alt" />
39+ <span >Exit</span >
40+ </a >
41+ </div >
42+
1743 <div id =" header-navbar" class =" navbar-menu" >
1844 <div class =" navbar-start" >
1945 <router-link class =" navbar-item" to =" /feed" >
2652 </div >
2753
2854 <div class =" navbar-end" >
29- <div class =" navbar-item profile" >
30- <figure class =" image is-32x32 is-square" >
31- <img
32- v-if =" user.avatar"
33- class =" profile-image is-rounded"
34- :src =" user.avatar"
35- >
36- <DefaultAvatar v-else class =" image is-32x32" :user =" user" />
37- </figure >
38- <span class =" profile-name" >{{ user.name }}</span >
39- <span class =" icon is-medium" ><font-awesome-icon icon =" angle-down" /></span >
55+ <div class =" navbar-item has-dropdown is-hoverable profile" >
56+ <a class =" navbar-link" >
57+ <figure class =" image is-32x32 is-square" >
58+ <img
59+ v-if =" user.avatar"
60+ class =" profile-image is-rounded"
61+ :src =" user.avatar"
62+ >
63+ <DefaultAvatar v-else class =" image is-32x32" :user =" user" />
64+ </figure >
65+ <span class =" profile-name" >{{ user.name }}</span >
66+ </a >
67+
68+ <div class =" navbar-dropdown is-right" >
69+ <router-link class =" navbar-item" :to =" { name: 'profile' }" >
70+ <b-icon pack =" fa" icon =" cog" />
71+ <span >Settings</span >
72+ </router-link >
73+
74+ <hr class =" navbar-divider" >
75+
76+ <a class =" navbar-item" @click =" onSignOut" >
77+ <b-icon pack =" fa" icon =" sign-out-alt" />
78+ <span >Exit</span >
79+ </a >
80+ </div >
4081 </div >
4182 </div >
4283 </div >
@@ -54,6 +95,10 @@ export default {
5495 DefaultAvatar,
5596 },
5697
98+ data : () => ({
99+ isMobileMenuActive: false
100+ }),
101+
57102 computed: {
58103 ... mapGetters (' auth' , {
59104 user: ' getAuthenticatedUser'
@@ -67,8 +112,19 @@ export default {
67112
68113 methods: {
69114 ... mapActions (' auth' , [
70- ' fetchAuthenticatedUser'
71- ])
115+ ' fetchAuthenticatedUser' ,
116+ ' signOut'
117+ ]),
118+
119+ async onSignOut () {
120+ await this .signOut ();
121+
122+ this .$router .push ({ name: ' auth.signIn' });
123+ },
124+
125+ toggleMobileMenu () {
126+ this .isMobileMenuActive = ! this .isMobileMenuActive ;
127+ }
72128 }
73129};
74130 </script >
@@ -77,7 +133,7 @@ export default {
77133@import ' ../../styles/common' ;
78134
79135.navbar {
80- margin-bottom : 20 px ;
136+ margin-bottom : 30 px ;
81137 box-shadow : 5px 5px 5px 0 #00000020 ;
82138}
83139
@@ -94,4 +150,19 @@ export default {
94150 padding-top : 0 ;
95151 }
96152}
153+
154+ .mobile-menu {
155+ .navbar-item {
156+ display : flex ;
157+ align-items : center ;
158+
159+ .icon {
160+ margin-right : 10px ;
161+ }
162+
163+ span :last-child {
164+ line-height : 1.588 ;
165+ }
166+ }
167+ }
97168 </style >
0 commit comments