From 1397343db909673f32ca0ec3f9410110bc6e325b Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 11 Sep 2024 12:22:54 -0600 Subject: [PATCH] inproper submit... --- nextjs/src/app/NewCourseForm.tsx | 20 ++++++++- .../settings/DaysOfWeekSelector.tsx | 44 ------------------- .../settings/DaysOfWeekSettings.tsx | 31 +++++++++++++ .../app/course/[courseName]/settings/page.tsx | 4 +- nextjs/src/components/form/DayOfWeekInput.tsx | 31 +++++++++++++ nextjs/src/components/form/SelectInput.tsx | 1 + 6 files changed, 84 insertions(+), 47 deletions(-) delete mode 100644 nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx create mode 100644 nextjs/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx create mode 100644 nextjs/src/components/form/DayOfWeekInput.tsx diff --git a/nextjs/src/app/NewCourseForm.tsx b/nextjs/src/app/NewCourseForm.tsx index 05acf75..1059512 100644 --- a/nextjs/src/app/NewCourseForm.tsx +++ b/nextjs/src/app/NewCourseForm.tsx @@ -1,6 +1,8 @@ +import { DayOfWeekInput } from "@/components/form/DayOfWeekInput"; import SelectInput from "@/components/form/SelectInput"; import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks"; import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel"; +import { DayOfWeek } from "@/models/local/localCourse"; import React, { useState } from "react"; export default function NewCourseForm() { @@ -9,10 +11,10 @@ export default function NewCourseForm() { const [selectedTerm, setSelectedTerm] = useState< CanvasEnrollmentTermModel | undefined >(); + const [selectedDaysOfWeek, setSelectedDaysOfWeek] = useState([]); return (
- form is here t.name} /> + {selectedTerm && ( +
+ { + setSelectedDaysOfWeek((oldDays) => { + const hasDay = oldDays.includes(day); + + return hasDay + ? oldDays.filter((d) => d !== day) + : [day, ...oldDays]; + }); + }} + /> +
+ )} ); } diff --git a/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx b/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx deleted file mode 100644 index a1299ba..0000000 --- a/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx +++ /dev/null @@ -1,44 +0,0 @@ -"use client"; -import { Spinner } from "@/components/Spinner"; -import { - useLocalCourseSettingsQuery, - useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; -import { DayOfWeek } from "@/models/local/localCourse"; -import React from "react"; - -export default function DaysOfWeekSelector() { - const { data: settings } = useLocalCourseSettingsQuery(); - const updateSettings = useUpdateLocalCourseSettingsMutation(); - - return ( - <> -
- {Object.values(DayOfWeek).map((day) => { - const hasDay = settings.daysOfWeek.includes(day); - return ( - - ); - })} -
- {updateSettings.isPending && } - - ); -} diff --git a/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx b/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx new file mode 100644 index 0000000..06d4ce0 --- /dev/null +++ b/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx @@ -0,0 +1,31 @@ +"use client"; +import { DayOfWeekInput } from "@/components/form/DayOfWeekInput"; +import { Spinner } from "@/components/Spinner"; +import { + useLocalCourseSettingsQuery, + useUpdateLocalCourseSettingsMutation, +} from "@/hooks/localCourse/localCoursesHooks"; +import React from "react"; + +export default function DaysOfWeekSettings() { + const { data: settings } = useLocalCourseSettingsQuery(); + const updateSettings = useUpdateLocalCourseSettingsMutation(); + + return ( + <> + { + const hasDay = settings.daysOfWeek.includes(day); + updateSettings.mutate({ + ...settings, + daysOfWeek: hasDay + ? settings.daysOfWeek.filter((d) => d !== day) + : [day, ...settings.daysOfWeek], + }); + }} + /> + {updateSettings.isPending && } + + ); +} diff --git a/nextjs/src/app/course/[courseName]/settings/page.tsx b/nextjs/src/app/course/[courseName]/settings/page.tsx index 6546a34..9feb7d8 100644 --- a/nextjs/src/app/course/[courseName]/settings/page.tsx +++ b/nextjs/src/app/course/[courseName]/settings/page.tsx @@ -3,7 +3,7 @@ import { useCourseContext } from "../context/courseContext"; import StartAndEndDate from "./StartAndEndDate"; import SettingsHeader from "./SettingsHeader"; import DefaultDueTime from "./DefaultDueTime"; -import DaysOfWeekSelector from "./DaysOfWeekSelector"; +import DaysOfWeekSettings from "./DaysOfWeekSettings"; import AssignmentGroupManagement from "./AssignmentGroupManagement"; export default function page() { @@ -11,7 +11,7 @@ export default function page() {
- + diff --git a/nextjs/src/components/form/DayOfWeekInput.tsx b/nextjs/src/components/form/DayOfWeekInput.tsx new file mode 100644 index 0000000..016818a --- /dev/null +++ b/nextjs/src/components/form/DayOfWeekInput.tsx @@ -0,0 +1,31 @@ +import { DayOfWeek } from "@/models/local/localCourse"; + +export function DayOfWeekInput({ + selectedDays, + updateSettings, +}: { + selectedDays: DayOfWeek[]; + updateSettings: (day: DayOfWeek) => void; +}) { + return ( +
+ {Object.values(DayOfWeek).map((day) => { + const hasDay = selectedDays.includes(day); + return ( + + ); + })} +
+ ); +} diff --git a/nextjs/src/components/form/SelectInput.tsx b/nextjs/src/components/form/SelectInput.tsx index 96fb88c..a3beabf 100644 --- a/nextjs/src/components/form/SelectInput.tsx +++ b/nextjs/src/components/form/SelectInput.tsx @@ -24,6 +24,7 @@ export default function SelectInput({ setValue(option); }} > + {options.map((o) => ( ))}