opentalent_manager.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <LayoutNavigation />
  3. <LogicielsManagerBanner />
  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. <LogicielsManagerPresentation />
  12. <LogicielsManagerAvantages />
  13. <LogicielsManagerFonctionnalites />
  14. <LogicielsManagerPyramide />
  15. <LogicielsManagerFormation />
  16. <LogicielsManagerReviews />
  17. <LayoutFAQ />
  18. <LayoutFooterSolutionsFooter/>
  19. <LayoutFooter id="layout-footer" />
  20. </template>
  21. <script setup>
  22. import { ref, onMounted } from "vue";
  23. const menus = ref([
  24. { id: "Presentation", label: "Présentation", element: null },
  25. { id: "Avantages", label: "Avantages", element: null },
  26. { id: "Fonctionnalites", label: "Fonctionnalités", element: null },
  27. { id: "Formations", label: "Formations", element: null },
  28. { id: "Temoignages", label: "Témoignages", element: null },
  29. ]).value;
  30. const shouldShowStickyMenu = ref(true);
  31. const squaresData = [
  32. {
  33. id: 1,
  34. bgColor: "red-square",
  35. iconClass: "fa-regular fa-comments icon",
  36. text: "Nous contacter",
  37. url: "/nous-contacter",
  38. },
  39. {
  40. id: 2,
  41. bgColor: "red-square",
  42. iconClass: "fa-brands fa-readme icon",
  43. text: "Brochure",
  44. url: "https://www.opentalent.fr/fileadmin/user_upload/Manager.pdf",
  45. },
  46. {
  47. id: 4,
  48. bgColor: "darkblue-square",
  49. iconClass: "fa-solid fa-phone icon",
  50. text: "Nous appeler",
  51. },
  52. ];
  53. onMounted(() => {
  54. const stickyMenu = document.getElementById("sticky-menu");
  55. const footer = document.getElementById("layout-footer");
  56. const observer = new IntersectionObserver(
  57. ([entry]) => {
  58. shouldShowStickyMenu.value = !entry.isIntersecting;
  59. },
  60. {
  61. root: null,
  62. threshold: 0,
  63. }
  64. );
  65. observer.observe(footer);
  66. });
  67. </script>
  68. <style scoped>
  69. #sticky-menu {
  70. position: sticky;
  71. top: 25rem;
  72. z-index: 10;
  73. margin-bottom: -35rem;
  74. float: right;
  75. }
  76. @media (max-width: 1800px) {
  77. #sticky-menu {
  78. top: 16rem;
  79. margin-bottom: -28rem;
  80. }
  81. }
  82. </style>