Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-07-11 12:12:40 +08:00
parent 01a2c63b06
commit 71f758fe0b
66 changed files with 3055 additions and 939 deletions
@@ -14,6 +14,7 @@ import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Textarea } from "@/components/ui/textarea";
import { Spinner } from "@/components/ui/spinner";
import { useUnsavedChangesGuard } from "@/hooks/useUnsavedChangesGuard";
const schema = z.object({
title: z.string().min(1, "Title is required."),
@@ -32,11 +33,13 @@ export default function AddUnit() {
const { createUnit, fetchCourse, course, loading } = useCourses();
const { user } = useAuth();
const { register, handleSubmit, formState: { errors } } = useForm({
const { register, handleSubmit, formState: { errors, isDirty } } = useForm({
resolver: zodResolver(schema),
defaultValues: { title: "", description: "", order: 0 },
});
const { bypassOnce, dialog: unsavedChangesDialog } = useUnsavedChangesGuard(isDirty);
useEffect(() => {
fetchCourse(courseId);
}, [courseId]);
@@ -44,6 +47,7 @@ export default function AddUnit() {
const onSubmit = async (data) => {
const result = await createUnit(courseId, { ...data, createdBy: user?.user_id });
if (!result) return;
bypassOnce();
navigate(`/admin/courses/${courseId}/units`);
};
@@ -96,6 +100,8 @@ export default function AddUnit() {
</form>
</div>
</div>
{unsavedChangesDialog}
</section>
);
}