opentalent_artist.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <LayoutNavigation />
  3. <LogicielsArtistBanner />
  4. <CommonMenuScroll :menus="menus" class="mb-6" />
  5. <div v-if="shouldShowStickyMenu" id="sticky-menu">
  6. <CommonStickyMenu
  7. :shouldShowStickyMenu="shouldShowStickyMenu"
  8. :squaresData="squaresData"
  9. />
  10. </div>
  11. <LogicielsArtistPresentation />
  12. <LogicielsArtistAvantages />
  13. <LogicielsArtistFonctionnalites />
  14. <LogicielsArtistComparatif />
  15. <LogicielsArtistAbonnement />
  16. <LogicielsArtistFormations />
  17. <LogicielsArtistReviews />
  18. <LayoutFAQ />
  19. <LayoutFooterPrefooter />
  20. <LayoutFooter id="layout-footer" />
  21. </template>
  22. <script setup>
  23. import { ref, onMounted } from "vue";
  24. const menus = ref([
  25. { id: "Presentation", label: "Présentation", element: null },
  26. { id: "Avantages", label: "Avantages", element: null },
  27. { id: "Fonctionnalites", label: "Fonctionnalités", element: null },
  28. { id: "Comparatif", label: "Comparatif", element: null },
  29. { id: "Abonnement", label: "Abonnement", element: null },
  30. { id: "Webinaires", label: "Wébinaires", element: null },
  31. { id: "Temoignages", label: "Témoignages", element: null },
  32. ]).value;
  33. const shouldShowStickyMenu = ref(true);
  34. const squaresData = [
  35. {
  36. id: 1,
  37. bgColor: "yellow-square",
  38. iconClass: "fa-regular fa-comments icon",
  39. text: "Nous contacter",
  40. url: "/nous-contacter",
  41. },
  42. {
  43. id: 2,
  44. bgColor: "yellow-square",
  45. iconClass: "fa-solid fa-circle-info icon",
  46. text: "Brochure",
  47. url: "https://www.opentalent.fr/fileadmin/stockage/commercial/plaquettes_commerciales/Depliant_Opentalent_Artist_23.pdf ",
  48. }
  49. ];
  50. onMounted(() => {
  51. const stickyMenu = document.getElementById("sticky-menu");
  52. const footer = document.getElementById("layout-footer");
  53. const observer = new IntersectionObserver(
  54. ([entry]) => {
  55. shouldShowStickyMenu.value = !entry.isIntersecting;
  56. },
  57. {
  58. root: null,
  59. threshold: 0,
  60. }
  61. );
  62. observer.observe(footer);
  63. });
  64. </script>
  65. <style scoped>
  66. #sticky-menu {
  67. position: sticky;
  68. top: 25rem;
  69. z-index: 10;
  70. margin-bottom: -35rem;
  71. float: right;
  72. }
  73. @media (max-width: 1800px) {
  74. #sticky-menu {
  75. top: 16rem;
  76. margin-bottom: -28rem;
  77. }
  78. }
  79. </style>