|
@@ -2,9 +2,9 @@
|
|
|
Menu Navigation
|
|
Menu Navigation
|
|
|
-->
|
|
-->
|
|
|
<template>
|
|
<template>
|
|
|
- <div v-intersect="onIntersect">
|
|
|
|
|
|
|
+ <div v-if="nuxtReady" v-intersect="onIntersect">
|
|
|
<!-- Navigation (écran large) -->
|
|
<!-- Navigation (écran large) -->
|
|
|
- <div v-if="lgAndUp || (!isMobileDevice() && !nuxtReady)">
|
|
|
|
|
|
|
+ <div v-if="lgAndUp">
|
|
|
<LayoutNavigationLg :menu="menu" />
|
|
<LayoutNavigationLg :menu="menu" />
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -13,13 +13,21 @@ Menu Navigation
|
|
|
<LayoutNavigationMd :menu="menu" />
|
|
<LayoutNavigationMd :menu="menu" />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div v-else class="loading-screen">
|
|
|
|
|
+ <v-img
|
|
|
|
|
+ src="/images/logos/opentalent/Logo_Opentalent-gris.png"
|
|
|
|
|
+ alt="Logo Opentalent - Agenda et logiciels culturels"
|
|
|
|
|
+ class="logo ml-4"
|
|
|
|
|
+ width="200"
|
|
|
|
|
+ />
|
|
|
|
|
+ <v-progress-circular indeterminate />
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import { useDisplay } from 'vuetify'
|
|
import { useDisplay } from 'vuetify'
|
|
|
import type { MainMenuItem } from '~/types/interface'
|
|
import type { MainMenuItem } from '~/types/interface'
|
|
|
import { useLayoutStore } from '~/stores/layoutStore'
|
|
import { useLayoutStore } from '~/stores/layoutStore'
|
|
|
-import { useClientDevice } from '~/composables/useClientDevice'
|
|
|
|
|
|
|
|
|
|
// On force la version écran large au build côté serveur si l'écran fait plus de 1280px de large
|
|
// On force la version écran large au build côté serveur si l'écran fait plus de 1280px de large
|
|
|
const nuxtReady = ref(false)
|
|
const nuxtReady = ref(false)
|
|
@@ -29,8 +37,6 @@ onNuxtReady(() => {
|
|
|
|
|
|
|
|
const { lgAndUp } = useDisplay()
|
|
const { lgAndUp } = useDisplay()
|
|
|
|
|
|
|
|
-const { isMobileDevice } = useClientDevice()
|
|
|
|
|
-
|
|
|
|
|
const menu: Array<MainMenuItem> = [
|
|
const menu: Array<MainMenuItem> = [
|
|
|
{
|
|
{
|
|
|
label: 'Nos logiciels',
|
|
label: 'Nos logiciels',
|
|
@@ -64,4 +70,22 @@ const onIntersect = (isIntersecting: boolean) => {
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style scoped></style>
|
|
|
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
|
+.loading-screen {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: row;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
|
+ height: 120px;
|
|
|
|
|
+ padding: 16px;
|
|
|
|
|
+ margin: 0 10%;
|
|
|
|
|
+
|
|
|
|
|
+ .v-img {
|
|
|
|
|
+ max-width: 300px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .v-progress-circular {
|
|
|
|
|
+ color: var(--primary-color);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|