"use client"; import React, { useEffect, useRef, useState } from "react"; import { useForm, Controller } from "react-hook-form"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Card } from "@/components/ui/card"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useParams, useRouter } from "next/navigation"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { createTask, createTaskTa, getTask, getUserLevelForAssignments, getUserLevelForExpert, } from "@/service/task"; import { useTranslations } from "next-intl"; import dynamic from "next/dynamic"; import "react-time-picker/dist/TimePicker.css"; import "react-clock/dist/Clock.css"; import { Link } from "@/i18n/routing"; const taskSchema = z.object({ title: z.string().min(1, { message: "Judul diperlukan" }), url: z.string().min(2, { message: "Narasi Penugasan harus lebih dari 2 karakter.", }), assign: z.string().min(1, { message: "Judul diperlukan" }), }); interface FileWithPreview extends File { preview: string; } export type taskDetail = { id: number; title: string; fileTypeOutput: string; assignedToTopLevel: string; url: string; }; const CustomEditor = dynamic( () => { return import("@/components/editor/custom-editor"); }, { ssr: false } ); export default function FormMediaOnline() { const MySwal = withReactContent(Swal); const router = useRouter(); const editor = useRef(null); type TaskSchema = z.infer; const { id } = useParams() as { id: string }; console.log(id); const [taskType, setTaskType] = useState("atensi-khusus"); const [broadcastType, setBroadcastType] = useState(""); const [type, setType] = useState("1"); const [selectedTarget, setSelectedTarget] = useState("3,4"); const [detail, setDetail] = useState(); const [listExpert, setListExpert] = useState([]); const [checkedLevels, setCheckedLevels] = useState>(new Set()); const [expandedPolda, setExpandedPolda] = useState([{}]); const [isLoading, setIsLoading] = useState(false); const [audioFile, setAudioFile] = useState(null); const [isRecording, setIsRecording] = useState(false); const [timer, setTimer] = useState(120); const t = useTranslations("Form"); const { register, control, setValue, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(taskSchema), mode: "all", }); // }; const save = async (data: TaskSchema) => { const requestData: { id?: number; title: string; assignedToUsers: any; url: any; } = { ...data, assignedToUsers: data.assign, url: data.url, title: data.title, }; const response = await createTaskTa(requestData); console.log("Form Data Submitted:", requestData); console.log("response", response); const id = response?.data?.data.id; }; const onSubmit = (data: TaskSchema) => { MySwal.fire({ title: "Simpan Data", text: "Apakah Anda yakin ingin menyimpan data ini?", icon: "warning", showCancelButton: true, cancelButtonColor: "#d33", confirmButtonColor: "#3085d6", confirmButtonText: "Simpan", }).then((result) => { if (result.isConfirmed) { save(data); } }); }; const successSubmit = (redirect: string) => { MySwal.fire({ title: "Sukses", text: "Data berhasil disimpan.", icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", }).then(() => { router.push(redirect); }); }; return (

{t("data-media", { defaultValue: "Data Media" })}

{t("form-media", { defaultValue: "Form Media" })}

{/* Input Title */}
( )} /> {errors.title?.message && (

{errors.title.message}

)}
( )} /> {errors.title?.message && (

{errors.title.message}

)}
); }