mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-21 09:12:14 +00:00
170 lines
4.6 KiB
Vue
170 lines
4.6 KiB
Vue
<template>
|
|
<nav class="oasis-navigation navigation" :class="{'white': isWhite}">
|
|
<div class="container">
|
|
<router-link :to="{name: 'Homepage'}" tag="div" class="logo">
|
|
<img v-if="config.app_logo_horizontal" :src="$getImage(config.app_logo_horizontal)" :alt="config.app_name">
|
|
<b v-if="! config.app_logo_horizontal" class="logo-text">{{ config.app_name }}</b>
|
|
</router-link>
|
|
<ul class="links">
|
|
<li v-for="(item, i) in navigation" :key="i">
|
|
<a v-if="$router.currentRoute.name !== 'DynamicPage'" @click="scrollToSection(item.href)">{{ item.title }}</a>
|
|
|
|
<router-link v-if="$router.currentRoute.name === 'DynamicPage'" :to="{path: '/', hash: `#${item.href}`}">
|
|
{{ item.title }}
|
|
</router-link>
|
|
</li>
|
|
</ul>
|
|
<div v-if="config.isAuthenticated" class="log-in">
|
|
<router-link :to="{name: 'Files'}" class="base-button theme-color">
|
|
{{ $t('go_to_files') }}
|
|
</router-link>
|
|
</div>
|
|
<div v-if="! config.isAuthenticated" class="log-in">
|
|
<router-link :to="{name: 'SignIn'}" class="base-button theme-color">
|
|
{{ $t('page_index.menu.log_in') }}
|
|
</router-link>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters } from 'vuex'
|
|
|
|
export default {
|
|
name: 'Header',
|
|
components: {
|
|
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'config'
|
|
]),
|
|
},
|
|
data() {
|
|
return {
|
|
isWhite: false,
|
|
navigation: [
|
|
{
|
|
title: this.$t('navigation.price'),
|
|
href: 'cenik',
|
|
},
|
|
{
|
|
title: this.$t('navigation.about-us'),
|
|
href: 'o-nas',
|
|
},
|
|
{
|
|
title: this.$t('navigation.contact-and-support'),
|
|
href: 'kontakt-a-podpora',
|
|
},
|
|
],
|
|
}
|
|
},
|
|
methods: {
|
|
scrollToSection(anchor) {
|
|
var el = document.getElementById('vuefilemanager')
|
|
|
|
const section = document.getElementById(anchor),
|
|
position = section.offsetTop;
|
|
|
|
el.scrollTo({top: position, behavior: 'smooth'});
|
|
}
|
|
},
|
|
created() {
|
|
|
|
// Perform scroll to loaded location
|
|
if (document.location.hash) {
|
|
setTimeout(() => {
|
|
this.scrollToSection(document.location.hash.substring(1))
|
|
}, 300)
|
|
}
|
|
|
|
// Set white bar after user scrolling down
|
|
var el = document.getElementById('vuefilemanager')
|
|
|
|
el.addEventListener('scroll', () => {
|
|
if (el.scrollTop > 35 ) {
|
|
this.isWhite = true
|
|
} else {
|
|
this.isWhite = false
|
|
}
|
|
})
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '@assets/oasis/_components';
|
|
@import '@assets/oasis/_homepage';
|
|
@import '@assets/oasis/_responsive';
|
|
|
|
.oasis-navigation {
|
|
position: sticky;
|
|
top: 0;
|
|
}
|
|
|
|
.navigation {
|
|
padding: 5px 0;
|
|
z-index: 10;
|
|
@include transition(150ms);
|
|
margin-top: 35px;
|
|
|
|
&.white {
|
|
background: white;
|
|
}
|
|
|
|
.container {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.log-in, .logo {
|
|
width: 235px;
|
|
}
|
|
|
|
.logo img {
|
|
width: 100%;
|
|
}
|
|
|
|
.log-in {
|
|
text-align: right;
|
|
}
|
|
}
|
|
|
|
@media only screen and (max-width: 1370px) {
|
|
.navigation {
|
|
margin-top: 5px;
|
|
}
|
|
}
|
|
|
|
@media only screen and (max-width: 960px) {
|
|
.oasis-navigation.navigation {
|
|
margin-top: 10px;
|
|
|
|
.base-button {
|
|
padding: 12px 24px;
|
|
}
|
|
}
|
|
|
|
.links {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
.navigation {
|
|
|
|
.links li a {
|
|
color: $dark-mode-text;
|
|
}
|
|
|
|
&.white {
|
|
background: rgba(darken($theme-bg-dark, 10%), 0.9);
|
|
backdrop-filter: blur(18px);
|
|
}
|
|
}
|
|
}
|
|
</style>
|