From 2dab6406959743d56290ddb89bc9cd4a4863e7df Mon Sep 17 00:00:00 2001
From: Mathias Magnusson <mathias@magnusson.space>
Date: Thu, 14 Nov 2024 00:37:47 +0100
Subject: [PATCH] fix the scrolling issue

---
 README.md                                     |   2 +-
 package.json                                  |   2 +-
 src/components/EventCalendar/index.jsx        | 124 +++++++++---------
 src/components/Frontpage/Frontpage.module.css |   1 -
 src/components/News/News.module.css           |   1 -
 src/components/News/index.js                  |   2 +-
 6 files changed, 65 insertions(+), 67 deletions(-)

diff --git a/README.md b/README.md
index 3d4211e..6355423 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,6 @@ NOTE: when building with podman, you may need to specify `--ulimit nofile=65535:
 
 ## Running
 
-- `npm run start:dev` will start the whole universal server in development mode. HMR will be enabled on both server and client side!
+- `npm run dev` will start the whole universal server in development mode. HMR will be enabled on both server and client side!
 - `npm run build` will build a production ready server.
 - `npm start` will start the production server.
diff --git a/package.json b/package.json
index 9ac50e3..448d3ac 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "bawang",
   "scripts": {
-    "start:dev": "node bin/razzle.js start",
+    "dev": "node bin/razzle.js start",
     "build": "node bin/razzle.js build --noninteractive",
     "start": "node build/server.js"
   },
diff --git a/src/components/EventCalendar/index.jsx b/src/components/EventCalendar/index.jsx
index 4242566..2000cfc 100644
--- a/src/components/EventCalendar/index.jsx
+++ b/src/components/EventCalendar/index.jsx
@@ -50,7 +50,7 @@ function getDatesOfWeek(date) {
 
 /**
  * Get the start and end dates for a week.
- * 
+ *
  * @param {Date} date A date inside the week.
  */
 export function getWeekTimeSpan(date) {
@@ -295,7 +295,7 @@ export default function EventCalendar({ events, location, lang, onUpdateTimeSpan
   useEffect(() => {
     const newWidgetWeekGroups = getWidgetsFromEvents(events);
     setWidgetWeekGroups(newWidgetWeekGroups);
-    
+
     setSelectedEventIndex(-1);
     if (events.length === 0) return;
     if (!Array.isArray(events)) return;
@@ -370,7 +370,7 @@ export default function EventCalendar({ events, location, lang, onUpdateTimeSpan
     const monthClass = `month-${monthIndex}`;
     const monthSV = SWEDISH_MONTHS[monthIndex];
     const monthEN = ENGLISH_MONTHS[monthIndex];
-    if (i < 6 && monthIndex === weekState.dates[i+1].getMonth()) {
+    if (i < 6 && monthIndex === weekState.dates[i + 1].getMonth()) {
       currentColSpan++;
     } else {
       yearHeader.push(
@@ -391,8 +391,8 @@ export default function EventCalendar({ events, location, lang, onUpdateTimeSpan
     dateHeader.push(
       <th key={date.toUTCString()} className={cx(monthClass)}>
         <Translate>
-          <Swedish>{SWEDISH_WEEK_DAYS[i]}<br/>{date.getDate()}</Swedish>
-          <English>{ENGLISH_WEEK_DAYS[i]}<br/>{date.getDate()}</English>
+          <Swedish>{SWEDISH_WEEK_DAYS[i]}<br />{date.getDate()}</Swedish>
+          <English>{ENGLISH_WEEK_DAYS[i]}<br />{date.getDate()}</English>
         </Translate>
       </th>
     );
@@ -426,65 +426,65 @@ export default function EventCalendar({ events, location, lang, onUpdateTimeSpan
         </tbody>
       </table>
       <div className={cx("eventDisplay")}>
-      {
-        selectedEventIndex !== -1 && events[selectedEventIndex]
-        ? <NewsItem item={events[selectedEventIndex]} location={location} lang={lang}/>
-        : <div style={{ height: "100%", width: "100%", padding: "10%", display: "flex", alignItems: "center", backgroundColor: "#eeeeee" }}>
-            <p style={{ fontSize: "24px", textAlign: "center" }}>
-              <Translate>
-                <Swedish>Klicka på en händelse för att visa mer information</Swedish>
-                <English>Click on an event to display more information</English>
-              </Translate></p>
-          </div>
-      }
+        {
+          selectedEventIndex !== -1 && events[selectedEventIndex]
+            ? <NewsItem item={events[selectedEventIndex]} location={location} lang={lang} />
+            : <div style={{ height: "100%", width: "100%", padding: "10%", display: "flex", alignItems: "center", backgroundColor: "#eeeeee" }}>
+              <p style={{ fontSize: "24px", textAlign: "center" }}>
+                <Translate>
+                  <Swedish>Klicka på en händelse för att visa mer information</Swedish>
+                  <English>Click on an event to display more information</English>
+                </Translate></p>
+            </div>
+        }
       </div>
       {weekState.widgetIndex >= 0
-      && widgetWeekGroups
-      && widgetWeekGroups.length > 0
-      && widgetWeekGroups[weekState.widgetIndex].widgets.map((eventWidget, ei) => (
-        <div
-          key={`event-${ei}`}
-          className={cx("widget")}
-          style={{
-            position: "absolute",
-            top: "90px",
-            left: `${columnWidth}px`,
-          }}
-          onClick={() => setSelectedEventIndex(eventWidget.eventIndex)}
-        >
-          {eventWidget.blocks.map((block, bi) => {
-            const H = 60;
-            if (block.endMinute <= 8*H) {
-              return null;
-            }
-            if (!events[eventWidget.eventIndex]) {
-              return null;
-            }
-
-            const blockStartMinute = Math.max(8*H, block.startMinute);
-            const blockDuration = block.endMinute - blockStartMinute;
-            const top = Math.floor((blockStartMinute - 8*H) / 2);
-            const height = Math.max(30, Math.floor(blockDuration / 2)); // some events might be "too short"
-            const left = columnWidth * (block.day + block.collisions.index / block.collisions.numParts) + 2;
-            const width = columnWidth / block.collisions.numParts - 4;
-            return (
-              <div
-                key={`block-${ei}-${bi}`}
-                className={cx(`event-${eventWidget.colorID}`)}
-                style={{
-                  position: "absolute",
-                  top: `${top}px`,
-                  height: `${height}px`,
-                  left: `${left}px`,
-                  width: `${width}px`,
-                }}
-              >
-                {events[eventWidget.eventIndex].titleSwedish}
-              </div>
-            );
-          })}
-        </div>
-      ))}
+        && widgetWeekGroups
+        && widgetWeekGroups.length > 0
+        && widgetWeekGroups[weekState.widgetIndex].widgets.map((eventWidget, ei) => (
+          <div
+            key={`event-${ei}`}
+            className={cx("widget")}
+            style={{
+              position: "absolute",
+              top: "90px",
+              left: `${columnWidth}px`,
+            }}
+            onClick={() => setSelectedEventIndex(eventWidget.eventIndex)}
+          >
+            {eventWidget.blocks.map((block, bi) => {
+              const H = 60;
+              if (block.endMinute <= 8 * H) {
+                return null;
+              }
+              if (!events[eventWidget.eventIndex]) {
+                return null;
+              }
+
+              const blockStartMinute = Math.max(8 * H, block.startMinute);
+              const blockDuration = block.endMinute - blockStartMinute;
+              const top = Math.floor((blockStartMinute - 8 * H) / 2);
+              const height = Math.max(30, Math.floor(blockDuration / 2)); // some events might be "too short"
+              const left = columnWidth * (block.day + block.collisions.index / block.collisions.numParts) + 2;
+              const width = columnWidth / block.collisions.numParts - 4;
+              return (
+                <div
+                  key={`block-${ei}-${bi}`}
+                  className={cx(`event-${eventWidget.colorID}`)}
+                  style={{
+                    position: "absolute",
+                    top: `${top}px`,
+                    height: `${height}px`,
+                    left: `${left}px`,
+                    width: `${width}px`,
+                  }}
+                >
+                  {events[eventWidget.eventIndex].titleSwedish}
+                </div>
+              );
+            })}
+          </div>
+        ))}
     </div>
   );
 }
diff --git a/src/components/Frontpage/Frontpage.module.css b/src/components/Frontpage/Frontpage.module.css
index aa68657..aa307df 100644
--- a/src/components/Frontpage/Frontpage.module.css
+++ b/src/components/Frontpage/Frontpage.module.css
@@ -58,7 +58,6 @@
   top: -220px;
   box-shadow: 0 2px 5px rgba(0, 0, 0, .1);
   z-index: 21;
-  overflow: scroll;
 }
 
 .content.hero {
diff --git a/src/components/News/News.module.css b/src/components/News/News.module.css
index 97352a8..3396831 100644
--- a/src/components/News/News.module.css
+++ b/src/components/News/News.module.css
@@ -24,7 +24,6 @@
   padding: 20px 50px;
   min-height: 0;
   z-index: 21;
-  overflow: scroll;
 }
 
 .metadata {
diff --git a/src/components/News/index.js b/src/components/News/index.js
index b213f3b..356012a 100644
--- a/src/components/News/index.js
+++ b/src/components/News/index.js
@@ -70,7 +70,7 @@ export const News = ({ location, lang }) => {
       {/* Title */}
       <h2 id="sections_intro">
         <Translate>
-          <Swedish>Evenemangskalender</Swedish>
+          <Swedish>Eventkalender</Swedish>
           <English>Event Calendar</English>
         </Translate>
       </h2>