242 lines
6.3 KiB
Vue
242 lines
6.3 KiB
Vue
<template>
|
|
<div class="topbar">
|
|
<div class="logo"><a href="#"><img src="assets/images/cms_logo.png" alt=""></a></div>
|
|
<div class="name">{{ title }}</div>
|
|
|
|
<!-- User Profile -->
|
|
<div class="user_profile" ref="user_profile">
|
|
<a class="trigger" @click.prevent="toggleMenu">
|
|
<div class="image"><i class="icon icon-user" aria-hidden="true"></i></div>
|
|
<div class="text"> {{ loginDisplay }} <div class="role"> {{ loginType }}</div></div>
|
|
<div class="trigger_btn"><i class="icon icon-arrow-down" aria-hidden="true"></i></div>
|
|
</a>
|
|
<nav class="user_menu">
|
|
<ul>
|
|
<router-link tag="li" v-for="(item, i) in items" :key="i" v-if="showIf(item.show)" :to="item.to" active-class="active" exact>
|
|
<a>
|
|
<i :class="['icon', item.icon]"></i>
|
|
<div class="title">{{ item.name }}</div>
|
|
</a>
|
|
</router-link>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: "Topbar",
|
|
props: [
|
|
"items"
|
|
],
|
|
data() {
|
|
return {
|
|
}
|
|
},
|
|
computed: {
|
|
loginDisplay() {
|
|
let l = this.$store.state.persist.login;
|
|
if (l.Company) {
|
|
return l.Company;
|
|
} else if (l.Lastname || l.Firstname) {
|
|
return l.Firstname + l.Lastname;
|
|
}
|
|
return l.Username;
|
|
},
|
|
loginType() {
|
|
switch (this.$store.state.persist.login.Type) {
|
|
case 0:
|
|
return 'Administrator';
|
|
case 1:
|
|
return 'Reseller';
|
|
case 2:
|
|
return 'Kundenzugang';
|
|
}
|
|
},
|
|
loginID() {
|
|
return this.$store.state.persist.login.ID;
|
|
},
|
|
title() {
|
|
return this.$store.state.ui.title;
|
|
}
|
|
},
|
|
methods: {
|
|
toggleMenu() {
|
|
this.$refs.user_profile.classList.toggle("open");
|
|
},
|
|
showIf(conf) {
|
|
// show if not configured
|
|
if (!conf) {
|
|
return true;
|
|
}
|
|
if (conf.never) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="less">
|
|
@import "../mixins.less";
|
|
|
|
@bar_height: 40px;
|
|
|
|
/*--------------------------------------------------------------
|
|
# Topbar (Sitename)
|
|
--------------------------------------------------------------*/
|
|
.topbar {
|
|
.clearfix();
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0px;
|
|
background: @ui_bg;
|
|
color: white;
|
|
height: @bar_height;
|
|
z-index: 1500;
|
|
|
|
&>.logo {
|
|
display: block;
|
|
width: 70px;
|
|
height: @bar_height;
|
|
float: left;
|
|
position: relative;
|
|
|
|
a {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
|
|
&:hover {
|
|
background: rgba(40,183,141,0.3);
|
|
}
|
|
}
|
|
|
|
img {
|
|
display: block;
|
|
width: 30px;
|
|
height: auto;
|
|
margin: 0 auto;
|
|
padding-top: 4px;
|
|
}
|
|
}
|
|
|
|
&>.name {
|
|
float: left;
|
|
width: auto;
|
|
line-height: @bar_height;
|
|
padding-left: 15px;
|
|
}
|
|
|
|
// &>.navbutton {
|
|
// display: block;
|
|
// float: left;
|
|
// width: auto;
|
|
// height: 100%;
|
|
// font-size: 22px;
|
|
// margin-left: 40px;
|
|
// height: @bar_height;
|
|
// width: 40px;
|
|
// padding-top: 4px;
|
|
// cursor: pointer;
|
|
// text-align: center;
|
|
// color: white;
|
|
|
|
// &:hover {
|
|
// background: fade(@cms_brand_primary, 30%);
|
|
// }
|
|
// }
|
|
}
|
|
|
|
/*--------------------------------------------------------------
|
|
# Topbar (User Profile)
|
|
--------------------------------------------------------------*/
|
|
.user_profile {
|
|
float: right;
|
|
|
|
&>.trigger {
|
|
.clearfix();
|
|
display: block;
|
|
padding: 4px 10px;
|
|
font-size: 0;
|
|
color: white;
|
|
user-select: none;
|
|
|
|
&:hover {
|
|
cursor: pointer;
|
|
background: fade(@cms_brand_primary, 30%);
|
|
}
|
|
|
|
.icon{
|
|
font-size: 22px;
|
|
}
|
|
|
|
.image, .text, .trigger_btn{
|
|
float: left;
|
|
}
|
|
|
|
div+div{
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.image {
|
|
max-height: @bar_height - 8px;
|
|
img{
|
|
width:70%; margin:0 auto; display:block;
|
|
}
|
|
}
|
|
|
|
.text {
|
|
font-size: 12px;
|
|
|
|
.role{
|
|
display: block;
|
|
font-size: 11px;
|
|
color: fade(white, 50%);
|
|
}
|
|
}
|
|
}
|
|
|
|
.user_menu {
|
|
display: none;
|
|
background: @cms_brand_primary;
|
|
|
|
ul{
|
|
list-style-type: none;
|
|
|
|
li{
|
|
.clearfix();
|
|
.icon {
|
|
float: left;
|
|
width: 45px;
|
|
line-height: 45px;
|
|
text-align: center;
|
|
font-size: 20px;
|
|
}
|
|
.title {
|
|
float: left;
|
|
font-size: 14px;
|
|
line-height: 45px;
|
|
padding: 0 10px;
|
|
}
|
|
a {
|
|
display: block;
|
|
color: white;
|
|
height: 45px;
|
|
}
|
|
&:hover {
|
|
background: darken(@cms_brand_primary, 5%);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&.open {
|
|
.user_menu{display: block;}
|
|
&>.trigger{background: fade(@cms_brand_primary, 50%);}
|
|
.trigger_btn .icon:before{transform: rotate(180deg);}
|
|
}
|
|
}
|
|
</style> |