Skip to content

Commit 7d5c5b1

Browse files
Merge pull request #45 from phits-tech/bug/burger-and-top-menu
Hamburger shows/hides menu on mobile
2 parents cb67f78 + e78e0f7 commit 7d5c5b1

4 files changed

Lines changed: 37 additions & 22 deletions

File tree

hosting/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@
2222
"vue": "^3.0.0",
2323
"vue-class-component": "8.0.0-rc.1",
2424
"vue-meta": "^3.0.0-alpha.4",
25-
"vue-property-decorator": "^9.1.2",
25+
"vue-property-decorator": "^10.0.0-rc.3",
2626
"vue-router": "^4.0.0-0",
2727
"vue-router-multiguard": "^1.0.3",
2828
"vuex": "^4.0.0-0",
2929
"vuexfire": "^3.2.5"
3030
},
3131
"devDependencies": {
32-
"@tailwindcss/postcss7-compat": "^2.0.3",
3332
"@tailwindcss/aspect-ratio": "^0.2.0",
3433
"@tailwindcss/line-clamp": "^0.2.0",
34+
"@tailwindcss/postcss7-compat": "^2.0.3",
3535
"@types/jest": "^26.0.22",
3636
"@types/node": "14.14.37",
3737
"@typescript-eslint/eslint-plugin": "^4.22.0",

hosting/src/global/App/NavBar/NavBar.html

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
<!-- Mobile menu button-->
66
<button
77
type="button"
8-
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-brand-black-400 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white"
8+
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-brand-black-400 focus:outline-none"
99
aria-controls="mobile-menu"
1010
aria-expanded="false"
11+
@click="toggleCollapse"
1112
>
1213
<span class="sr-only">Open main menu</span>
1314
<!--
1415
Icon when menu is closed.
15-
1616
Heroicon name: outline/menu
17-
18-
Menu open: "hidden", Menu closed: "block"
1917
-->
2018
<svg
19+
ref="menuClosedIcon"
2120
class="block h-6 w-6"
2221
xmlns="http://www.w3.org/2000/svg"
2322
fill="none"
@@ -34,12 +33,10 @@
3433
</svg>
3534
<!--
3635
Icon when menu is open.
37-
3836
Heroicon name: outline/x
39-
40-
Menu open: "block", Menu closed: "hidden"
4137
-->
4238
<svg
39+
ref="menuOpenIcon"
4340
class="hidden h-6 w-6"
4441
xmlns="http://www.w3.org/2000/svg"
4542
fill="none"
@@ -113,11 +110,11 @@
113110
</div>
114111
</div>
115112
<div
116-
class="absolute inset-y-0 right-0 flex items-center sm:static sm:inset-auto pr-2 sm:pr-0"
113+
class="absolute inset-y-0 right-0 flex items-center sm:static sm:inset-auto"
117114
>
118115
<router-link
119116
:to="{ name: 'EventsCreate' }"
120-
class="flex items-center px-3 py-2 rounded-md ring-2 ring-brand-blue bg-brand-black-900 hover:bg-brand-black text-gray-300 hover:text-white"
117+
class="flex items-center px-2 sm:px-3 py-2 rounded-md sm:ring-2 sm:ring-brand-blue bg-brand-black sm:hover:bg-brand-blue text-gray-300 hover:text-white"
121118
>
122119
<svg
123120
class="h-6 w-6 mr-1"
@@ -134,7 +131,9 @@
134131
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
135132
/>
136133
</svg>
137-
<span class="pl-1 pr-0.5 text-sm md:text-base">Add an event</span>
134+
<span class="pl-1 pr-0.5 hidden sm:block text-sm md:text-base"
135+
>Add an event</span
136+
>
138137
</router-link>
139138

140139
<!-- Profile dropdown -->
@@ -197,24 +196,23 @@
197196
</div>
198197

199198
<!-- Mobile menu, show/hide based on menu state. -->
200-
<div class="sm:hidden" id="mobile-menu">
199+
<div ref="mobileMenu" class="hidden sm:hidden">
201200
<div class="px-2 pt-2 pb-3 space-y-1">
202-
<!--
203-
Current: "bg-gray-800 text-white"
204-
Default: "text-gray-300 hover:bg-brand-black-400 hover:text-white"
205-
-->
206201
<router-link
207202
:to="{ name: 'Events' }"
203+
@click="$router.push({ name: 'Events' }); toggleCollapse()"
208204
class="text-gray-300 hover:bg-brand-black-400 hover:text-white block px-3 py-2 rounded-md text-base font-medium"
209205
>Events</router-link
210206
>
211207
<router-link
212208
:to="{ name: 'Spaces' }"
209+
@click="$router.push({ name: 'Spaces' }); toggleCollapse()"
213210
class="text-gray-300 hover:bg-brand-black-400 hover:text-white block px-3 py-2 rounded-md text-base font-medium"
214211
>Spaces</router-link
215212
>
216213
<router-link
217214
:to="{ name: 'Heroes' }"
215+
@click="$router.push({ name: 'Heroes' }); toggleCollapse()"
218216
class="text-gray-300 hover:bg-brand-black-400 hover:text-white block px-3 py-2 rounded-md text-base font-medium"
219217
>Heroes</router-link
220218
>
Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
11
import { Vue } from 'vue-class-component'
2+
import { Ref } from 'vue-property-decorator'
23

3-
export default class NavBar extends Vue {}
4+
export default class NavBar extends Vue {
5+
@Ref('mobileMenu') readonly mobileMenu!: HTMLElement
6+
@Ref('menuOpenIcon') readonly menuOpenIcon!: HTMLElement
7+
@Ref('menuClosedIcon') readonly menuClosedIcon!: HTMLElement
8+
9+
toggleCollapse(): void {
10+
if (this.mobileMenu.classList.contains('hidden')) {
11+
this.mobileMenu.classList.replace('hidden', 'block')
12+
this.menuOpenIcon.classList.replace('hidden', 'block')
13+
this.menuClosedIcon.classList.replace('block', 'hidden')
14+
} else {
15+
this.mobileMenu.classList.replace('block', 'hidden')
16+
this.menuOpenIcon.classList.replace('block', 'hidden')
17+
this.menuClosedIcon.classList.replace('hidden', 'block')
18+
}
19+
}
20+
}

yarn.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)