|
@@ -1,259 +1,178 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div id="Fonctionnalites">
|
|
|
|
|
- <LayoutContainer v-if="!mdAndDown">
|
|
|
|
|
- <div class="container-green">
|
|
|
|
|
- <v-row class="custom-row">
|
|
|
|
|
- <v-col cols="6">
|
|
|
|
|
- <LayoutUISubTitle
|
|
|
|
|
- title-color="#fff"
|
|
|
|
|
- :iconSize="6"
|
|
|
|
|
- :iconClasses="iconClasses"
|
|
|
|
|
- :titleText="'Découvrez TOUTES LES FONCTIONNALITÉS DE NOTRE solution'"
|
|
|
|
|
- :iconColor="iconColor"
|
|
|
|
|
- />
|
|
|
|
|
- <LayoutUITitle
|
|
|
|
|
- title="Des fonctionnalités adaptées à vos besoins"
|
|
|
|
|
- title-color="#fff"
|
|
|
|
|
- />
|
|
|
|
|
- </v-col>
|
|
|
|
|
-
|
|
|
|
|
- <v-col cols="12" md="6" lg="6">
|
|
|
|
|
- <div class="d-flex align-center">
|
|
|
|
|
- <div class="carousel-button" @click="previousAction">
|
|
|
|
|
- <i class="fas fa-chevron-left"></i>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="carousel-button" @click="nextAction">
|
|
|
|
|
- <i class="fas fa-chevron-right"></i>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <LayoutContainer>
|
|
|
|
|
+ <v-row>
|
|
|
|
|
+ <v-col cols="6">
|
|
|
|
|
+ <LayoutUISubTitle>
|
|
|
|
|
+ Découvrez TOUTES LES FONCTIONNALITÉS DE NOTRE solution
|
|
|
|
|
+ </LayoutUISubTitle>
|
|
|
|
|
+
|
|
|
|
|
+ <LayoutUITitle>
|
|
|
|
|
+ Des fonctionnalités adaptées à vos besoins
|
|
|
|
|
+ </LayoutUITitle>
|
|
|
|
|
+ </v-col>
|
|
|
|
|
+
|
|
|
|
|
+ <v-col cols="12" md="6" class="d-flex align-center justify-start">
|
|
|
|
|
+ <v-btn icon="fas fa-chevron-left" @click="previousAction" />
|
|
|
|
|
+ <v-btn icon="fas fa-chevron-right" @click="nextAction" />
|
|
|
|
|
+ </v-col>
|
|
|
|
|
+ </v-row>
|
|
|
|
|
+
|
|
|
|
|
+ <v-row>
|
|
|
|
|
+ <v-col cols="12" md="12">
|
|
|
|
|
+ <Carousel
|
|
|
|
|
+ ref="carousel"
|
|
|
|
|
+ :items-to-show="4"
|
|
|
|
|
+ :items-to-scroll="1"
|
|
|
|
|
+ :wrap-around="true"
|
|
|
|
|
+ >
|
|
|
|
|
+ <Slide v-for="(card, index) in cards" :key="index" >
|
|
|
|
|
+ <div class="card-container">
|
|
|
|
|
+ <v-card class="inv-theme">
|
|
|
|
|
+ <v-img
|
|
|
|
|
+ :src="card.logo"
|
|
|
|
|
+ :alt="card.title"
|
|
|
|
|
+ class="mx-auto"
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <v-card-title>
|
|
|
|
|
+ <h5>
|
|
|
|
|
+ {{ card.title }}
|
|
|
|
|
+ </h5>
|
|
|
|
|
+ </v-card-title>
|
|
|
|
|
+
|
|
|
|
|
+ <v-card-item>
|
|
|
|
|
+ <v-card-text>
|
|
|
|
|
+ <ul>
|
|
|
|
|
+ <li
|
|
|
|
|
+ v-for="item in card.list"
|
|
|
|
|
+ :key="item"
|
|
|
|
|
+ >
|
|
|
|
|
+ <p>{{ item }}</p>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </v-card-text>
|
|
|
|
|
+
|
|
|
|
|
+ </v-card-item>
|
|
|
|
|
+ <div class="footer">
|
|
|
|
|
+ <p
|
|
|
|
|
+ v-for="option in card.options"
|
|
|
|
|
+ :key="option"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ option }}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </v-card>
|
|
|
</div>
|
|
</div>
|
|
|
- </v-col>
|
|
|
|
|
- </v-row>
|
|
|
|
|
-
|
|
|
|
|
- <v-row class="custom-row">
|
|
|
|
|
- <v-col cols="12" lg="12" md="12">
|
|
|
|
|
- <Carousel
|
|
|
|
|
- ref="functionCarousel"
|
|
|
|
|
- :items-to-show="4"
|
|
|
|
|
- :items-to-scroll="1"
|
|
|
|
|
- class="carousel"
|
|
|
|
|
- :wrap-around="true"
|
|
|
|
|
- >
|
|
|
|
|
- <Slide
|
|
|
|
|
- v-for="(card, index) in cards"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- :class="{
|
|
|
|
|
- card: true,
|
|
|
|
|
- }"
|
|
|
|
|
- >
|
|
|
|
|
- <div class="card-container">
|
|
|
|
|
- <v-card>
|
|
|
|
|
- <v-img
|
|
|
|
|
- :src="card.logo"
|
|
|
|
|
- :alt="card.title"
|
|
|
|
|
- class="mx-auto card-img"
|
|
|
|
|
- />
|
|
|
|
|
- <v-card-title>
|
|
|
|
|
- <h5 class="card-title">{{ card.title }}</h5>
|
|
|
|
|
- </v-card-title>
|
|
|
|
|
- <v-card-item>
|
|
|
|
|
- <v-card-text class="review-description">
|
|
|
|
|
- <ul>
|
|
|
|
|
- <li
|
|
|
|
|
- class="list-detail"
|
|
|
|
|
- v-for="item in card.list"
|
|
|
|
|
- :key="item"
|
|
|
|
|
- >
|
|
|
|
|
- <p v-html="item"></p>
|
|
|
|
|
- </li>
|
|
|
|
|
- </ul>
|
|
|
|
|
- </v-card-text>
|
|
|
|
|
-
|
|
|
|
|
- </v-card-item>
|
|
|
|
|
- <div class="card-footer">
|
|
|
|
|
- <p
|
|
|
|
|
- v-for="option in card.options"
|
|
|
|
|
- :key="option"
|
|
|
|
|
- >
|
|
|
|
|
- {{ option }}
|
|
|
|
|
- </p>
|
|
|
|
|
- </div>
|
|
|
|
|
- </v-card>
|
|
|
|
|
- </div>
|
|
|
|
|
- </Slide>
|
|
|
|
|
- </Carousel>
|
|
|
|
|
- </v-col>
|
|
|
|
|
- </v-row>
|
|
|
|
|
- </div>
|
|
|
|
|
- </LayoutContainer>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ </Slide>
|
|
|
|
|
+ </Carousel>
|
|
|
|
|
+ </v-col>
|
|
|
|
|
+ </v-row>
|
|
|
|
|
+ </LayoutContainer>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
-<script setup>
|
|
|
|
|
|
|
+<script setup lang="ts">
|
|
|
import { useDisplay } from "vuetify";
|
|
import { useDisplay } from "vuetify";
|
|
|
-import { ref, computed } from "vue";
|
|
|
|
|
import { Carousel, Slide } from "vue3-carousel";
|
|
import { Carousel, Slide } from "vue3-carousel";
|
|
|
import "vue3-carousel/dist/carousel.css";
|
|
import "vue3-carousel/dist/carousel.css";
|
|
|
-const { smAndDown, mdAndDown } = useDisplay();
|
|
|
|
|
|
|
+import { PropType } from "@vue/runtime-core";
|
|
|
|
|
+import { Functionality } from "~/types/interface";
|
|
|
|
|
|
|
|
-const props = defineProps({
|
|
|
|
|
- cards: Array,
|
|
|
|
|
- itemsToScroll: {
|
|
|
|
|
- type: Number,
|
|
|
|
|
- default: 1,
|
|
|
|
|
- },
|
|
|
|
|
- itemsToShow: {
|
|
|
|
|
- type: Number,
|
|
|
|
|
- default: 5,
|
|
|
|
|
- },
|
|
|
|
|
-});
|
|
|
|
|
|
|
+const { mdAndDown } = useDisplay();
|
|
|
|
|
|
|
|
-const functionCarousel = ref(null);
|
|
|
|
|
-
|
|
|
|
|
-const itemsToShow = computed(() => {
|
|
|
|
|
- if (width.value >= 1280 && width.value <= 1920) {
|
|
|
|
|
- return 3;
|
|
|
|
|
- } else if (width.value > 1920) {
|
|
|
|
|
- return 6;
|
|
|
|
|
|
|
+const props = defineProps({
|
|
|
|
|
+ cards: {
|
|
|
|
|
+ type: Array as PropType<Array<Functionality>>,
|
|
|
|
|
+ required: true
|
|
|
}
|
|
}
|
|
|
- return props.itemsToShow;
|
|
|
|
|
-});
|
|
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const carousel: Ref<typeof Carousel | null> = ref(null);
|
|
|
|
|
|
|
|
const nextAction = () => {
|
|
const nextAction = () => {
|
|
|
- functionCarousel.value.next();
|
|
|
|
|
|
|
+ carousel.value!.next();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const previousAction = () => {
|
|
const previousAction = () => {
|
|
|
- functionCarousel.value.prev();
|
|
|
|
|
|
|
+ carousel.value!.prev();
|
|
|
};
|
|
};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style scoped>
|
|
|
|
|
-.custom-row {
|
|
|
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
|
+.v-row {
|
|
|
width: 95%;
|
|
width: 95%;
|
|
|
margin-left: auto;
|
|
margin-left: auto;
|
|
|
margin-right: auto;
|
|
margin-right: auto;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.card-img {
|
|
|
|
|
- width: 5rem;
|
|
|
|
|
- height: 3rem;
|
|
|
|
|
- margin-top: 1rem;
|
|
|
|
|
-}
|
|
|
|
|
-.list-detail {
|
|
|
|
|
- font-weight: 300;
|
|
|
|
|
- font-size: 0.9rem;
|
|
|
|
|
- line-height: 1.2rem;
|
|
|
|
|
- margin-bottom: 1rem;
|
|
|
|
|
- color: #000000;
|
|
|
|
|
- word-break: none;
|
|
|
|
|
-}
|
|
|
|
|
-.card-title {
|
|
|
|
|
- white-space: pre-wrap;
|
|
|
|
|
-}
|
|
|
|
|
-.carousel {
|
|
|
|
|
- margin-left: 2rem;
|
|
|
|
|
- margin-right: 2rem;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-.title-container {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
-}
|
|
|
|
|
-.subtitle-avantage {
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- font-size: 3rem;
|
|
|
|
|
- line-height: 18px;
|
|
|
|
|
- color: white;
|
|
|
|
|
-}
|
|
|
|
|
-.subtitle {
|
|
|
|
|
- color: white;
|
|
|
|
|
- font-size: 1rem;
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- line-height: 15px;
|
|
|
|
|
- letter-spacing: 1.8px;
|
|
|
|
|
- text-transform: uppercase;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.icon-title {
|
|
|
|
|
- color: #fac20a;
|
|
|
|
|
- margin-right: 0.5rem;
|
|
|
|
|
-}
|
|
|
|
|
-.card {
|
|
|
|
|
- font-weight: 300;
|
|
|
|
|
- transition: transform 0.3s;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-.carousel-button {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
|
|
+.v-btn {
|
|
|
width: 60px;
|
|
width: 60px;
|
|
|
height: 60px;
|
|
height: 60px;
|
|
|
background-color: transparent;
|
|
background-color: transparent;
|
|
|
- border: 2px solid #fff;
|
|
|
|
|
|
|
+ //color: var(--on-primary-color);
|
|
|
|
|
+ color: white;
|
|
|
|
|
+ border: 2px solid var(--on-primary-color);
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
- margin-right: 1rem;
|
|
|
|
|
- margin-top: 5rem;
|
|
|
|
|
|
|
+ border-radius: 0;
|
|
|
|
|
+ margin: 6px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.carousel-button i {
|
|
|
|
|
- color: #fff;
|
|
|
|
|
|
|
+.carousel {
|
|
|
|
|
+ margin-left: 2rem;
|
|
|
|
|
+ margin-right: 2rem;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.reviewer-structure {
|
|
|
|
|
- font-weight: 300;
|
|
|
|
|
- font-size: 0.8rem;
|
|
|
|
|
|
|
+.card-container {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
- color: #071b1f;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.review-description {
|
|
|
|
|
- text-align: left;
|
|
|
|
|
-}
|
|
|
|
|
-.card-footer {
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- left: 0;
|
|
|
|
|
- margin-left: .5rem;
|
|
|
|
|
- font-size: .9rem;
|
|
|
|
|
|
|
+ margin-bottom: 3rem;
|
|
|
|
|
+ margin-right: 2rem;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.card {
|
|
|
|
|
|
|
+.v-card {
|
|
|
border-radius: 1rem;
|
|
border-radius: 1rem;
|
|
|
transition: transform 0.3s;
|
|
transition: transform 0.3s;
|
|
|
-}
|
|
|
|
|
|
|
+ font-weight: 300;
|
|
|
|
|
+ min-height: 25rem !important;
|
|
|
|
|
|
|
|
-.v-card {
|
|
|
|
|
|
|
+ .v-img {
|
|
|
|
|
+ width: 5rem;
|
|
|
|
|
+ height: 3rem;
|
|
|
|
|
+ margin-top: 1rem;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- min-height: 400px !important;
|
|
|
|
|
- max-height: 400px !important;
|
|
|
|
|
- min-width: 280px !important;
|
|
|
|
|
- max-width: 280px !important;
|
|
|
|
|
- border-radius: 1rem;
|
|
|
|
|
- min-height: 25rem;
|
|
|
|
|
|
|
+ .v-card-title {
|
|
|
|
|
+ white-space: pre-wrap;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .v-card-item {
|
|
|
|
|
+ text-align: left;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ li {
|
|
|
|
|
+ font-weight: 300;
|
|
|
|
|
+ font-size: 0.9rem;
|
|
|
|
|
+ line-height: 1.2rem;
|
|
|
|
|
+ margin-bottom: 1rem;
|
|
|
|
|
+ color: #000000;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .footer {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ margin-left: .5rem;
|
|
|
|
|
+ font-size: .9rem;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@media(min-width: 1800px){
|
|
@media(min-width: 1800px){
|
|
|
.v-card{
|
|
.v-card{
|
|
|
min-height: 400px !important;
|
|
min-height: 400px !important;
|
|
|
- max-height: 400px !important;
|
|
|
|
|
- min-width: 400px !important;
|
|
|
|
|
- max-width: 400px !important;
|
|
|
|
|
|
|
+ max-height: 400px !important;
|
|
|
|
|
+ min-width: 400px !important;
|
|
|
|
|
+ max-width: 400px !important;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.card-container {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- margin-bottom: 3rem;
|
|
|
|
|
- margin-right: 2rem;
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-.container-green {
|
|
|
|
|
- background-color: #0e2d32;
|
|
|
|
|
-}
|
|
|
|
|
</style>
|
|
</style>
|