This repository has been archived on 2021-09-06. You can view files and clone it, but cannot push or open issues or pull requests.
vuejs_course/2021-05-05_vuex-11-a-challe.../src/components/nav/TheHeader.vue

94 lines
1.7 KiB
Vue

<template>
<header>
<h1>
<router-link to="/">VueShop</router-link>
</h1>
<nav>
<ul>
<li>
<router-link to="/products">Products</router-link>
</li>
<li>
<router-link to="/cart">Cart</router-link>
<base-badge mode="elegant">{{ quantity }}</base-badge>
</li>
<li v-if="isAuthenticated">
<router-link to="/admin">Admin</router-link>
</li>
</ul>
</nav>
<div>
<button v-if="!isAuthenticated" @click="login">Login</button>
<button v-if="isAuthenticated" @click="logout">Logout</button>
</div>
</header>
</template>
<script>
import { mapActions } from 'vuex';
import { mapGetters } from 'vuex';
export default {
computed: {
...mapGetters('cart', ['quantity']),
...mapGetters('auth', ['isAuthenticated'])
},
methods: {
...mapActions('auth', ['login', 'logout'])
}
};
</script>
<style scoped>
header {
height: 5rem;
background-color: white;
margin: 0 10%;
display: flex;
justify-content: space-between;
align-items: center;
}
ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
justify-self: center;
align-items: center;
}
li {
margin: 0 1rem;
}
a {
text-decoration: none;
color: #333;
font-weight: bold;
border-bottom: 2px solid transparent;
padding-bottom: 0.25rem;
}
a:hover,
a:active,
a.router-link-active {
color: #45006d;
border-color: #45006d;
}
button {
font: inherit;
cursor: pointer;
padding: 0.5rem 1.5rem;
border: 1px solid #45006d;
background-color: transparent;
color: #45006d;
border-radius: 30px;
}
button:hover,
button:active {
background-color: #f0d5ff;
}
</style>