Bruno Predot

Création du composant SkeletonMoviesLoader et déplacement du skeleton existant d…

…ans le composant MoviesList..
@@ -4,3 +4,4 @@ @@ -4,3 +4,4 @@
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
  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>