diff --git a/src/components/MenuBox.jsx b/src/components/MenuBox.jsx index c8b200f..137f266 100644 --- a/src/components/MenuBox.jsx +++ b/src/components/MenuBox.jsx @@ -48,52 +48,61 @@ import { motion } from "framer-motion"; import { useMemo } from "react"; import { useNavigate } from "react-router"; import { DiagonalRightArrowIcon, RightArrowIcon } from "../assets/icons"; -import { useDepName, useDepartments } from "../hooks"; +import { useDepName, useDepartments, useScheduleData } from "../hooks"; import i18n from "../i18n"; export default function MenuBox({ category }) { - const { title, iconSVG, route, span, isExternal, requireSelection,englishRoute } = - category; + const { title, iconSVG, route, span, isExternal, requireSelection, englishRoute } = + category; const { depName, depCode } = useDepName(); const departments = useDepartments(); const toast = useToast(); const isDisabled = - requireSelection && (!depCode || !departments.some((dep) => dep.code === depCode)); + requireSelection && (!depCode || !departments.some((dep) => dep.code === depCode)); const rotateIn = useMemo( - () => ({ - initial: { - rotateX: "180deg", - opacity: 0, + () => ({ + initial: { + rotateX: "180deg", + opacity: 0, + }, + inView: { + rotateX: "0deg", + opacity: isDisabled ? 0.6 : 1, + transition: { + duration: 0.45, + ease: "easeIn", }, - inView: { - rotateX: "0deg", - opacity: isDisabled ? 0.6 : 1, - transition: { - duration: 0.45, - ease: "easeIn", - }, - }, - }), - [isDisabled] + }, + }), + [isDisabled] ); + const scheduleData = useScheduleData(depCode); const navigate = useNavigate(); const handleNavigation = () => { + if (route === "/semesterschedule" && scheduleData?.semester) { + window.open(scheduleData.semester, "_blank"); + return; + } + if (route === "/examschedule" && scheduleData?.exam) { + window.open(scheduleData.exam, "_blank"); + return; + } - if(i18n.language === 'en' && englishRoute){ + if (i18n.language === 'en' && englishRoute) { isExternal - ? requireSelection - ? window.location.replace(englishRoute, "_blank") - : window.open(englishRoute, "_blank") - : navigate(englishRoute); - }else{ + ? requireSelection + ? window.location.replace(englishRoute, "_blank") + : window.open(englishRoute, "_blank") + : navigate(englishRoute); + } else { isExternal - ? requireSelection - ? window.location.replace(route, "_blank") - : window.open(route, "_blank") - : navigate(route); + ? requireSelection + ? window.location.replace(route, "_blank") + : window.open(route, "_blank") + : navigate(route); } }; @@ -118,59 +127,59 @@ export default function MenuBox({ category }) { return ( - - - - {iconSVG} - - - {isExternal ? : } - - - - {title} - - + + + + {iconSVG} + + + {isExternal ? : } + + + + {title} + + ); }