diff --git a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx index 1eec857..6185624 100644 --- a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx +++ b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx @@ -15,6 +15,9 @@ import { import { Spinner } from "@/components/Spinner"; import { baseCanvasUrl, canvasApi } from "@/services/canvas/canvasServiceUtils"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { getCourseUrl } from "@/services/urlUtils"; +import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; +import Link from "next/link"; export default function EditQuiz({ moduleName, @@ -82,39 +85,48 @@ function QuizButtons({ const { data: canvasQuizzes } = useCanvasQuizzesQuery(); const { data: quiz } = useQuizQuery(moduleName, quizName); const { data: settings } = useLocalCourseSettingsQuery(); + const { courseName } = useCourseContext(); const addToCanvas = useAddQuizToCanvasMutation(); const deleteFromCanvas = useDeleteQuizFromCanvasMutation(); const quizInCanvas = canvasQuizzes.find((c) => c.title === quizName); return ( -
- {!quizInCanvas && ( - - )} - {quizInCanvas && ( - - View in Canvas - - )} - {quizInCanvas && ( - - )} - {(addToCanvas.isPending || deleteFromCanvas.isPending) && } +
+ {(addToCanvas.isPending || deleteFromCanvas.isPending) && } + {quizInCanvas && !quizInCanvas.published && ( +
Not Published
+ )} + {!quizInCanvas && ( + + )} + {quizInCanvas && ( + + View in Canvas + + )} + {quizInCanvas && ( + + )} + + + Go Back +
); } diff --git a/nextjs/src/components/Spinner.tsx b/nextjs/src/components/Spinner.tsx index b40fa5e..825fa7e 100644 --- a/nextjs/src/components/Spinner.tsx +++ b/nextjs/src/components/Spinner.tsx @@ -3,8 +3,8 @@ import "./spinner.css" export const Spinner = () => { return ( -
- +
+
); }; diff --git a/nextjs/src/components/spinner.css b/nextjs/src/components/spinner.css index c0d6049..5a45034 100644 --- a/nextjs/src/components/spinner.css +++ b/nextjs/src/components/spinner.css @@ -1,17 +1,29 @@ +:root { + /* --spinner-size-1: 48px; + --spinner-size-2: 32px; */ + --spinner-size-1: 33px; + --spinner-size-2: 22px; + /* --spinner-size-3: 40px; */ + + --spinner-color-1: #305576; + --spinner-color-2: #714199; +} + .loader { - width: 48px; - height: 48px; + width: var(--spinner-size-1); + height: var(--spinner-size-1); border-radius: 50%; display: inline-block; position: relative; border: 3px solid; - border-color: #6c757d #6c757d transparent transparent; + border-color: var(--spinner-color-1) var(--spinner-color-1) transparent + transparent; box-sizing: border-box; animation: rotation 2s linear infinite; } .loader::after, .loader::before { - content: ''; + content: ""; box-sizing: border-box; position: absolute; left: 0; @@ -20,23 +32,25 @@ bottom: 0; margin: auto; border: 3px solid; - border-color: transparent transparent #092565 #092565; - width: 40px; - height: 40px; + border-color: transparent transparent var(--spinner-color-2) + var(--spinner-color-2); + /* width: var(--spinner-size-3); + height: var(--spinner-size-3); */ border-radius: 50%; box-sizing: border-box; animation: rotationBack 1s linear infinite; transform-origin: center center; } -/* #092565 */ +/* var(--spinner-color-2) */ /* #3a0647 */ .loader::before { - width: 32px; - height: 32px; - border-color: #6c757d #6c757d transparent transparent; + width: var(--spinner-size-2); + height: var(--spinner-size-2); + border-color: var(--spinner-color-1) var(--spinner-color-1) transparent + transparent; animation: rotation 3s linear infinite; } - + @keyframes rotation { 0% { transform: rotate(0deg); @@ -44,7 +58,7 @@ 100% { transform: rotate(360deg); } -} +} @keyframes rotationBack { 0% { transform: rotate(0deg); @@ -53,4 +67,3 @@ transform: rotate(-360deg); } } - \ No newline at end of file