FAQ.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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 webinaires 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. '<strong>Inscription et confirmation</strong>' +
  48. "<ol style='margin-top:10px;margin-bottom:10px;padding-left: 20px;'><li>Inscrivez-vous à l'un de nos webinaires en choisissant une date sur l'agenda et renseignez vos informations.</li>" +
  49. "<li>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.</li>" +
  50. '<li>Un mail de relance à J-1 vous sera envoyer vous rappelant votre participation au webinaire.</li></ol>' +
  51. '<strong>Le jour J</strong>' +
  52. "<ol style='margin-top:10px;margin-bottom:10px;padding-left: 20px;'><li>Cliquez sur l'URL de connexion." +
  53. '<li>Nous vous encourageons à arriver quelques minutes en avance pour vous assurer de pouvoir accéder au webinaire sans aucun problème technique.</li>' +
  54. '<li>Lors du début du webinaire, toutes les instructions nécessaires vous seront fournies.</li></ol>',
  55. },
  56. {
  57. question: 'De quel matériel aurais-je besoin pour suivre le webinaire ?',
  58. answer:
  59. "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-parleurs.",
  60. },
  61. {
  62. question: 'Y a-t-il une limite de participants ?',
  63. answer:
  64. "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.",
  65. },
  66. {
  67. question: "J'ai besoin d'aide...",
  68. answer:
  69. '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>',
  70. },
  71. ]
  72. const activeIndex: Ref<number | null> = ref(null)
  73. function toggle(index: number) {
  74. activeIndex.value = activeIndex.value === index ? null : index
  75. }
  76. function isOpen(index: number) {
  77. return activeIndex.value === index
  78. }
  79. </script>
  80. <style scoped lang="scss">
  81. .section-title {
  82. display: flex;
  83. flex-direction: column;
  84. align-items: center;
  85. h3 {
  86. font-size: 42px;
  87. letter-spacing: 0.1rem;
  88. line-height: 3.5rem;
  89. margin-bottom: 0.5rem;
  90. margin-top: 2rem;
  91. }
  92. .strong-label {
  93. font-size: 1.5rem;
  94. font-weight: 400 !important;
  95. letter-spacing: 0.1rem;
  96. line-height: 2rem;
  97. margin-bottom: 1rem;
  98. text-align: center;
  99. text-transform: uppercase;
  100. }
  101. }
  102. .faq {
  103. padding: 1rem;
  104. width: 90%;
  105. margin-left: auto;
  106. margin-right: auto;
  107. }
  108. .faq-item {
  109. margin-bottom: 0.5rem;
  110. border-radius: 4px;
  111. }
  112. .question {
  113. background-color: var(--primary-color);
  114. color: var(--on-primary-color);
  115. padding: 0.75rem 1rem;
  116. cursor: pointer;
  117. border-radius: 4px;
  118. display: flex;
  119. align-items: center;
  120. :hover {
  121. background-color: var(--neutral-color-alt-strong);
  122. }
  123. .v-icon {
  124. font-size: 16px !important;
  125. color: var(--on-primary-color-alt);
  126. margin-right: 0.5rem;
  127. }
  128. }
  129. .question.open {
  130. border-radius: 4px 4px 0 0;
  131. }
  132. .answer {
  133. background-color: var(--secondary-color-light);
  134. padding: 0.5rem 1rem;
  135. border: none;
  136. border-radius: 0 0 4px 4px;
  137. box-shadow: -1px 2px 6px 3px var(--on-neutral-color-extra-light);
  138. }
  139. </style>