nous-rejoindre.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <LayoutNavigation />
  3. <div v-if="shouldShowStickyMenu" id="sticky-menu">
  4. <CommonStickyMenu
  5. :shouldShowStickyMenu="shouldShowStickyMenu"
  6. :squaresData="squaresData"
  7. />
  8. </div>
  9. <JoinUsBanner />
  10. <JoinUsMissions />
  11. <LayoutFooter id="layout-footer" />
  12. </template>
  13. <script setup>
  14. import { ref, onMounted } from "vue";
  15. import { useRouter } from 'vue-router';
  16. const router = useRouter();
  17. const shouldShowStickyMenu = ref(true);
  18. const squaresData = [
  19. {
  20. id: 1,
  21. bgColor: "green-square",
  22. iconClass: "fa-regular fa-comments icon",
  23. text: "Nous contacter",
  24. url: "/nous-contacter",
  25. },
  26. {
  27. id: 4,
  28. bgColor: "darkblue-square",
  29. iconClass: "fa-solid fa-phone icon",
  30. text: "Nous Appeler"
  31. },
  32. ];
  33. onMounted(() => {
  34. const stickyMenu = document.getElementById("sticky-menu");
  35. const footer = document.getElementById("layout-footer");
  36. const observer = new IntersectionObserver(
  37. ([entry]) => {
  38. shouldShowStickyMenu.value = !entry.isIntersecting;
  39. },
  40. {
  41. root: null,
  42. threshold: 0,
  43. }
  44. );
  45. observer.observe(footer);
  46. });
  47. </script>
  48. <style scoped>
  49. #sticky-menu {
  50. position: sticky;
  51. top: 20rem;
  52. z-index: 1;
  53. margin-bottom: -32rem;
  54. float: right;
  55. }
  56. @media (max-width: 1800px) {
  57. #sticky-menu {
  58. top: 16rem;
  59. margin-bottom: -28rem;
  60. }
  61. }
  62. </style>