mirror of
https://github.com/KevinMidboe/planetposen.git
synced 2025-10-29 17:50:32 +00:00
99 lines
1.8 KiB
Vue
99 lines
1.8 KiB
Vue
|
|
<template>
|
|
<router-link to="/cart"
|
|
class="cart"
|
|
:title="cartTitle"
|
|
:class="{ dark: isDark, offScreen: isHeaderOffScreen }">
|
|
|
|
<div class="cart-counter">
|
|
{{ cartInventory.length }}
|
|
</div>
|
|
<i class="icon icon--cart-outline"></i>
|
|
</router-link>
|
|
</template>
|
|
|
|
<script>
|
|
import store from '@/store'
|
|
export default {
|
|
props: {
|
|
isDark: {
|
|
type: Boolean,
|
|
default: false,
|
|
required: false
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
isHeaderOffScreen: false
|
|
}
|
|
},
|
|
mounted() {
|
|
let observer = new IntersectionObserver((entry, observer) => {
|
|
if (this.$route.name == 'Shop') {
|
|
const isHeaderIntersecting = entry[0].isIntersecting;
|
|
this.isHeaderOffScreen = !isHeaderIntersecting;
|
|
} else {
|
|
this.isHeaderOffScreen = false;
|
|
}
|
|
})
|
|
|
|
observer.observe(document.querySelector('#header'))
|
|
},
|
|
computed: {
|
|
cartInventory() {
|
|
return store.getters['cartModule/inventory']
|
|
},
|
|
cartTitle() {
|
|
let len = this.cartInventory.length;
|
|
return `Cart with ${ len } products`
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.cart {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
height: min-content;
|
|
|
|
cursor: pointer;
|
|
z-index: 3;
|
|
|
|
&-counter {
|
|
color: var(--color-background);
|
|
background-color: var(--color-yellow);
|
|
padding: 0.2rem 0.5rem;
|
|
height: min-content;
|
|
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
&.offScreen {
|
|
position: fixed;
|
|
top: 0.5rem;
|
|
right: -6px;
|
|
padding: 0.5rem;
|
|
padding-right: 2.5rem;
|
|
background-color: var(--color-background);
|
|
border-radius: 6px;
|
|
border: 0px solid !important;
|
|
}
|
|
|
|
&:hover {
|
|
border-bottom: unset;
|
|
}
|
|
}
|
|
|
|
.dark .icon {
|
|
color: var(--color-background);
|
|
}
|
|
|
|
.icon {
|
|
font-size: 1.5rem;
|
|
color: white;
|
|
}
|
|
</style>
|
|
|