"use client"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { useRouter } from "@/i18n/routing"; import { Input } from "@/components/ui/input"; import { Checkbox } from "@/components/ui/checkbox"; import { getUserRoles, postCategory, postDataFAQ, } from "@/service/settings/settings"; import { Fragment, useEffect, useState } from "react"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { Icon } from "@iconify/react/dist/iconify.js"; import { Textarea } from "@/components/ui/textarea"; import { close, error, loading } from "@/config/swal"; import { useToast } from "@/components/ui/use-toast"; import { stringify } from "querystring"; import { useDropzone } from "react-dropzone"; import { CloudUpload } from "lucide-react"; import Image from "next/image"; import { Upload } from "tus-js-client"; const FormSchema = z.object({ answer: z.string({ required_error: "Required", }), question: z.string({ required_error: "Required", }), publishTo: z.string({ required_error: "Required", }), // publishTo: z.array(z.string()).refine((value) => value.some((item) => item), { // message: "Required", // }), }); const publishToList = [ { id: "mabes", name: "Nasional", }, { id: "polda", name: "Polda", }, { id: "satker", name: "Satker", }, { id: "internasional", name: "Internasional", }, ]; export default function CreateFAQModal() { const router = useRouter(); const { toast } = useToast(); const [isOpen, setIsOpen] = useState(false); const [satkerData, setSatkerData] = useState([]); const [unitData, setUnitData] = useState([]); const form = useForm>({ resolver: zodResolver(FormSchema), defaultValues: { publishTo: "wilayah" }, }); const target = form.watch("publishTo"); const isAllTargetChecked = publishToList.every((item) => target?.includes(item.id) ); const onSubmit = async (data: z.infer) => { const request = { question: data.question, answer: data.answer, isInternational: data.publishTo === "wilayah" ? false : true, isActive: true, }; const response = await postDataFAQ(request); close(); if (response?.error) { toast({ title: stringify(response.message), variant: "destructive" }); return false; } toast({ title: "Succes", description: "FAQ berhasil dibuat", }); router.push("/admin/settings/faq?dataChange=true"); setIsOpen(false); }; return ( Tambah FAQ
( Wilayah Publish Wilayah Internasional )} /> {/* ( Wilayah Publish
{ if (checked) { form.setValue( "publishTo", publishToList.map((item) => item.id) ); } else { form.setValue("publishTo", []); } }} />
{publishToList.map((item) => ( <> { return (
{ return checked ? field.onChange([ ...field.value, item.id, ]) : field.onChange( field.value?.filter( (value) => value !== item.id ) ); }} /> {item.name}{" "}
); }} /> {item.id === "polda" && form.getValues("publishTo")?.includes(item.id) && ( setUnitData(data)} /> )} {item.id === "satker" && form.getValues("publishTo")?.includes(item.id) && ( setSatkerData(data)} /> )} ))}
)} /> */} ( Pertanyaan