);
-}
+};
-export default RatingComponent;
\ No newline at end of file
+export default RatingComponent;
diff --git a/my-app/src/views/Components/StarComponent.jsx b/my-app/src/views/Components/StarComponent.jsx
index 6ee2acfa..bf4b5918 100644
--- a/my-app/src/views/Components/StarComponent.jsx
+++ b/my-app/src/views/Components/StarComponent.jsx
@@ -15,12 +15,12 @@ const StarComponent = ({ index, rating, onRatingChange, onHover, readOnly = fals
return (
!readOnly && onHover && onHover(index + 1)}
onMouseLeave={() => !readOnly && onHover && onHover(0)}
>
{!readOnly && (
<>
@@ -38,4 +38,4 @@ const StarComponent = ({ index, rating, onRatingChange, onHover, readOnly = fals
);
};
-export default StarComponent;
\ No newline at end of file
+export default StarComponent;
diff --git a/my-app/src/views/ReviewView.jsx b/my-app/src/views/ReviewView.jsx
index b8203c61..6ae5d42d 100644
--- a/my-app/src/views/ReviewView.jsx
+++ b/my-app/src/views/ReviewView.jsx
@@ -1,39 +1,157 @@
-import React from "react";
+import React, { useState, useRef, useEffect } from "react";
+
+
import RatingComponent from "../views/Components/RatingComponent.jsx";
export function ReviewView(props) {
const grades = ["🅰️", "B", "C", "D", "E", "F"];
const {formData, setFormData} = props;
+ const [showGradeOptions, setShowGradeOptions] = useState(false);
+ const [showRecommendOptions, setShowRecommendOptions] = useState(false);
+ const gradeRef = useRef(null);
+ const recommendRef = useRef(null);
+
+
+ useEffect(() => {
+ function handleClickOutside(event) {
+ if (gradeRef.current && !gradeRef.current.contains(event.target)) {
+ setShowGradeOptions(false);
+ }
+ if (recommendRef.current && !recommendRef.current.contains(event.target)) {
+ setShowRecommendOptions(false);
+ }
+ }
+
+ document.addEventListener("mousedown", handleClickOutside);
+ return () => {
+ document.removeEventListener("mousedown", handleClickOutside);
+ };
+ }, []);
+
return (
-
-
- Overall rating
- setFormData({ ...formData, overallRating: val })}
- />
-
-
+
+ {/* Overall Rating */}
+
+
Overall rating
+
setFormData({ ...formData, overallRating: val })}
+ />
+
+
+ {/* Difficulty Rating */}
+
+
Difficulty rating
+
setFormData({ ...formData, difficultyRating: val })}
+ />
+
+
+ {/* Professor Rating */}
+
+
Professor rating
+
setFormData({ ...formData, professorRating: val })}
+ />
+
+
+ {/* Grade Section */}
+
+
+
Grade:
+
+
setShowGradeOptions((prev) => !prev)}
+ >
+ {formData.grade || "Select"}
+
+ {showGradeOptions && (
+
+ {grades.map((grade) => (
+
+ ))}
+
+ )}
+
+
+
+
+ {/* Recommend Section */}
+
+
+
Recommend?
+
+
setShowRecommendOptions((prev) => !prev)}
+ >
+ {formData.recommend === null ? "Select" : formData.recommend ? "Yes" : "No"}
+
+ {showRecommendOptions && (
+
+
+
+
+ )}
+
+
+
+
+
-
-
- Difficulty rating
- setFormData({ ...formData, difficultyRating: val })}
- />
-
-
-
+ {/*
Professor Name & Rating
-
+ */}
-
+ {/*
Professor Rating
setFormData({ ...formData, professorRating: val })}
/>
-
-
-
-
Grade
-
- {grades.map((grade) => (
-
- ))}
-
-
+
*/}
-
-
- Would you recommend this course?
-
-
-
-
-
+
-
+
@@ -146,6 +221,8 @@ export function ReviewView(props) {
Overall Rating