From 3a28bb268f1c5e09abd2475dead1a2fede84a57c Mon Sep 17 00:00:00 2001
From: Michael Bauer <michael-bauer@posteo.de>
Date: Fri, 19 Apr 2024 19:36:55 +0200
Subject: [PATCH] Introduce top-margin prop - document the magic number

---
 .../frontend/components/coursebook/Coursebook.vue   | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
index 42873982e..50dd14a3c 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
@@ -23,7 +23,7 @@
         v-intersect="{
             handler: intersectHandler(date, first, last),
             options: {
-              rootMargin: '-165px 0px 0px 0px',
+              rootMargin: '-' + topMargin + 'px 0px 0px 0px',
               threshold: [0, 1],
             },
           }"
@@ -102,6 +102,14 @@ export default {
       required: false,
       default: null,
     },
+    /**
+     * Margin from coursebook list to top of viewport in pixels
+     */
+    topMargin: {
+      type: Number,
+      required: false,
+      default: 165,
+    },
   },
   data() {
     return {
@@ -258,8 +266,7 @@ export default {
         const entry = entries[0];
         if (entry.isIntersecting) {
 
-          // TODO: Make 165 a var?
-          if ((entry.boundingClientRect.top <= 165) || first) {
+          if ((entry.boundingClientRect.top <= this.topMargin) || first) {
             console.log('@', date.toISODate());
             this.setDate(date.toISODate());
           }
-- 
GitLab