|
|
@@ -1,88 +1,301 @@
|
|
|
<template>
|
|
|
- <div class="row">
|
|
|
- <div class="col-2">
|
|
|
- <button @click="goPrevious">Précédent</button>
|
|
|
- <button @click="goNext">Suivant</button>
|
|
|
- </div>
|
|
|
- <div class="col-8">
|
|
|
- <Carousel class="carrousel" :itemsToShow="3.5" :itemsToScroll="1" v-slot="{ carousel }">
|
|
|
- <Slide v-for="(actu, index) in actus" :key="index">
|
|
|
- <div class="card">
|
|
|
- <img class="card-img-top" :src="'https://picsum.photos/300/300?random='+index" alt="Card image cap">
|
|
|
- <div class="card-body">
|
|
|
- <h5 class="card-title">{{ actu.title }}</h5>
|
|
|
- <p class="card-text">{{ actu.content }}</p>
|
|
|
- <p class="card-date">{{ actu.date }}</p>
|
|
|
- </div>
|
|
|
- <div class="card-footer">
|
|
|
- <button class="card-button">+</button>
|
|
|
- </div>
|
|
|
+ <LayoutContainer :overflow="false">
|
|
|
+ <v-row>
|
|
|
+ <v-col cols="4">
|
|
|
+ <h2 class="title">L'agenda Opentalent</h2>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col cols="4">
|
|
|
+ <div class="d-flex justify-center align-center">
|
|
|
+ <div class="carousel-button" @click="goPrevious">
|
|
|
+ <i class="fas fa-chevron-left"></i>
|
|
|
</div>
|
|
|
- </Slide>
|
|
|
- </Carousel>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="carousel-button" @click="goNext">
|
|
|
+ <i class="fas fa-chevron-right"></i>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col cols="4">
|
|
|
+ <v-btn class="btn-news" text>VOIR TOUTES LES ACTUALITÉS</v-btn>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+
|
|
|
+ <p class="agenda-details">
|
|
|
+ Retrouvez tous les évènements culturels autour de chez vous.
|
|
|
+ </p>
|
|
|
+
|
|
|
+ <v-row>
|
|
|
+ <v-col cols="12">
|
|
|
+ <Carousel
|
|
|
+ :itemsToShow="3"
|
|
|
+ :itemsToScroll="2"
|
|
|
+ v-slot="{ carousel: _carousel }"
|
|
|
+ ref="carousel"
|
|
|
+ >
|
|
|
+ <Slide
|
|
|
+ class="slide-card"
|
|
|
+ v-for="(event, index) in events"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div class="card">
|
|
|
+ <img class="card-img-top" :src="event.img" alt="Card image cap" />
|
|
|
+ <div class="card-body">
|
|
|
+ <small class="card-rdv">{{ event.rdv }}</small>
|
|
|
+ <h5 class="card-title">{{ event.title }}</h5>
|
|
|
+ <p class="card-localisation">{{ event.localisation }}</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card-footer">
|
|
|
+ <v-chip-group active-class="primary--text" column>
|
|
|
+ <v-chip
|
|
|
+ v-for="(tag, index) in event.tags"
|
|
|
+ :key="index"
|
|
|
+ class="ma-2 chip-custom"
|
|
|
+ :color="tagColor(tag)"
|
|
|
+ label
|
|
|
+ >
|
|
|
+ <span :class="tagTextColor(tag)">{{ tag }}</span>
|
|
|
+ </v-chip>
|
|
|
+ </v-chip-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Slide>
|
|
|
+ </Carousel>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </LayoutContainer>
|
|
|
</template>
|
|
|
+
|
|
|
<script setup>
|
|
|
-import { ref } from 'vue';
|
|
|
-import { Carousel, Slide } from 'vue3-carousel';
|
|
|
-import 'vue3-carousel/dist/carousel.css';
|
|
|
-
|
|
|
-const actus = ref([
|
|
|
- { title: 'Actu 1', content: 'Contenu 1', date: '20/06/2023' },
|
|
|
- { title: 'Actu 2', content: 'Contenu 2', date: '21/06/2023' },
|
|
|
- { title: 'Actu 3', content: 'Contenu 3', date: '22/06/2023' },
|
|
|
- { title: 'fenihfze', content: 'bjkeffbezk', date: '23/06/2023' },
|
|
|
- { title: 'Actu 1', content: 'Contenu 1', date: '24/06/2023' },
|
|
|
- { title: 'Actu 2', content: 'Contenu 2', date: '25/06/2023' },
|
|
|
- { title: 'Actu 3', content: 'Contenu 3', date: '26/06/2023' },
|
|
|
- { title: 'fenihfze', content: 'bjkeffbezk', date: '27/06/2023' }
|
|
|
-]);
|
|
|
+import { ref } from "vue";
|
|
|
+import { Carousel, Slide } from "vue3-carousel";
|
|
|
+import "vue3-carousel/dist/carousel.css";
|
|
|
+const tagColor = (tag) => {
|
|
|
+ switch (tag) {
|
|
|
+ case "Payant":
|
|
|
+ return "red";
|
|
|
+ case "Gratuit":
|
|
|
+ return "green";
|
|
|
+ default:
|
|
|
+ return "primary";
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
-let carouselInstance;
|
|
|
+const tagTextColor = (tag) => {
|
|
|
+ switch (tag) {
|
|
|
+ case "Payant":
|
|
|
+ return "red--text";
|
|
|
+ case "Gratuit":
|
|
|
+ return "green--text";
|
|
|
+ default:
|
|
|
+ return "black--text";
|
|
|
+ }
|
|
|
+};
|
|
|
+const events = ref([
|
|
|
+ {
|
|
|
+ rdv: "20h00",
|
|
|
+ title: "LA NUIT DES RÊVES ",
|
|
|
+ localisation: "FESTIVALDE musique - LONGCHAMP",
|
|
|
+ date: "21/06/2023",
|
|
|
+ img: "/images/agenda/agenda2.jpg",
|
|
|
+ tags: ["Festival", "Musique", "Tout public", "Payant"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rdv: "20h00",
|
|
|
+ title: "LE LAC DES CYGNES",
|
|
|
+ localisation: "SPECTACLE DE DANSE - PARIS 1",
|
|
|
+ date: "22/06/2023",
|
|
|
+ img: "/images/agenda/agenda3.jpg",
|
|
|
+ tags: ["Festival", "Musique", "Tout public", "Gratuit"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rdv: "20h00",
|
|
|
+ title: "SOLIDAYS 2023 : 23 > 25 juin",
|
|
|
+ localisation: "ORCHESTRE DE PARIS - PARIS 12",
|
|
|
+ date: "23/06/2023",
|
|
|
+ img: "/images/agenda/agenda4.jpg",
|
|
|
+ tags: ["Festival", "Musique", "Tout public", "Payant"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rdv: "20h00",
|
|
|
+ title: "LE LAC DES CYGNES",
|
|
|
+ localisation: "FESTIVALDE musique - LONGCHAMP",
|
|
|
+ date: "24/06/2023",
|
|
|
+ img: "/images/agenda/agenda5.jpg",
|
|
|
+ tags: ["Festival", "Musique", "Tout public", "Payant"],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rdv: "20h00",
|
|
|
+ title: "SOLIDAYS 2023 : 23 > 25 juin ",
|
|
|
+ localisation: "SPECTACLE DE DANSE - PARIS 1",
|
|
|
+ date: "20/06/2023",
|
|
|
+ img: "/images/agenda/agenda1.jpg",
|
|
|
+ tags: ["Festival", "Musique", "Tout public", "Payant"],
|
|
|
+ },
|
|
|
+]);
|
|
|
|
|
|
-const goNext = () => carouselInstance.value.advance(1);
|
|
|
-const goPrevious = () => carouselInstance.value.advance(-1);
|
|
|
+let carousel;
|
|
|
|
|
|
+const goPrevious = () => carousel.prev();
|
|
|
+const goNext = () => carousel.next();
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-.row {
|
|
|
- display: flex;
|
|
|
+.green--text {
|
|
|
+ color: green;
|
|
|
}
|
|
|
|
|
|
-.col-4,
|
|
|
-.col-8 {
|
|
|
- flex: 1 1 0;
|
|
|
+.red--text {
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.black--text {
|
|
|
+ color: black;
|
|
|
+}
|
|
|
+.btn-news {
|
|
|
+ color: #9edbdd;
|
|
|
+ border-radius: 2rem;
|
|
|
+ font-family: "Barlow";
|
|
|
+ background: transparent;
|
|
|
+ border: 1px solid #9edbdd;
|
|
|
+ border-radius: 6px;
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 600;
|
|
|
+ text-transform: uppercase;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ align-items: center;
|
|
|
+ padding: 25px;
|
|
|
+ font-size: 10px;
|
|
|
+ line-height: 15px;
|
|
|
+}
|
|
|
+.chip-detail {
|
|
|
+ color: #000000;
|
|
|
+}
|
|
|
+.chip-custom {
|
|
|
+ color: white;
|
|
|
+ border: 1px solid #0e2d32;
|
|
|
+ border-radius: 3rem;
|
|
|
+ text-transform: uppercase;
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
|
|
|
+.card-localisation {
|
|
|
+ letter-spacing: 0.18em;
|
|
|
+ text-transform: uppercase;
|
|
|
+ font-size: 10px;
|
|
|
+ color: #112528;
|
|
|
+}
|
|
|
.card {
|
|
|
border-radius: 15px 15px 0 0;
|
|
|
- border: 1px solid #ccc;
|
|
|
- width: auto;
|
|
|
- height: auto;
|
|
|
+ margin-bottom: 2rem;
|
|
|
+ width: 90%;
|
|
|
}
|
|
|
|
|
|
-.card-img-top {
|
|
|
- border-radius: 15px 15px 0 0;
|
|
|
- width: 100%;
|
|
|
- height: auto;
|
|
|
+.icon-title {
|
|
|
+ color: #64afb7;
|
|
|
+ margin-top: 4.5rem;
|
|
|
+}
|
|
|
+.container-title {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-left: 2rem;
|
|
|
+ margin-top: 4.5rem;
|
|
|
}
|
|
|
|
|
|
+.carousel-button i {
|
|
|
+ color: #000000;
|
|
|
+}
|
|
|
+.card-text {
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 16px;
|
|
|
+ line-height: 18px;
|
|
|
+ margin-bottom: 1rem;
|
|
|
+ color: #091d20;
|
|
|
+}
|
|
|
+.card-title {
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 20px;
|
|
|
+ line-height: 24px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ letter-spacing: 0.18em;
|
|
|
+ text-transform: uppercase;
|
|
|
+}
|
|
|
.card-date {
|
|
|
font-size: 0.8em;
|
|
|
color: #888;
|
|
|
+ margin-left: 1rem;
|
|
|
}
|
|
|
|
|
|
.card-footer {
|
|
|
- text-align: right;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
}
|
|
|
|
|
|
-.card-button {
|
|
|
- background-color: transparent;
|
|
|
- border: none;
|
|
|
- font-size: 1.5em;
|
|
|
- color: #888;
|
|
|
+.card-body {
|
|
|
+ text-align: left;
|
|
|
+ margin-bottom: 1rem;
|
|
|
+ margin-left: 1rem;
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 500;
|
|
|
+ line-height: 24px;
|
|
|
+ color: #112528;
|
|
|
}
|
|
|
|
|
|
+.card-img-top {
|
|
|
+ border-radius: 9px 9px 0 0;
|
|
|
+ width: 100%;
|
|
|
+ object-fit: cover;
|
|
|
+ object-position: center;
|
|
|
+}
|
|
|
+
|
|
|
+.title,
|
|
|
+.carousel-button,
|
|
|
+.btn-news {
|
|
|
+ margin-top: 2rem;
|
|
|
+ margin-bottom: 2rem;
|
|
|
+}
|
|
|
+.agenda-details {
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 300;
|
|
|
+ font-size: 16px;
|
|
|
+ line-height: 20px;
|
|
|
+ margin-left: 2rem;
|
|
|
+ color: #091d20;
|
|
|
+ margin-bottom: 3rem;
|
|
|
+ width: 15rem;
|
|
|
+}
|
|
|
+.title {
|
|
|
+ font-family: "Barlow";
|
|
|
+ font-style: normal;
|
|
|
+ font-weight: 600;
|
|
|
+ font-size: 42px;
|
|
|
+ line-height: 42px;
|
|
|
+ margin-left: 2rem;
|
|
|
+ color: #071b1f;
|
|
|
+}
|
|
|
+
|
|
|
+.carousel-button {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ width: 40px;
|
|
|
+ height: 40px;
|
|
|
+ background-color: transparent;
|
|
|
+ border: 2px solid #000000;
|
|
|
+ cursor: pointer;
|
|
|
+ margin-right: 1rem;
|
|
|
+}
|
|
|
</style>
|