11import { DateTime } from "luxon" ;
22import React , { useState } from "react" ;
3- import { useParams } from "react-router-dom" ;
3+ import { Routes , Route , Link , useParams } from "react-router-dom" ;
44import { DEFAULT_LONG_LOCALE_OPTIONS } from "../../utils/datetime" ;
55import { useCourseSections } from "../../utils/queries/courses" ;
66import { Course as CourseType } from "../../utils/types" ;
@@ -31,7 +31,12 @@ export interface CourseProps {
3131 priorityEnrollment : DateTime | undefined ;
3232}
3333
34- const Course = ( { courses, priorityEnrollment, enrollmentTimes } : CourseProps ) => {
34+ const CourseHeader = ( {
35+ courses,
36+ priorityEnrollment,
37+ enrollmentTimes,
38+ display
39+ } : CourseProps & { display : "sections" | "bios" } ) => {
3540 /**
3641 * Course id from the URL.
3742 */
@@ -47,8 +52,6 @@ const Course = ({ courses, priorityEnrollment, enrollmentTimes }: CourseProps) =
4752 refetch : reloadSections
4853 } = useCourseSections ( courseId ? parseInt ( courseId ) : undefined ) ;
4954
50- const [ display , setDisplay ] = useState < "sections" | "bios" > ( "sections" ) ;
51-
5255 if ( courses === null ) {
5356 // if courses not loaded, parent component deals with loading spinner
5457 return null ;
@@ -75,9 +78,9 @@ const Course = ({ courses, priorityEnrollment, enrollmentTimes }: CourseProps) =
7578 < div id = "course-section-selector" >
7679 < div id = "course-header" >
7780 < h2 className = "course-title" > { course . name } </ h2 >
78- < button className = "primary-outline-btn" onClick = { ( ) => setDisplay ( display == "sections" ? "bios" : "sections" ) } >
81+ < Link className = "primary-outline-btn" to = { `/courses/ ${ courseId } ${ display == "sections" ? "/ bios" : "" } ` } >
7982 View { display == "sections" ? "Bios" : "Sections" }
80- </ button >
83+ </ Link >
8184 </ div >
8285 { display == "sections" ? (
8386 < CourseSections
@@ -94,4 +97,13 @@ const Course = ({ courses, priorityEnrollment, enrollmentTimes }: CourseProps) =
9497 </ div >
9598 ) ;
9699} ;
100+
101+ const Course = ( props : CourseProps ) => {
102+ return (
103+ < Routes >
104+ < Route path = "/bios" element = { < CourseHeader { ...props } display = "bios" /> } />
105+ < Route index element = { < CourseHeader { ...props } display = "sections" /> } />
106+ </ Routes >
107+ ) ;
108+ } ;
97109export default Course ;
0 commit comments