Add route transitions
This commit is contained in:
parent
e6117d77d7
commit
53d52f3a14
13
src/App.vue
13
src/App.vue
@ -1,20 +1,29 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
import TopBar from "@/components/TopBar/TopBar.vue";
|
import TopBar from "@/components/TopBar/TopBar.vue";
|
||||||
import SpinnerComponent from "@/components/SpinnerComponent.vue";
|
import SpinnerComponent from "@/components/SpinnerComponent.vue";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<TopBar />
|
<TopBar />
|
||||||
<RouterView v-slot="{ Component }">
|
<RouterView v-slot="{ Component }">
|
||||||
<template v-if="Component">
|
<template v-if="Component">
|
||||||
|
<Transition name="page" mode="out-in" appear>
|
||||||
|
<div :key="route.fullPath">
|
||||||
<Suspense >
|
<Suspense >
|
||||||
<component :is="Component"></component>
|
<template #default >
|
||||||
|
<component :is="Component" />
|
||||||
|
</template>
|
||||||
<template #fallback>
|
<template #fallback>
|
||||||
<div class="flex w-full h-full justify-center items-center">
|
<div class="flex w-full h-full justify-center items-center">
|
||||||
<SpinnerComponent :width="'16'" :height="'16'"></SpinnerComponent>
|
<SpinnerComponent :width="'16'" :height="'16'" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
</div>
|
||||||
|
</Transition>
|
||||||
</template>
|
</template>
|
||||||
</RouterView>
|
</RouterView>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
.dropdown-enter-active,
|
.dropdown-enter-active,
|
||||||
.dropdown-leave-active {
|
.dropdown-leave-active {
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
@ -9,3 +8,14 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(-10px);
|
transform: translateY(-10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.page-enter-active,
|
||||||
|
.page-leave-active {
|
||||||
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-enter-from,
|
||||||
|
.page-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(15px);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user