Add route transitions

This commit is contained in:
Vagner 2024-10-12 23:53:08 -03:00
parent e6117d77d7
commit 53d52f3a14
2 changed files with 29 additions and 10 deletions

View File

@ -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">
<Suspense> <Transition name="page" mode="out-in" appear>
<component :is="Component"></component> <div :key="route.fullPath">
<template #fallback> <Suspense >
<div class="flex w-full h-full justify-center items-center"> <template #default >
<SpinnerComponent :width="'16'" :height="'16'"></SpinnerComponent> <component :is="Component" />
</div> </template>
</template> <template #fallback>
</Suspense> <div class="flex w-full h-full justify-center items-center">
<SpinnerComponent :width="'16'" :height="'16'" />
</div>
</template>
</Suspense>
</div>
</Transition>
</template> </template>
</RouterView> </RouterView>
</template> </template>

View File

@ -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;
@ -8,4 +7,15 @@
.dropdown-leave-to { .dropdown-leave-to {
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);
}