diff --git a/src/components/TimetableEditMenu.tsx b/src/components/TimetableEditMenu.tsx index d5efa2a..efaf82e 100644 --- a/src/components/TimetableEditMenu.tsx +++ b/src/components/TimetableEditMenu.tsx @@ -462,7 +462,7 @@ const TimetableEditMenu = ({ }`} > {course.clashing && ( -
+
Clashing with{" "} {course.clashing diff --git a/src/pages/edit.tsx b/src/pages/edit.tsx index 2a1c3e5..d758b19 100644 --- a/src/pages/edit.tsx +++ b/src/pages/edit.tsx @@ -8,6 +8,7 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; +import { useDebounce } from "usehooks-ts"; import { LogOut, AlertOctagon, @@ -153,14 +154,15 @@ const Edit = () => { const [isVertical, setIsVertical] = useState(false); const [searchTerm, setSearchTerm] = useState(""); + const debouncedSearchTerm = useDebounce(searchTerm, 500); const courseSearchResults = useMemo( () => - (searchTerm === "" + (debouncedSearchTerm === "" ? courseDetails : courseDetails.filter((e) => (e.code + ": " + e.name) .toLowerCase() - .includes(searchTerm.toLowerCase()) + .includes(debouncedSearchTerm.toLowerCase()) ) ).map((e) => { const withClash = e as { @@ -187,7 +189,7 @@ const Edit = () => { withClash.clashing = clashes.length === 0 ? null : clashes; return withClash; }), - [courseDetails, searchTerm, timetableDetails.examTimes] + [courseDetails, debouncedSearchTerm, timetableDetails.examTimes] ); const addedCourses = useMemo( () =>