1
0
Fork 0
mirror of https://github.com/em-squared/5e-drs.git synced 2025-10-30 13:14:20 +00:00
5e-drs/docs/.vuepress/theme/layouts/GlobalLayout.vue

178 lines
4.7 KiB
Vue
Raw Normal View History

2020-03-26 19:04:23 +01:00
<template>
2020-03-30 14:26:19 +02:00
<v-app class="srd">
2020-03-30 11:03:20 +02:00
<v-overlay :value="$store.state.loading">
<v-progress-circular indeterminate size="64"></v-progress-circular>
</v-overlay>
2020-04-11 18:01:59 +02:00
<NavDrawer class="d-print-none" />
<RightDrawer class="d-print-none" v-if="hasRightDrawer" />
2020-03-26 19:04:23 +01:00
2020-04-11 18:01:59 +02:00
<Navbar class="d-print-none" />
2020-03-26 19:04:23 +01:00
2020-03-28 10:42:54 +01:00
<v-content>
2020-04-15 16:27:16 +02:00
<v-container fluid ref="container">
2020-03-30 11:03:20 +02:00
<v-row align="start" justify="center">
<v-col cols="12">
<DefaultGlobalLayout/>
</v-col>
2020-03-28 10:42:54 +01:00
</v-row>
2020-04-23 09:42:35 +02:00
2020-03-28 10:42:54 +01:00
</v-container>
<v-btn v-show="$vuetify.breakpoint.lgAndUp && $store.state.hasRightDrawer" color="primary" @click.stop="setRightDrawer" :class="rightDrawerButtonCSS()" small top right fixed fab>
<v-icon v-if="$store.state.rightDrawer">mdi-chevron-right</v-icon>
<v-icon v-else left>mdi-chevron-left</v-icon>
</v-btn>
2020-04-23 09:42:35 +02:00
<v-fab-transition>
<v-btn color="primary" class="d-print-none" fab bottom right fixed @click="toTop" v-show="toTopButton" v-scroll="onScroll">
<v-icon class="d-print-none">mdi-chevron-up</v-icon>
</v-btn>
</v-fab-transition>
2020-03-28 10:42:54 +01:00
</v-content>
2020-04-18 15:27:29 +02:00
<v-bottom-sheet v-model="cookieConsentDialog" persistent>
<v-sheet class="text-center" tile>
<div class="py-3">Ce site utilise des cookies pour son bon fonctionnement et pour l'analyse de la fréquentation. Sans ces cookies, vous ne pourriez pas écrire vos sorts dans votre grimoire ou recruter tous ces monstres pour garnir votre repaire maléfique.</div>
<v-btn class="my-6" color="primary" @click="setCookieConsent">Compris</v-btn>
</v-sheet>
</v-bottom-sheet>
<v-snackbar v-model="$store.state.isOpenSnackbar">
{{ $store.state.snackbarText }}
<v-btn color="red" text @click="$store.commit('setIsOpenSnackbar', false)">
Fermer
</v-btn>
</v-snackbar>
2020-03-28 10:42:54 +01:00
</v-app>
2020-03-26 19:04:23 +01:00
</template>
<script>
import GlobalLayout from '@app/components/GlobalLayout.vue'
import Navbar from '@theme/components/Navbar.vue'
2020-03-30 11:03:20 +02:00
import NavDrawer from '@theme/components/NavDrawer.vue'
2020-04-01 19:34:06 +02:00
import RightDrawer from '@theme/components/RightDrawer.vue'
2020-04-15 16:27:16 +02:00
import Vue from 'vue'
import RuleTooltip from '@theme/global-components/RT'
2020-04-18 15:27:29 +02:00
import Cookies from 'js-cookie'
2020-03-26 19:04:23 +01:00
export default {
name: 'GlobalLayout',
components: {
DefaultGlobalLayout: GlobalLayout,
2020-03-30 11:03:20 +02:00
Navbar,
2020-04-01 19:34:06 +02:00
NavDrawer,
RightDrawer
2020-03-26 19:04:23 +01:00
},
computed: {
},
2020-03-26 19:04:23 +01:00
data () {
return {
2020-04-18 15:27:29 +02:00
cookieConsentDialog: true,
2020-04-23 09:42:35 +02:00
toTopButton: false
2020-03-26 19:04:23 +01:00
}
},
computed: {
footerCSS () {
let css = ''
if (this.$store.state.drawer) {
css += ' footer-padding-left'
}
if (this.$store.state.rightDrawer) {
css += ' footer-padding-right'
}
return css
},
2020-04-01 19:34:06 +02:00
hasRightDrawer() {
return this.$store.state.hasRightDrawer
}
2020-03-26 19:04:23 +01:00
},
mounted () {
this.$store.commit('setLoading', false) // Page chargée
2020-04-11 18:01:59 +02:00
this.$store.commit('setDrawer', this.$vuetify.breakpoint.lgAndUp)
2020-04-18 15:27:29 +02:00
// Cookie consent
const COOKIECONSENT = Cookies.get('heros-et-dragons-cookies')
if (COOKIECONSENT == 'compris') {
this.cookieConsentDialog = false
}
// Cookie consent
const THEMEISDARK = Cookies.get('heros-et-dragons-is-dark')
if (THEMEISDARK === 'true') {
this.$vuetify.theme.dark = true
}
// Chargement des donées utilisateur depuis le navigateur
this.$store.commit('mySpells/initialiseStore')
this.$store.commit('myMonsters/initialiseStore')
this.$store.commit('myMagicItems/initialiseStore')
// Loading feedback
this.$router.beforeEach((to, from, next) => {
if (to.path !== from.path && !Vue.component(to.name)) {
this.$store.commit('setLoading', true)
}
next()
})
this.$router.afterEach(() => {
this.$store.commit('setLoading', false)
})
2020-03-26 19:04:23 +01:00
},
methods: {
2020-04-18 15:27:29 +02:00
setCookieConsent () {
Cookies.set('heros-et-dragons-cookies', 'compris')
this.cookieConsentDialog = false
2020-04-23 09:42:35 +02:00
},
onScroll (e) {
if (typeof window === 'undefined') return
const top = window.pageYOffset || e.target.scrollTop || 0
this.toTopButton = top > 20
},
toTop () {
this.$vuetify.goTo(0)
},
rightDrawerButtonCSS () {
if (this.$store.state.rightDrawer) {
return 'right-drawer-button right-drawer-button-open'
}
return 'right-drawer-button right-drawer-button-close'
},
setRightDrawer () {
this.$store.commit('setRightDrawer', !this.$store.state.rightDrawer)
},
2020-03-26 19:04:23 +01:00
}
}
</script>
<style lang="scss">
.footer-padding-left {
padding-left: 300px;
}
.footer-padding-right {
padding-right: 300px;
}
.right-drawer-button {
top: 150px !important;
}
.right-drawer-button-open {
right: 280px !important;
}
.right-drawer-button-close {
right: -20px !important;
}
</style>