Still need to work on the dom, but the styling has been updated to be better for mobile, use variables for constant values and scoped it.

This commit is contained in:
2019-06-03 23:21:48 +02:00
parent fcc56bf103
commit a30529e192

View File

@@ -1,4 +1,5 @@
<template> <template>
<div>
<nav class="nav"> <nav class="nav">
<router-link class="nav__logo" :to="{name: 'home'}" exact title="Vue.js — TMDb App"> <router-link class="nav__logo" :to="{name: 'home'}" exact title="Vue.js — TMDb App">
<svg class="nav__logo-image"> <svg class="nav__logo-image">
@@ -11,25 +12,18 @@
<div class="bar"></div> <div class="bar"></div>
</div> </div>
<ul class="nav__list"> <ul class="nav__list">
<li class="nav__item" v-for="item in listTypes" v-if="item.isCategory"> <li class="nav__item" v-for="item in listTypes">
<router-link class="nav__link" :to="{name: item.name, params: {mode: item.type, category: item.query}}"> <router-link class="nav__link" :to="'/list/' + item.route">
<div class="nav__link-wrap"> <div class="nav__link-wrap">
<!-- <img :src="item.icon" class="nav__link-icon"> -->
<svg class="nav__link-icon"> <svg class="nav__link-icon">
<use :xlink:href="'#icon_' + item.query"></use> <use :xlink:href="'#icon_' + item.route"></use>
</svg> </svg>
<span class="nav__link-title">{{ item.shortTitle }}</span> <span class="nav__link-title">{{ item.title }}</span>
</div> </div>
</router-link> </router-link>
</li> </li>
<li class="nav__item nav__item--profile"> <li class="nav__item nav__item--profile">
<!-- <div class="nav__link nav__link--profile" @click="requestToken" v-if="!userLoggedIn">
<div class="nav__link-wrap">
<svg class="nav__link-icon">
<use xlink:href="#iconLogin"></use>
</svg>
<span class="nav__link-title">Log In</span>
</div>
</div> -->
<router-link class="nav__link nav__link--profile" :to="{name: 'signin'}" v-if="!userLoggedIn"> <router-link class="nav__link nav__link--profile" :to="{name: 'signin'}" v-if="!userLoggedIn">
<div class="nav__link-wrap"> <div class="nav__link-wrap">
<svg class="nav__link-icon"> <svg class="nav__link-icon">
@@ -49,6 +43,8 @@
</li> </li>
</ul> </ul>
</nav> </nav>
<div class="spacer"></div>
</div>
</template> </template>
<script> <script>
@@ -57,7 +53,7 @@ import storage from '../storage.js'
export default { export default {
data(){ data(){
return { return {
listTypes: storage.listTypes, listTypes: storage.homepageLists,
userLoggedIn: localStorage.getItem('token') ? true : false userLoggedIn: localStorage.getItem('token') ? true : false
} }
}, },
@@ -65,9 +61,6 @@ export default {
setUserStatus(){ setUserStatus(){
this.userLoggedIn = localStorage.getItem('token') ? true : false; this.userLoggedIn = localStorage.getItem('token') ? true : false;
}, },
requestToken(){
eventHub.$emit('requestToken');
},
toggleNav(){ toggleNav(){
document.querySelector('.nav__hamburger').classList.toggle('nav__hamburger--active'); document.querySelector('.nav__hamburger').classList.toggle('nav__hamburger--active');
document.querySelector('.nav__list').classList.toggle('nav__list--active'); document.querySelector('.nav__list').classList.toggle('nav__list--active');
@@ -79,9 +72,15 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import "./src/scss/variables"; @import "./src/scss/variables";
@import "./src/scss/media-queries"; @import "./src/scss/media-queries";
.spacer {
@include mobile-only {
width: 100%;
height: $header-size-mobile;
}
}
.nav { .nav {
position: fixed; position: fixed;
top: 0; top: 0;
@@ -89,24 +88,24 @@ export default {
width: 100%; width: 100%;
height: 50px; height: 50px;
background: $c-white; background: $c-white;
display: flex;
z-index: 10; z-index: 10;
@include tablet-min{
display: block; display: block;
@include tablet-min{
width: 95px; width: 95px;
height: 100vh; height: 100vh;
} }
&__logo{ &__logo{
display: block;
width: 55px; width: 55px;
height: 50px; height: $header-size-mobile;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: $c-dark; background: $c-dark;
@include tablet-min{ @include tablet-min{
width: 95px; width: 95px;
height: 75px; height: $header-size;
} }
&-image{ &-image{
width: 35px; width: 35px;
@@ -231,8 +230,8 @@ export default {
position: fixed; position: fixed;
right: 0; right: 0;
top: 0; top: 0;
width: 75px; width: $header-size;
height: 75px; height: $header-size;
border-bottom: 0; border-bottom: 0;
border-left: 1px solid $c-light; border-left: 1px solid $c-light;
} }
@@ -253,6 +252,12 @@ export default {
transition: color 0.5s ease, background 0.5s ease; transition: color 0.5s ease, background 0.5s ease;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
&-wrap {
display: flex;
flex-direction: column;
align-items: center;
}
@include mobile-only{ @include mobile-only{
font-size: 10px; font-size: 10px;
padding: 20px 0; padding: 20px 0;
@@ -270,7 +275,6 @@ export default {
&-icon{ &-icon{
width: 20px; width: 20px;
height: 20px; height: 20px;
margin-bottom: 3px;
fill: rgba($c-dark, 0.7); fill: rgba($c-dark, 0.7);
transition: fill 0.5s ease; transition: fill 0.5s ease;
@include tablet-min{ @include tablet-min{
@@ -278,8 +282,10 @@ export default {
height: 20px; height: 20px;
margin-bottom: 5px; margin-bottom: 5px;
} }
} }
&-title{ &-title{
margin-top: 5px;
display: block; display: block;
width: 100%; width: 100%;
} }