From bcc7c7c7eb44b454f932830cfade44d47941a558 Mon Sep 17 00:00:00 2001 From: Sami Al Saati Date: Thu, 10 Apr 2025 14:59:57 +0200 Subject: [PATCH] fixed dropdown --- .../src/views/Components/CoursePagePopup.jsx | 210 +++++++++--------- .../views/Components/FavouriteDropdown.jsx | 9 +- 2 files changed, 104 insertions(+), 115 deletions(-) diff --git a/my-app/src/views/Components/CoursePagePopup.jsx b/my-app/src/views/Components/CoursePagePopup.jsx index ce8b7e54..f64ee474 100644 --- a/my-app/src/views/Components/CoursePagePopup.jsx +++ b/my-app/src/views/Components/CoursePagePopup.jsx @@ -1,120 +1,110 @@ import React, { useEffect, useRef } from 'react'; function CoursePagePopup({ - favouriteCourses, - addFavourite, - removeFavourite, - handleFavouriteClick, - isOpen, - onClose, - course, - prerequisiteTree -}) { - const treeRef = useRef(null); + favouriteCourses, + handleFavouriteClick, + isOpen, + onClose, + course, + prerequisiteTree, + reviewPresenter, + }) { + const treeRef = useRef(null); - useEffect(() => { - const handleKeyDown = (event) => { - if (event.key === 'Escape') { - onClose(); - } - }; - - if (isOpen) { - window.addEventListener("keydown", handleKeyDown); - } - - return () => { - window.removeEventListener("keydown", handleKeyDown); - }; - }, [isOpen, onClose]); - - const handleTreeClick = () => { - if (treeRef.current) { - treeRef.current.focus(); // gives it focus - } - }; + useEffect(() => { + const handleKeyDown = (event) => { + if (event.key === 'Escape') { + onClose(); + } + }; + if (isOpen) { + window.addEventListener('keydown', handleKeyDown); + } + return () => { + window.removeEventListener('keydown', handleKeyDown); + }; + }, [isOpen, onClose]); - if (!isOpen || !course) return null; // Don't render if not open or course not selected - - return ( -
-
e.stopPropagation()} - > -
-
- {/* Course Title Section */} -
-

- {course.code} - {course.name} - ({course.credits} Credits) -

-
-
-
- -
- - {/* Description Section */} -
-

Course Description

-
-
-
- - {/* Prerequisite Graph Tree Section */} -
+ const handleTreeClick = () => { + if (treeRef.current) { + treeRef.current.focus(); + } + }; -

- Prerequisite Graph Tree -

-
-
- {prerequisiteTree} -
-
+ if (!isOpen || !course) return null; - {/* Reviews Section */} -
-

Reviews

-
-

- Here would be some reviews of the course... -

+ return ( +
+
e.stopPropagation()} + > +
+
+ {/* Course Title Section */} +
+

+ {course.code} - {course.name} + + ({course.credits} Credits) + +

+
+
+
+ +
+ {/* Description Section */} +
+

Course Description

+
+
+
+ {/* Prerequisite Graph Tree Section */} +
+

Prerequisite Graph Tree

+
+
+ {prerequisiteTree} +
+
+ {/* Reviews Section (optional) */} + {reviewPresenter && ( +
+

Reviews

+
+ {reviewPresenter} +
+ )} +
+
+
-
- -
-
- ); + ); +} -export default CoursePagePopup; +export default CoursePagePopup; \ No newline at end of file diff --git a/my-app/src/views/Components/FavouriteDropdown.jsx b/my-app/src/views/Components/FavouriteDropdown.jsx index 5bba1f55..3611620b 100644 --- a/my-app/src/views/Components/FavouriteDropdown.jsx +++ b/my-app/src/views/Components/FavouriteDropdown.jsx @@ -9,9 +9,9 @@ function FavouritesDropdown(props) { props.favouriteCourses.map(course => (
{ - console.log('Clicked:', course); // check browser console + console.log('Clicked:', course); props.setSelectedCourse(course); - props.setIsPopupOpen(true); // Ensure popup state is updated + props.setIsPopupOpen(true); }} key={course.code} className="p-2 flex justify-between items-center w-full border border-solid border-black"> @@ -19,7 +19,7 @@ function FavouritesDropdown(props) {
)} - {/* Ensure popup is conditionally rendered */} -
+
{props.isPopupOpen && props.popup}
{props.favouriteCourses.length > 0 && (