|
|
@@ -1,74 +1,255 @@
|
|
|
<template>
|
|
|
- <v-app>
|
|
|
- <v-app-bar-nav-icon @click="drawer = true"> </v-app-bar-nav-icon>
|
|
|
-
|
|
|
- <v-navigation-drawer v-model="drawer" app>
|
|
|
- <v-list nav dense>
|
|
|
- <v-list-item v-for="(item, index) in items" :key="item">
|
|
|
- <v-list-item-title @click="selectMenu(item)">
|
|
|
- {{ item }}
|
|
|
- </v-list-item-title>
|
|
|
- </v-list-item>
|
|
|
- </v-list>
|
|
|
- </v-navigation-drawer>
|
|
|
-
|
|
|
- <!-- Tiroir de navigation pour les sous-menus -->
|
|
|
- <v-navigation-drawer v-model="subMenuDrawer" app right temporary>
|
|
|
- <v-list nav dense>
|
|
|
- <!-- Bouton de retour -->
|
|
|
- <v-list-item @click="closeSubMenu">
|
|
|
- <v-list-item-title>Retour</v-list-item-title>
|
|
|
- </v-list-item>
|
|
|
-
|
|
|
- <!-- Éléments du sous-menu -->
|
|
|
- <v-list-item
|
|
|
- v-for="(subItem, subIndex) in subMenus[currentMenu]"
|
|
|
- :key="subIndex"
|
|
|
- >
|
|
|
- <v-list-item-title>{{ subItem }}</v-list-item-title>
|
|
|
- </v-list-item>
|
|
|
- </v-list>
|
|
|
- </v-navigation-drawer>
|
|
|
-
|
|
|
- <!-- Contenu principal -->
|
|
|
- </v-app>
|
|
|
+ <div id="L'agenda opentalent">
|
|
|
+ <LayoutContainer>
|
|
|
+ <v-row class="custom-row align-center">
|
|
|
+ <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" />
|
|
|
+ </div>
|
|
|
+ <div class="carousel-button" @click="goNext">
|
|
|
+ <i class="fas fa-chevron-right" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </v-col>
|
|
|
+
|
|
|
+ <v-col cols="4">
|
|
|
+ <v-btn class="btn-news" text> VOIR TOUS LES EVENEMENTS </v-btn>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+
|
|
|
+ <v-row class="custom-row">
|
|
|
+ <p class="agenda-details">
|
|
|
+ Retrouvez tous les évènements culturels autour de chez vous.
|
|
|
+ </p>
|
|
|
+ </v-row>
|
|
|
+
|
|
|
+ <v-row class="custom-row">
|
|
|
+ <v-col cols="12" lg="12" md="12">
|
|
|
+ <Carousel ref="carousel" :items-to-show="3.2" :items-to-scroll="2">
|
|
|
+ <Slide
|
|
|
+ v-for="(event, eventIndex) in events"
|
|
|
+ :key="eventIndex"
|
|
|
+ class="slide-card"
|
|
|
+ >
|
|
|
+ <v-card>
|
|
|
+ <div
|
|
|
+ class="card-img"
|
|
|
+ :style="{ backgroundImage: 'url(' + event.img + ')' }"
|
|
|
+ ></div>
|
|
|
+
|
|
|
+ <v-card-title>
|
|
|
+ {{ event.title }}
|
|
|
+ </v-card-title>
|
|
|
+
|
|
|
+ <v-card-text>
|
|
|
+ {{ event.localisation }}
|
|
|
+ </v-card-text>
|
|
|
+
|
|
|
+ <div class="card-footer">
|
|
|
+ <v-chip-group active-class="primary--text" column>
|
|
|
+ <v-chip
|
|
|
+ v-for="(tag, tagIndex) in event.tags"
|
|
|
+ :key="tagIndex"
|
|
|
+ class="ma-2 chip-custom"
|
|
|
+ :color="tagColor(tag)"
|
|
|
+ label
|
|
|
+ >
|
|
|
+ <span :class="tagTextColor(tag)">{{ tag }}</span>
|
|
|
+ </v-chip>
|
|
|
+ </v-chip-group>
|
|
|
+ </div>
|
|
|
+ </v-card>
|
|
|
+ </Slide>
|
|
|
+ </Carousel>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </LayoutContainer>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
-export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- drawer: false,
|
|
|
- subMenuDrawer: false, // État du tiroir de navigation des sous-menus
|
|
|
- currentMenu: "",
|
|
|
- items: ["web", "shopping", "videos", "images", "news"],
|
|
|
- subMenus: {
|
|
|
- web: ["Sous-menu Web 1", "Sous-menu Web 2"],
|
|
|
- shopping: ["Sous-menu Shopping 1", "Sous-menu Shopping 2"],
|
|
|
- // Ajoutez d'autres sous-menus ici
|
|
|
- },
|
|
|
- };
|
|
|
+<script setup>
|
|
|
+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";
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+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"],
|
|
|
},
|
|
|
- methods: {
|
|
|
- selectMenu(item) {
|
|
|
- this.currentMenu = item;
|
|
|
- // fermes le tiroir de navigation principal
|
|
|
- this.drawer = false;
|
|
|
- this.subMenuDrawer = true;
|
|
|
- },
|
|
|
- closeSubMenu() {
|
|
|
- this.subMenuDrawer = false;
|
|
|
- this.drawer = true;
|
|
|
- },
|
|
|
+ {
|
|
|
+ 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"],
|
|
|
+ },
|
|
|
+]);
|
|
|
+
|
|
|
+let carousel;
|
|
|
+
|
|
|
+const goPrevious = () => carousel.prev();
|
|
|
+const goNext = () => carousel.next();
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-.nav-menu {
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- right: 0;
|
|
|
- z-index: 999;
|
|
|
+.card-img {
|
|
|
+ width: 100%;
|
|
|
+ height: 200px;
|
|
|
+ background-size: cover;
|
|
|
+ background-position: center;
|
|
|
+}
|
|
|
+
|
|
|
+.green--text {
|
|
|
+ color: green;
|
|
|
+}
|
|
|
+.custom-row {
|
|
|
+ width: 90%;
|
|
|
+ margin-left: auto;
|
|
|
+ margin-right: auto;
|
|
|
+}
|
|
|
+.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-custom {
|
|
|
+ color: white;
|
|
|
+ border: 1px solid #0e2d32;
|
|
|
+ border-radius: 3rem;
|
|
|
+ text-transform: uppercase;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.carousel-button i {
|
|
|
+ color: #000000;
|
|
|
+}
|
|
|
+
|
|
|
+.card-date {
|
|
|
+ font-size: 0.8em;
|
|
|
+ color: #888;
|
|
|
+ margin-left: 1rem;
|
|
|
+}
|
|
|
+
|
|
|
+.card-footer {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-left: 4rem;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.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>
|