FAQ.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <!--
  2. Foire aux questions
  3. -->
  4. <template>
  5. <LayoutContainer>
  6. <v-row class="center-90">
  7. <LayoutUISubTitle> Des questions ? </LayoutUISubTitle>
  8. </v-row>
  9. <v-row class="center-90">
  10. <v-col cols="12" class="section-title">
  11. <h3>Tout savoir sur nos webinaire en ligne</h3>
  12. <div class="strong-label">Les questions les plus fréquentes</div>
  13. </v-col>
  14. </v-row>
  15. <div class="faq center-90">
  16. <div v-for="(item, index) in faqItems" :key="index" class="faq-item">
  17. <div
  18. :class="'question' + (isOpen(index) ? ' open' : '')"
  19. @click="toggle(index)"
  20. >
  21. <v-icon v-if="isOpen(index)" icon="fas fa-angle-down" />
  22. <v-icon v-else icon="fas fa-angle-right" />
  23. {{ item.question }}
  24. </div>
  25. <div v-if="isOpen(index)" class="answer" v-html="item.answer" />
  26. </div>
  27. </div>
  28. </LayoutContainer>
  29. </template>
  30. <script setup lang="ts">
  31. import type { Ref } from "vue";
  32. import type { FaqEntry } from "~/types/interface";
  33. const faqItems: Array<FaqEntry> = [
  34. {
  35. question: "Comment s’inscrire à un webinaire?",
  36. answer:
  37. 'Pour vous inscrire à un webinaire, suivez le lien "Inscrivez-vous" correspondant au cours qui vous intéresse.',
  38. },
  39. {
  40. question: "Combien de temps dure nos webinaires ?",
  41. answer:
  42. "Nos webinaires durent en moyenne 1H30. Les sessions de questions/réponses peuvent parfois prolonger la durée prévue de nos webinaires.",
  43. },
  44. {
  45. question: "Comment se passe un webinaire ?",
  46. answer:
  47. "Inscrivez-vous à l'un de nos webinaires en choisissant une date sur l'agenda et renseignez vos informations. " +
  48. "Vous recevrez à la suite de votre inscription sur notre site, un email de confirmation avec un rappel de la date et de l'horaire de participation ainsi que l'URL de connexion pour le webinaire. " +
  49. "Un mail de relance à J-1 vous sera envoyer vous rappelant votre participation au webinaire. " +
  50. "Le jour J, cliquez sur l'URL de connexion. Nous vous encourageons à arriver quelques minutes en avance pour vous assurer de pouvoir accéder au webinaire sans aucun problème technique. " +
  51. "Lors du début du webinaire, toutes les instructions nécessaires vous seront fournies.",
  52. },
  53. {
  54. question: "De quel matériel aurais-je besoin pour suivre le webinaire ?",
  55. answer:
  56. "Pour plus de confort, il est recommandé d'être équipé d'un outil (de préférence un ordinateur) disposant d'un micro et de haut-parleur.",
  57. },
  58. {
  59. question: "Y-a-t'il une limite de participants ?",
  60. answer:
  61. "Il n'y a pas de limite de participants lors de nos webinaires. Cependant, nous nous réservons le droit d'annuler une session si le nombre de participants est inférieur à 3 personnes.",
  62. },
  63. {
  64. question: "J'ai besoin d'aide...",
  65. answer:
  66. 'Notre équipe est là pour vous. <br/><button style="background-color: #0E2D32; color: #fff; border: none;border-radius: 4px;padding: 0.5rem 1rem;cursor: pointer;margin-top: 6px;" class="contact-btn" onclick="window.location.href=\'/nous-contacter\'">Contactez-nous</button>',
  67. },
  68. ];
  69. const activeIndex: Ref<number | null> = ref(null);
  70. function toggle(index: number) {
  71. activeIndex.value = activeIndex.value === index ? null : index;
  72. }
  73. function isOpen(index: number) {
  74. return activeIndex.value === index;
  75. }
  76. </script>
  77. <style scoped lang="scss">
  78. .section-title {
  79. display: flex;
  80. flex-direction: column;
  81. align-items: center;
  82. h3 {
  83. font-size: 2rem;
  84. letter-spacing: 0.1rem;
  85. line-height: 3.5rem;
  86. margin-bottom: 0.5rem;
  87. margin-top: 2rem;
  88. text-transform: uppercase;
  89. }
  90. .strong-label {
  91. font-size: 1.5rem;
  92. font-weight: 400 !important;
  93. letter-spacing: 0.1rem;
  94. line-height: 2rem;
  95. margin-bottom: 1rem;
  96. text-align: center;
  97. text-transform: uppercase;
  98. }
  99. }
  100. .faq {
  101. padding: 1rem;
  102. width: 90%;
  103. margin-left: auto;
  104. margin-right: auto;
  105. }
  106. .faq-item {
  107. margin-bottom: 0.5rem;
  108. border-radius: 4px;
  109. }
  110. .question {
  111. background-color: var(--primary-color);
  112. color: var(--on-primary-color);
  113. padding: 0.75rem 1rem;
  114. cursor: pointer;
  115. border-radius: 4px;
  116. display: flex;
  117. align-items: center;
  118. :hover {
  119. background-color: var(--neutral-color-alt-strong);
  120. }
  121. .v-icon {
  122. font-size: 16px !important;
  123. color: var(--on-primary-color-alt);
  124. margin-right: 0.5rem;
  125. }
  126. }
  127. .question.open {
  128. border-radius: 4px 4px 0 0;
  129. }
  130. .answer {
  131. background-color: var(--secondary-color-light);
  132. padding: 0.5rem 1rem;
  133. border: none;
  134. border-radius: 0 0 4px 4px;
  135. box-shadow: -1px 2px 6px 3px var(--on-neutral-color-extra-light);
  136. }
  137. </style>