Création du composant SkeletonMoviesLoader et déplacement du skeleton existant d…
…ans le composant MoviesList..
Showing
3 changed files
with
39 additions
and
13 deletions
| @@ -3,4 +3,5 @@ | @@ -3,4 +3,5 @@ | ||
| 3 | - Ajout page index. | 3 | - Ajout page index. |
| 4 | - Modification app.vue afin d'initialiser l'app avec vuetify et NuxtPage pour démarrer sur la page index. | 4 | - Modification app.vue afin d'initialiser l'app avec vuetify et NuxtPage pour démarrer sur la page index. |
| 5 | - Création du composant MoviesList. | 5 | - Création du composant MoviesList. |
| 6 | -- Création du composant SearchBar. | 6 | +- Création du composant SearchBar. |
| 7 | +- Création du composant SkeletonMoviesLoader. |
| @@ -12,20 +12,10 @@ const isInitialLoading = ref(true); | @@ -12,20 +12,10 @@ const isInitialLoading = ref(true); | ||
| 12 | <template> | 12 | <template> |
| 13 | <section> | 13 | <section> |
| 14 | <h1 class="text-4xl font-bold mb-8 text-center">Découvrez les films populaires</h1> | 14 | <h1 class="text-4xl font-bold mb-8 text-center">Découvrez les films populaires</h1> |
| 15 | - | ||
| 16 | <!-- Barre de recherche --> | 15 | <!-- Barre de recherche --> |
| 17 | <search-bar placeholder="Rechercher un film..."/> | 16 | <search-bar placeholder="Rechercher un film..."/> |
| 18 | - | 17 | + <!-- Loading Skeleton --> |
| 19 | - <!-- Skeleton loader pendant le chargement initial --> | 18 | + <skeleton-movies-loader :is-initial-loading="isInitialLoading" :skeleton-number="20" /> |
| 20 | - <div v-if="isInitialLoading" class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"> | ||
| 21 | - <div v-for="i in 8" :key="i" class="bg-gray-800 rounded-lg overflow-hidden shadow-lg animate-pulse"> | ||
| 22 | - <div class="h-80 bg-gray-700"/> | ||
| 23 | - <div class="p-4"> | ||
| 24 | - <div class="h-6 bg-gray-700 rounded mb-3"/> | ||
| 25 | - <div class="h-4 bg-gray-700 rounded w-2/3"/> | ||
| 26 | - </div> | ||
| 27 | - </div> | ||
| 28 | - </div> | ||
| 29 | </section> | 19 | </section> |
| 30 | </template> | 20 | </template> |
| 31 | 21 |
components/SkeletonMoviesLoader.vue
0 → 100644
| 1 | +<script setup lang="ts"> | ||
| 2 | +//#region --Props--. | ||
| 3 | +defineProps({ | ||
| 4 | + isInitialLoading: { | ||
| 5 | + type: Boolean, | ||
| 6 | + required: true, | ||
| 7 | + nullable: false, | ||
| 8 | + }, | ||
| 9 | + skeletonNumber: { | ||
| 10 | + type: Number, | ||
| 11 | + required: false, | ||
| 12 | + nullable: false, | ||
| 13 | + default: 12 | ||
| 14 | + } | ||
| 15 | +}); | ||
| 16 | +//#endregion | ||
| 17 | + | ||
| 18 | +</script> | ||
| 19 | + | ||
| 20 | +<template> | ||
| 21 | + <!-- Skeleton loader pendant le chargement initial --> | ||
| 22 | + <section v-if="isInitialLoading" class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"> | ||
| 23 | + <div v-for="i in skeletonNumber" :key="i" class="bg-gray-800 rounded-lg overflow-hidden shadow-lg animate-pulse"> | ||
| 24 | + <div class="h-80 bg-gray-700"/> | ||
| 25 | + <div class="p-4"> | ||
| 26 | + <div class="h-6 bg-gray-700 rounded mb-3"/> | ||
| 27 | + <div class="h-4 bg-gray-700 rounded w-2/3"/> | ||
| 28 | + </div> | ||
| 29 | + </div> | ||
| 30 | + </section> | ||
| 31 | +</template> | ||
| 32 | + | ||
| 33 | +<style scoped> | ||
| 34 | + | ||
| 35 | +</style> |
-
Please register or login to post a comment