"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 { detailDataFAQ, detailDataFeedback, getUserRoles, postCategory, postDataFAQ, postDataFeedback, } 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"; import { id } from "date-fns/locale"; import { htmlToString } from "@/utils/globals"; const FormSchema = z.object({ 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 EditFeedbackModal(props: { id: string; isDetail: boolean; data: { id: number; question: string; isInternational: boolean; isActive: boolean; }; }) { const { id, isDetail, data } = props; const router = useRouter(); const { toast } = useToast(); const [isOpen, setIsOpen] = useState(false); const form = useForm>({ resolver: zodResolver(FormSchema), }); useEffect(() => { initState(); }, [id]); const initState = async () => { form.setValue("question", htmlToString(data.question)); form.setValue( "publishTo", data.isInternational ? "international" : "wilayah" ); }; const onSubmit = async (data: z.infer) => { const request = { id: Number(id), question: data.question, isInternational: data.publishTo === "wilayah" ? false : true, isActive: true, }; const response = await postDataFeedback(request); close(); if (response?.error) { toast({ title: stringify(response.message), variant: "destructive" }); return false; } toast({ title: "Succes", description: "Feedback berhasil diubah", }); router.push("/admin/settings/feedback?dataChange=true"); setIsOpen(false); }; return ( {isDetail ? "Detail" : "Edit"} {isDetail ? "Detail" : "Edit"} Feedback
( 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