Skip to content

Commit d703850

Browse files
committed
Implement mobile menu
1 parent 19978ab commit d703850

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

frontend/src/components/common/Navbar.vue

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,39 @@
66
class="navbar-burger burger"
77
aria-label="menu"
88
aria-expanded="false"
9-
data-target="header-navbar"
9+
@click="toggleMobileMenu"
1010
>
1111
<span aria-hidden="true" />
1212
<span aria-hidden="true" />
1313
<span aria-hidden="true" />
1414
</a>
1515
</div>
1616

17+
<div class="navbar-menu is-hidden-desktop mobile-menu" :class="{ 'is-active': isMobileMenuActive }">
18+
<router-link class="navbar-item" :to="{ name: 'feed' }">
19+
<b-icon pack="fab" icon="twitter" />
20+
<span>Feed</span>
21+
</router-link>
22+
23+
<router-link class="navbar-item" :to="{ name: 'user-page', params: { id: user.id }}">
24+
<b-icon pack="fab" icon="twitter-square" />
25+
<span>My feed</span>
26+
</router-link>
27+
28+
<hr class="navbar-divider">
29+
30+
<router-link class="navbar-item" :to="{ name: 'profile' }">
31+
<b-icon pack="fa" icon="cog" />
32+
<span>Settings</span>
33+
</router-link>
34+
35+
36+
<a class="navbar-item" @click="onSignOut">
37+
<b-icon pack="fa" icon="sign-out-alt" />
38+
<span>Exit</span>
39+
</a>
40+
</div>
41+
1742
<div id="header-navbar" class="navbar-menu">
1843
<div class="navbar-start">
1944
<router-link class="navbar-item" to="/feed">
@@ -69,6 +94,10 @@ export default {
6994
DefaultAvatar,
7095
},
7196
97+
data: () => ({
98+
isMobileMenuActive: false
99+
}),
100+
72101
computed: {
73102
...mapGetters('auth', {
74103
user: 'getAuthenticatedUser'
@@ -90,6 +119,10 @@ export default {
90119
await this.signOut();
91120
92121
this.$router.push({ name: 'auth.signIn' });
122+
},
123+
124+
toggleMobileMenu() {
125+
this.isMobileMenuActive = !this.isMobileMenuActive;
93126
}
94127
}
95128
};
@@ -116,4 +149,19 @@ export default {
116149
padding-top: 0;
117150
}
118151
}
152+
153+
.mobile-menu {
154+
.navbar-item {
155+
display: flex;
156+
align-items: center;
157+
158+
.icon {
159+
margin-right: 10px;
160+
}
161+
162+
span:last-child {
163+
line-height: 1.588;
164+
}
165+
}
166+
}
119167
</style>

frontend/src/main.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import {
1111
faCog
1212
} from '@fortawesome/free-solid-svg-icons';
1313
import {
14-
faTwitter
14+
faTwitter,
15+
faTwitterSquare
1516
} from '@fortawesome/free-brands-svg-icons';
1617
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
1718
import createFilters from './components/filter/filters';
@@ -27,7 +28,8 @@ library.add(
2728
faTwitter,
2829
faUpload,
2930
faSignOutAlt,
30-
faCog
31+
faCog,
32+
faTwitterSquare
3133
);
3234

3335
Vue.component('font-awesome-icon', FontAwesomeIcon);

0 commit comments

Comments
 (0)